/SPARTAN/trunk/arch/ia32/src/userspace.c |
---|
41,9 → 41,9 |
*/ |
void userspace(void) |
{ |
pri_t pri; |
ipl_t ipl; |
pri = cpu_priority_high(); |
ipl = interrupts_disable(); |
__asm__ volatile ( |
/* CLNT */ |
60,7 → 60,7 |
"pushl %4\n" |
"iret" |
: |
: "i" (selector(UDATA_DES) | PL_USER), "r" (USTACK_ADDRESS+(THREAD_STACK_SIZE)), "r" (pri), "i" (selector(UTEXT_DES) | PL_USER), "i" (UTEXT_ADDRESS) |
: "i" (selector(UDATA_DES) | PL_USER), "r" (USTACK_ADDRESS+(THREAD_STACK_SIZE)), "r" (ipl), "i" (selector(UTEXT_DES) | PL_USER), "i" (UTEXT_ADDRESS) |
: "eax"); |
/* Unreachable */ |
/SPARTAN/trunk/arch/ia32/src/interrupt.c |
---|
79,7 → 79,7 |
/* |
* Called directly from the assembler code. |
* CPU is cpu_priority_high(). |
* CPU is interrupts_disable()'d. |
*/ |
void trap_dispatcher(__u8 n, __native stack[]) |
{ |
/SPARTAN/trunk/arch/ia32/src/drivers/ega.c |
---|
80,9 → 80,9 |
void ega_putchar(const char ch) |
{ |
pri_t pri; |
ipl_t ipl; |
pri = cpu_priority_high(); |
ipl = interrupts_disable(); |
spinlock_lock(&egalock); |
switch (ch) { |
101,7 → 101,7 |
ega_move_cursor(); |
spinlock_unlock(&egalock); |
cpu_priority_restore(pri); |
interrupts_restore(ipl); |
} |
void ega_move_cursor(void) |