[BACK]Return to locore.S CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / arch / i386 / i386

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/arch/i386/i386/locore.S between version 1.145.6.3 and 1.153

version 1.145.6.3, 2018/03/13 15:47:44 version 1.153, 2017/09/30 11:43:57
Line 130 
Line 130 
 #include <machine/asm.h>  #include <machine/asm.h>
 __KERNEL_RCSID(0, "$NetBSD$");  __KERNEL_RCSID(0, "$NetBSD$");
   
 #include "opt_compat_oldboot.h"  
 #include "opt_copy_symtab.h"  #include "opt_copy_symtab.h"
 #include "opt_ddb.h"  #include "opt_ddb.h"
 #include "opt_modular.h"  #include "opt_modular.h"
 #include "opt_multiboot.h"  #include "opt_multiboot.h"
 #include "opt_realmem.h"  #include "opt_realmem.h"
 #include "opt_vm86.h"  
 #include "opt_xen.h"  #include "opt_xen.h"
   
 #include "assym.h"  #include "assym.h"
Line 840  begin:
Line 838  begin:
         pushl   $0      /* init386() expects a 64 bits paddr_t with PAE */          pushl   $0      /* init386() expects a 64 bits paddr_t with PAE */
 #endif  #endif
         pushl   %eax          pushl   %eax
           call    _C_LABEL(init_bootspace)
         call    _C_LABEL(init386)          call    _C_LABEL(init386)
         addl    $PDE_SIZE,%esp          /* pop paddr_t */          addl    $PDE_SIZE,%esp          /* pop paddr_t */
         addl    $NGDT*8,%esp            /* pop temporary gdt */          addl    $NGDT*8,%esp            /* pop temporary gdt */
Line 1112  skip_save:
Line 1111  skip_save:
         addl    $4,%esp          addl    $4,%esp
 #else  #else
         movl    PCB_ESP0(%ebx),%eax          movl    PCB_ESP0(%ebx),%eax
         movl    CPUVAR(TSS),%ecx          movl    %eax,CPUVAR(ESP0)
         movl    %eax,TSS_ESP0(%ecx)  
 #endif  #endif
   
         /* Don't bother with the rest if switching to a system process. */          /* Don't bother with the rest if switching to a system process. */
Line 1137  skip_save:
Line 1135  skip_save:
         movl    PCB_IOMAP(%ebx),%eax          movl    PCB_IOMAP(%ebx),%eax
         orl     %eax,%eax          orl     %eax,%eax
         jnz     .Lcopy_iobitmap          jnz     .Lcopy_iobitmap
         movl    CPUVAR(TSS),%eax          movl    $(IOMAP_INVALOFF << 16),CPUVAR(IOBASE)
         movl    $(IOMAP_INVALOFF << 16),TSS_IOBASE(%eax)  
 .Liobitmap_done:  .Liobitmap_done:
   
         /* Is this process using RAS (restartable atomic sequences)? */          /* Is this process using RAS (restartable atomic sequences)? */
Line 1202  switch_return:
Line 1199  switch_return:
         pushl   %esi          pushl   %esi
         pushl   %edi          pushl   %edi
         movl    %eax,%esi               /* pcb_iomap */          movl    %eax,%esi               /* pcb_iomap */
         movl    CPUVAR(TSS),%edi          movl    CPUVAR(SELF),%edi
         leal    TSS_IOMAP(%edi),%edi          leal    CPU_INFO_IOMAP(%edi),%edi
         rep          rep
         movsl          movsl
         popl    %edi          popl    %edi
         popl    %esi          popl    %esi
         movl    CPUVAR(TSS),%eax          movl    $((CPU_INFO_IOMAP - CPU_INFO_TSS) << 16),CPUVAR(IOBASE)
         movl    $((TSS_IOMAP - TSS_TSS) << 16),TSS_IOBASE(%eax)  
         jmp     .Liobitmap_done          jmp     .Liobitmap_done
 END(cpu_switchto)  END(cpu_switchto)
   
Line 1318  IDTVEC(syscall)
Line 1314  IDTVEC(syscall)
         jmp     .Lsyscall_checkast      /* re-check ASTs */          jmp     .Lsyscall_checkast      /* re-check ASTs */
 IDTVEC_END(syscall)  IDTVEC_END(syscall)
   
 IDTVEC(svr4_fasttrap)  
         pushl   $2              /* size of instruction for restart */  
         pushl   $T_ASTFLT       /* trap # for doing ASTs */  
         INTRENTRY  
         STI(%eax)  
         pushl   $RW_READER  
         pushl   $_C_LABEL(svr4_fasttrap_lock)  
         call    _C_LABEL(rw_enter)  
         addl    $8,%esp  
         call    *_C_LABEL(svr4_fasttrap_vec)  
         pushl   $_C_LABEL(svr4_fasttrap_lock)  
         call    _C_LABEL(rw_exit)  
         addl    $4,%esp  
 2:      /* Check for ASTs on exit to user mode. */  
         cli  
         CHECK_ASTPENDING(%eax)  
         je      1f  
         /* Always returning to user mode here. */  
         CLEAR_ASTPENDING(%eax)  
         sti  
         /* Pushed T_ASTFLT into tf_trapno on entry. */  
         pushl   %esp  
         call    _C_LABEL(trap)  
         addl    $4,%esp  
         jmp     2b  
 1:      CHECK_DEFERRED_SWITCH  
         jnz     9f  
         INTRFASTEXIT  
 9:      sti  
         call    _C_LABEL(pmap_load)  
         cli  
         jmp     2b  
   
 /*  /*
  * int npx586bug1(int a, int b)   * int npx586bug1(int a, int b)
  * Used when checking for the FDIV bug on first generations pentiums.   * Used when checking for the FDIV bug on first generations pentiums.
Line 1405  ENTRY(sse2_idlezero_page)
Line 1368  ENTRY(sse2_idlezero_page)
         popl    %ebp          popl    %ebp
         ret          ret
 END(sse2_idlezero_page)  END(sse2_idlezero_page)
   
   ENTRY(intrfastexit)
           movw    TF_GS(%esp),%gs
           movw    TF_FS(%esp),%fs
           movw    TF_ES(%esp),%es
           movw    TF_DS(%esp),%ds
           movl    TF_EDI(%esp),%edi
           movl    TF_ESI(%esp),%esi
           movl    TF_EBP(%esp),%ebp
           movl    TF_EBX(%esp),%ebx
           movl    TF_EDX(%esp),%edx
           movl    TF_ECX(%esp),%ecx
           movl    TF_EAX(%esp),%eax
           addl    $(TF_PUSHSIZE+8),%esp
           iret
   END(intrfastexit)
   

Legend:
Removed from v.1.145.6.3  
changed lines
  Added in v.1.153

CVSweb <webmaster@jp.NetBSD.org>