version 1.37.6.1, 2006/04/19 02:32:45 |
version 1.39.2.1, 2006/06/19 03:44:26 |
|
|
.globl _C_LABEL(cpu) |
.globl _C_LABEL(cpu) |
.globl _C_LABEL(esym) |
.globl _C_LABEL(esym) |
.globl _C_LABEL(atdevbase) |
.globl _C_LABEL(atdevbase) |
.globl _C_LABEL(proc0paddr),_C_LABEL(PDPpaddr) |
.globl _C_LABEL(proc0uarea),_C_LABEL(PDPpaddr) |
.globl _C_LABEL(gdt) |
.globl _C_LABEL(gdt) |
#ifdef I586_CPU |
#ifdef I586_CPU |
.globl _C_LABEL(idt) |
.globl _C_LABEL(idt) |
Line 193 _C_LABEL(lapic_tpr): |
|
Line 193 _C_LABEL(lapic_tpr): |
|
_C_LABEL(cpu): .long 0 # are we 386, 386sx, or 486, |
_C_LABEL(cpu): .long 0 # are we 386, 386sx, or 486, |
# or Pentium, or.. |
# or Pentium, or.. |
_C_LABEL(atdevbase): .long 0 # location of start of iomem in virtual |
_C_LABEL(atdevbase): .long 0 # location of start of iomem in virtual |
_C_LABEL(proc0paddr): .long 0 |
_C_LABEL(proc0uarea): .long 0 |
_C_LABEL(PDPpaddr): .long 0 # paddr of PDP, for libkvm |
_C_LABEL(PDPpaddr): .long 0 # paddr of PDP, for libkvm |
|
|
.space 512 |
.space 512 |
|
|
|
|
/* Set up bootstrap stack. */ |
/* Set up bootstrap stack. */ |
leal (PROC0STACK+KERNBASE)(%esi),%eax |
leal (PROC0STACK+KERNBASE)(%esi),%eax |
movl %eax,_C_LABEL(proc0paddr) |
movl %eax,_C_LABEL(proc0uarea) |
leal (USPACE-FRAMESIZE)(%eax),%esp |
leal (KSTACK_SIZE-FRAMESIZE)(%eax),%esp |
movl %esi,PCB_CR3(%eax) # pcb->pcb_cr3 |
movl %esi,(KSTACK_SIZE+PCB_CR3)(%eax) # pcb->pcb_cr3 |
xorl %ebp,%ebp # mark end of frames |
xorl %ebp,%ebp # mark end of frames |
|
|
#if defined(MULTIBOOT) |
#if defined(MULTIBOOT) |
Line 773 NENTRY(switch_error) |
|
Line 773 NENTRY(switch_error) |
|
|
|
/* |
/* |
* void cpu_switch(struct lwp *) |
* void cpu_switch(struct lwp *) |
* Find a runnable process and switch to it. Wait if necessary. If the new |
* Find a runnable lwp and switch to it. Wait if necessary. If the new |
* process is the same as the old one, we short-circuit the context save and |
* lwp is the same as the old one, we short-circuit the context save and |
* restore. |
* restore. |
* |
* |
* Note that the stack frame layout is known to "struct switchframe" |
* Note that the stack frame layout is known to "struct switchframe" |