Subversion Repositories HelenOS

Rev

Rev 4345 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4345 Rev 4346
Line 45... Line 45...
45
atomic_t haltstate = {0}; /**< Halt flag */
45
atomic_t haltstate = {0}; /**< Halt flag */
46
 
46
 
47
 
47
 
48
/** Halt wrapper
48
/** Halt wrapper
49
 *
49
 *
50
 * Set halt flag and halt the cpu.
50
 * Set halt flag and halt the CPU.
51
 *
51
 *
52
 */
52
 */
53
void halt()
53
void halt()
54
{
54
{
55
#ifdef CONFIG_DEBUG
55
#ifdef CONFIG_DEBUG
56
    bool rundebugger = false;
56
    bool rundebugger = false;
57
 
57
   
58
    if (!atomic_get(&haltstate)) {
58
    if (!atomic_get(&haltstate)) {
59
        atomic_set(&haltstate, 1);
59
        atomic_set(&haltstate, 1);
60
        rundebugger = true;
60
        rundebugger = true;
61
    }
61
    }
62
#else
62
#else
63
    atomic_set(&haltstate, 1);
63
    atomic_set(&haltstate, 1);
64
#endif
64
#endif
65
 
65
   
66
    interrupts_disable();
66
    interrupts_disable();
67
   
67
   
68
#if (defined(CONFIG_DEBUG)) && (defined(CONFIG_KCONSOLE))
68
#if (defined(CONFIG_DEBUG)) && (defined(CONFIG_KCONSOLE))
69
    if (rundebugger)
69
    if ((rundebugger) && (kconsole_check_poll()))
70
        kconsole("panic", "\nLast resort kernel console ready\n", false);
70
        kconsole("panic", "\nLast resort kernel console ready.\n", false);
71
#endif
71
#endif
72
   
72
   
73
    if (CPU)
73
    if (CPU)
74
        printf("cpu%u: halted\n", CPU->id);
74
        printf("cpu%u: halted\n", CPU->id);
75
    else
75
    else
76
        printf("cpu: halted\n");
76
        printf("cpu: halted\n");
-
 
77
   
77
    cpu_halt();
78
    cpu_halt();
78
}
79
}
79
 
80
 
80
/** Convert ascii representation to unative_t
81
/** Convert ascii representation to unative_t
81
 *
82
 *