Changeset 36e7ee98 in mainline for generic/src/lib/func.c


Ignore:
Timestamp:
2005-12-15T21:32:12Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
cddc1639
Parents:
49b6d32
Message:

Fixed cpu halting in debug panic mode.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • generic/src/lib/func.c

    r49b6d32 r36e7ee98  
    3535#include <console/kconsole.h>
    3636
    37 __u32 volatile haltstate = 0; /**< Halt flag */
     37atomic_t haltstate = {0}; /**< Halt flag */
    3838
    3939
     
    4343 *
    4444 */
    45 void halt(void)
     45void halt()
    4646{
    47         haltstate = 1;
     47#ifdef CONFIG_DEBUG
     48        bool rundebugger;
     49
     50//      TODO test_and_set not defined on all arches
     51//      if (!test_and_set(&haltstate))
     52        if (!atomic_get(&haltstate)) {
     53                atomic_set(&haltstate, 1);
     54                rundebugger = true;
     55        }
     56#else
     57        atomic_set(haltstate, 1);
     58#endif
     59
    4860        interrupts_disable();
    4961#ifdef CONFIG_DEBUG
    50         printf("\n");
    51         kconsole("panic"); /* Run kconsole as a last resort to user */
     62        if (rundebugger) {
     63                printf("\n");
     64                kconsole("panic"); /* Run kconsole as a last resort to user */
     65        }
    5266#endif     
    53 
    5467        if (CPU)
    5568                printf("cpu%d: halted\n", CPU->id);
Note: See TracChangeset for help on using the changeset viewer.