version 1.43.4.1, 2006/10/20 19:42:24 |
version 1.43.6.1, 2006/12/10 07:16:06 |
Line 215 start: movw $0x1234,0x472 # warm boot |
|
Line 215 start: movw $0x1234,0x472 # warm boot |
|
.align 4 |
.align 4 |
.globl Multiboot_Header |
.globl Multiboot_Header |
_C_LABEL(Multiboot_Header): |
_C_LABEL(Multiboot_Header): |
#define MULTIBOOT_HEADER_FLAGS (MULTIBOOT_HEADER_WANT_MEMORY | \ |
#define MULTIBOOT_HEADER_FLAGS (MULTIBOOT_HEADER_WANT_MEMORY) |
MULTIBOOT_HEADER_HAS_ADDR) |
|
.long MULTIBOOT_HEADER_MAGIC |
.long MULTIBOOT_HEADER_MAGIC |
.long MULTIBOOT_HEADER_FLAGS |
.long MULTIBOOT_HEADER_FLAGS |
.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS) |
.long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS) |
.long RELOC(Multiboot_Header) |
|
.long RELOC(start) |
|
.long RELOC(_edata) |
|
.long RELOC(_end) + MULTIBOOT_SYMTAB_SPACE |
|
.long RELOC(start) |
|
|
|
1: |
1: |
/* Check if we are being executed by a Multiboot-compliant boot |
/* Check if we are being executed by a Multiboot-compliant boot |
Line 886 ENTRY(cpu_switch) |
|
Line 880 ENTRY(cpu_switch) |
|
sti |
sti |
idle_unlock: |
idle_unlock: |
#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) |
#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) |
pushl $_C_LABEL(sched_mutex) |
call _C_LABEL(sched_unlock_idle) |
call _C_LABEL(mutex_exit) |
|
addl $4,%esp |
|
#endif |
#endif |
/* Interrupts are okay again. */ |
/* Interrupts are okay again. */ |
pushl $IPL_NONE # spl0() |
pushl $IPL_NONE # spl0() |
|
|
movl $IPL_HIGH,CPUVAR(ILEVEL) # splhigh |
movl $IPL_HIGH,CPUVAR(ILEVEL) # splhigh |
sti |
sti |
#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) |
#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) |
pushl $_C_LABEL(sched_mutex) |
call _C_LABEL(sched_lock_idle) |
call _C_LABEL(mutex_enter) |
|
addl $4,%esp |
|
#endif |
#endif |
movl _C_LABEL(sched_whichqs),%ecx |
movl _C_LABEL(sched_whichqs),%ecx |
bsfl %ecx,%ebx |
bsfl %ecx,%ebx |
Line 1072 switch_restored: |
|
Line 1062 switch_restored: |
|
movl $1,%ebx |
movl $1,%ebx |
|
|
switch_return: |
switch_return: |
/* Donate the current CPU's sched mutex to the LWP */ |
|
movl CPUVAR(SELF),%eax |
|
addl $CPU_INFO_SCHED_MUTEX,%eax |
|
movl %eax,L_MUTEX(%edi) |
|
|
|
#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) |
#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) |
pushl $_C_LABEL(sched_mutex) |
call _C_LABEL(sched_unlock_idle) |
call _C_LABEL(mutex_exit) |
|
addl $4,%esp |
|
#endif |
#endif |
cmpl $0,CPUVAR(IPENDING) |
cmpl $0,CPUVAR(IPENDING) |
jz 3f |
jz 3f |