Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/arch/i386/i386/locore.S,v retrieving revision 1.29 retrieving revision 1.30 diff -u -p -r1.29 -r1.30 --- src/sys/arch/i386/i386/locore.S 2004/08/05 15:25:29 1.29 +++ src/sys/arch/i386/i386/locore.S 2004/08/22 06:46:34 1.30 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.29 2004/08/05 15:25:29 mycroft Exp $ */ +/* $NetBSD: locore.S,v 1.30 2004/08/22 06:46:34 junyoung Exp $ */ /*- * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc. @@ -110,12 +110,12 @@ #include #if defined(MULTIPROCESSOR) - + #define SET_CURLWP(lwp,cpu) \ movl CPUVAR(SELF),cpu ; \ movl lwp,CPUVAR(CURLWP) ; \ movl cpu,L_CPU(lwp) - + #else #define SET_CURLWP(lwp,tcpu) movl lwp,CPUVAR(CURLWP) @@ -123,7 +123,7 @@ #endif -#define GET_CURPCB(reg) movl CPUVAR(CURPCB),reg +#define GET_CURPCB(reg) movl CPUVAR(CURPCB),reg #define SET_CURPCB(reg) movl reg,CPUVAR(CURPCB) #define CLEAR_RESCHED(reg) movl reg,CPUVAR(RESCHED) @@ -152,7 +152,7 @@ #ifdef MULTIPROCESSOR #include #endif - + /* * PTmap is recursive pagemap at top of virtual address space. * Within PTmap, the page directory can be found (third indirection). @@ -191,8 +191,8 @@ #ifdef I586_CPU .globl _C_LABEL(idt) #endif - .globl _C_LABEL(lapic_tpr) - + .globl _C_LABEL(lapic_tpr) + #if NLAPIC > 0 #ifdef __ELF__ .align PAGE_SIZE @@ -202,20 +202,20 @@ .globl _C_LABEL(local_apic), _C_LABEL(lapic_id) _C_LABEL(local_apic): .space LAPIC_ID -_C_LABEL(lapic_id): +_C_LABEL(lapic_id): .long 0x00000000 .space LAPIC_TPRI-(LAPIC_ID+4) -_C_LABEL(lapic_tpr): +_C_LABEL(lapic_tpr): .space LAPIC_PPRI-LAPIC_TPRI -_C_LABEL(lapic_ppr): +_C_LABEL(lapic_ppr): .space LAPIC_ISR-LAPIC_PPRI _C_LABEL(lapic_isr): .space PAGE_SIZE-LAPIC_ISR #else -_C_LABEL(lapic_tpr): +_C_LABEL(lapic_tpr): .long 0 #endif - + _C_LABEL(cpu): .long 0 # are we 386, 386sx, or 486, # or Pentium, or.. @@ -233,7 +233,7 @@ _C_LABEL(biosextmem): .long 0 # extended #else _C_LABEL(biosextmem): .long REALEXTMEM #endif - + .space 512 tmpstk: @@ -497,7 +497,7 @@ try586: /* Use the `cpuid' instruction. /* * Virtual address space of kernel: * - * text | data | bss | [syms] | page dir | proc0 kstack + * text | data | bss | [syms] | page dir | proc0 kstack * 0 1 2 3 */ #define PROC0PDIR ((0) * PAGE_SIZE) @@ -572,7 +572,7 @@ try586: /* Use the `cpuid' instruction. /* Calculate end of text segment, rounded to a page. */ leal (RELOC(etext)+PGOFSET),%edx andl $~PGOFSET,%edx - + /* Skip over the first 1MB. */ movl $_RELOC(KERNTEXTOFF),%eax movl %eax,%ecx @@ -661,7 +661,7 @@ begin: pushl %esp call _C_LABEL(initgdt) addl $4,%esp - + movl _C_LABEL(nkpde),%eax shll $PGSHIFT,%eax addl $TABLESIZE,%eax @@ -882,7 +882,7 @@ ENTRY(i386_copyout) pushl %esi pushl %edi pushl $0 - + movl 16(%esp),%esi movl 20(%esp),%edi movl 24(%esp),%eax @@ -924,7 +924,7 @@ ENTRY(i386_copyout) 1: /* Check PTE for each page. */ testb $PG_RW,_C_LABEL(PTmap)(,%edi,4) jz 2f - + 4: incl %edi decl %ecx jns 1b @@ -932,7 +932,7 @@ ENTRY(i386_copyout) movl 20(%esp),%edi movl 24(%esp),%eax jmp 3f - + 2: /* Simulate a trap. */ pushl %ecx movl %edi,%eax @@ -972,7 +972,7 @@ ENTRY(i486_copyout) pushl %esi pushl %edi pushl $0 - + movl 16(%esp),%esi movl 20(%esp),%edi movl 24(%esp),%eax @@ -1027,7 +1027,7 @@ ENTRY(i386_copyin) GET_CURPCB(%eax) pushl $0 movl $_C_LABEL(copy_fault),PCB_ONFAULT(%eax) - + movl 16(%esp),%esi movl 20(%esp),%edi movl 24(%esp),%eax @@ -1219,7 +1219,7 @@ ENTRY(copyoutstr) ENTRY(copyinstr) pushl %esi pushl %edi - + DO_DEFERRED_SWITCH(%eax) GET_CURPCB(%ecx) @@ -1342,7 +1342,7 @@ ENTRY(fuword) movl (%edx),%eax movl $0,PCB_ONFAULT(%ecx) ret - + /* * int fusword(const void *uaddr); * Fetch a short from the user's address space. @@ -1359,7 +1359,7 @@ ENTRY(fusword) movzwl (%edx),%eax movl $0,PCB_ONFAULT(%ecx) ret - + /* * int fuswintr(const void *uaddr); * Fetch a short from the user's address space. Can be called during an @@ -1379,7 +1379,7 @@ ENTRY(fuswintr) movzwl (%edx),%eax movl $0,PCB_ONFAULT(%ecx) ret - + /* * int fubyte(const void *uaddr); * Fetch a byte from the user's address space. @@ -1472,7 +1472,7 @@ ENTRY(suword) xorl %eax,%eax movl %eax,PCB_ONFAULT(%ecx) ret - + /* * int susword(void *uaddr, short x); * Store a short in the user's address space. @@ -1579,7 +1579,7 @@ ENTRY(subyte) jne 2f #endif /* I486_CPU || I586_CPU || I686_CPU */ - GET_CURPCB(%eax) + GET_CURPCB(%eax) movl $3f,PCB_ONFAULT(%eax) movl %edx,%eax @@ -1696,9 +1696,9 @@ NENTRY(switch_error) * Find a runnable process 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 * restore. - * + * * Note that the stack frame layout is known to "struct switchframe" - * in and to the code in cpu_fork() which initializes + * in and to the code in cpu_fork() which initializes * it for a new lwp. */ ENTRY(cpu_switch) @@ -1713,9 +1713,9 @@ ENTRY(cpu_switch) call _C_LABEL(panic) /* NOTREACHED */ 2: .asciz "not splsched() in cpu_switch!" -1: +1: #endif /* DEBUG */ - + movl 16(%esp),%esi # current /* @@ -1803,8 +1803,8 @@ ENTRY(cpu_switch) xorl %esi,%esi sti -idle_unlock: -#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) +idle_unlock: +#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) call _C_LABEL(sched_unlock_idle) #endif /* Interrupts are okay again. */ @@ -1812,7 +1812,7 @@ idle_unlock: call _C_LABEL(Xspllower) # process pending interrupts addl $4,%esp jmp idle_start -idle_zero: +idle_zero: sti call _C_LABEL(uvm_pageidlezero) cli @@ -1826,24 +1826,24 @@ idle_loop: sti hlt NENTRY(mpidle) -idle_start: +idle_start: cli cmpl $0,_C_LABEL(sched_whichqs) jz idle_loop -idle_exit: +idle_exit: movl $IPL_HIGH,CPUVAR(ILEVEL) # splhigh sti -#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) +#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) call _C_LABEL(sched_lock_idle) #endif movl _C_LABEL(sched_whichqs),%ecx bsfl %ecx,%ebx jz idle_unlock -switch_dequeue: - /* +switch_dequeue: + /* * we're running at splhigh(), but it's otherwise okay to take - * interrupts here. + * interrupts here. */ sti leal _C_LABEL(sched_qs)(,%ebx,8),%eax # select q @@ -1939,7 +1939,7 @@ switch_exited: movl %eax,PCB_CR3(%esi) /* XXX should be done by pmap_activate? */ #ifdef MULTIPROCESSOR movl CPUVAR(GDT),%eax -#else +#else /* Load TSS info. */ movl _C_LABEL(gdt),%eax #endif @@ -1958,7 +1958,7 @@ switch_restored: /* Restore cr0 (including FPU state). */ movl PCB_CR0(%esi),%ecx #ifdef MULTIPROCESSOR - /* + /* * If our floating point registers are on a different CPU, * clear CR0_TS so we'll trap rather than reuse bogus state. */ @@ -1966,8 +1966,8 @@ switch_restored: cmpl CPUVAR(SELF),%ebx jz 1f orl $CR0_TS,%ecx -1: -#endif +1: +#endif movl %ecx,%cr0 /* Record new pcb. */ @@ -1987,7 +1987,7 @@ switch_restored: movl $1,%ebx switch_return: -#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) +#if defined(MULTIPROCESSOR) || defined(LOCKDEBUG) call _C_LABEL(sched_unlock_idle) #endif cmpl $0,CPUVAR(IPENDING) @@ -1999,7 +1999,7 @@ switch_return: movl $IPL_HIGH,CPUVAR(ILEVEL) # splhigh() movl %ebx,%eax - + popl %edi popl %esi popl %ebx @@ -2062,8 +2062,8 @@ ENTRY(cpu_switchto) /* * void cpu_exit(struct lwp *l) - * Switch to the appropriate idle context (lwp0's if uniprocessor; the CPU's - * if multiprocessor) and deallocate the address space and kernel stack for p. + * Switch to the appropriate idle context (lwp0's if uniprocessor; the CPU's + * if multiprocessor) and deallocate the address space and kernel stack for p. * Then jump into cpu_switch(), as if we were in the idle proc all along. */ #ifndef MULTIPROCESSOR @@ -2097,7 +2097,7 @@ ENTRY(cpu_exit) movl %eax,PCB_CR3(%esi) #ifdef MULTIPROCESSOR movl CPUVAR(GDT),%eax -#else +#else /* Load TSS info. */ movl _C_LABEL(gdt),%eax #endif @@ -2136,7 +2136,7 @@ ENTRY(cpu_exit) /* LINTSTUB: Func: void savectx(struct pcb *pcb) */ ENTRY(savectx) movl 4(%esp),%edx # edx = p->p_addr - + /* Save stack pointers. */ movl %esp,PCB_ESP(%edx) movl %ebp,PCB_EBP(%edx) @@ -2180,7 +2180,7 @@ syscall1: #ifdef DDB int $3 #endif -1: +1: #endif /* DIAGNOSTIC */ movl CPUVAR(CURLWP),%edx movl %esp,L_MD_REGS(%edx) # save pointer to frame @@ -2219,8 +2219,8 @@ syscall1: movl $IPL_NONE,CPUVAR(ILEVEL) jmp 2b 4: .asciz "WARNING: SPL NOT LOWERED ON SYSCALL EXIT\n" -5: .asciz "WARNING: SPL NOT ZERO ON SYSCALL ENTRY\n" -6: .asciz "WARNING: WANT PMAPLOAD ON SYSCALL ENTRY\n" +5: .asciz "WARNING: SPL NOT ZERO ON SYSCALL ENTRY\n" +6: .asciz "WARNING: WANT PMAPLOAD ON SYSCALL ENTRY\n" #endif /* DIAGNOSTIC */ 9: sti call _C_LABEL(pmap_load)