[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.105 and 1.106

version 1.105, 2013/06/23 03:16:46 version 1.106, 2013/06/23 09:00:36
Line 176  __KERNEL_RCSID(0, "$NetBSD$");
Line 176  __KERNEL_RCSID(0, "$NetBSD$");
  */   */
 .section __xen_guest  .section __xen_guest
         .ascii  "GUEST_OS=netbsd,GUEST_VER=3.0,XEN_VER=xen-3.0"          .ascii  "GUEST_OS=netbsd,GUEST_VER=3.0,XEN_VER=xen-3.0"
         .ascii  ",VIRT_BASE=0xc0000000" /* KERNBASE */          .ascii  ",VIRT_BASE=0xc0000000" /* KERNBASE */
         .ascii  ",ELF_PADDR_OFFSET=0xc0000000" /* KERNBASE */          .ascii  ",ELF_PADDR_OFFSET=0xc0000000" /* KERNBASE */
         .ascii  ",VIRT_ENTRY=0xc0100000" /* KERNTEXTOFF */          .ascii  ",VIRT_ENTRY=0xc0100000" /* KERNTEXTOFF */
         .ascii  ",HYPERCALL_PAGE=0x00000101"          .ascii  ",HYPERCALL_PAGE=0x00000101"
                 /* (???+HYPERCALL_PAGE_OFFSET)/PAGE_SIZE) */                  /* (???+HYPERCALL_PAGE_OFFSET)/PAGE_SIZE) */
 #ifdef PAE  #ifdef PAE
         .ascii  ",PAE=yes[extended-cr3]"          .ascii  ",PAE=yes[extended-cr3]"
 #endif  #endif
         .ascii  ",LOADER=generic"          .ascii  ",LOADER=generic"
 #if (NKSYMS || defined(DDB) || defined(MODULAR)) && !defined(SYMTAB_SPACE)  #if (NKSYMS || defined(DDB) || defined(MODULAR)) && !defined(SYMTAB_SPACE)
         .ascii  ",BSD_SYMTAB=yes"          .ascii  ",BSD_SYMTAB=yes"
 #endif  #endif
         .byte   0          .byte   0
 #endif  #endif  /* XEN */
   
 /*  /*
  * Initialization   * Initialization
Line 221  END(local_apic)
Line 221  END(local_apic)
         .type   _C_LABEL(lapic_id), @object          .type   _C_LABEL(lapic_id), @object
 LABEL(lapic_id)  LABEL(lapic_id)
         .long   0x00000000          .long   0x00000000
         .space  LAPIC_TPRI-(LAPIC_ID+4)          .space  LAPIC_TPRI-(LAPIC_ID+4)
 END(lapic_id)  END(lapic_id)
         .type   _C_LABEL(lapic_tpr), @object          .type   _C_LABEL(lapic_tpr), @object
 LABEL(lapic_tpr)  LABEL(lapic_tpr)
         .space  LAPIC_PPRI-LAPIC_TPRI          .space  LAPIC_PPRI-LAPIC_TPRI
 END(lapic_tpr)  END(lapic_tpr)
         .type   _C_LABEL(lapic_ppr), @object          .type   _C_LABEL(lapic_ppr), @object
 _C_LABEL(lapic_ppr):  _C_LABEL(lapic_ppr):
Line 529  try586: /* Use the `cpuid' instruction. 
Line 529  try586: /* Use the `cpuid' instruction. 
  *      eax = pte (page frame | control | status)   *      eax = pte (page frame | control | status)
  *      ebx = page table address   *      ebx = page table address
  *      ecx = number of pages to map   *      ecx = number of pages to map
  *   *
  * For PAE, each entry is 8 bytes long: we must set the 4 upper bytes to 0.   * For PAE, each entry is 8 bytes long: we must set the 4 upper bytes to 0.
  * This is done by the first instruction of fillkpt. In the non-PAE case, this   * This is done by the first instruction of fillkpt. In the non-PAE case, this
  * instruction just clears the page table entry.   * instruction just clears the page table entry.
Line 537  try586: /* Use the `cpuid' instruction. 
Line 537  try586: /* Use the `cpuid' instruction. 
   
 #define fillkpt \  #define fillkpt \
 1:      movl    $0,(PDE_SIZE-4)(%ebx)   ;       /* clear bits */        \  1:      movl    $0,(PDE_SIZE-4)(%ebx)   ;       /* clear bits */        \
         movl    %eax,(%ebx)             ;       /* store phys addr */   \          movl    %eax,(%ebx)             ;       /* store phys addr */   \
         addl    $PDE_SIZE,%ebx          ;       /* next pte/pde */      \          addl    $PDE_SIZE,%ebx          ;       /* next pte/pde */      \
         addl    $PAGE_SIZE,%eax         ;       /* next phys page */    \          addl    $PAGE_SIZE,%eax         ;       /* next phys page */    \
         loop    1b                      ;          loop    1b                      ;
   
         /* Find end of kernel image. */          /* Find end of kernel image. */
Line 730  begin:
Line 730  begin:
         movl    %eax,_C_LABEL(lwp0uarea)          movl    %eax,_C_LABEL(lwp0uarea)
         leal    (KSTACK_SIZE-FRAMESIZE)(%eax),%esp          leal    (KSTACK_SIZE-FRAMESIZE)(%eax),%esp
         movl    %esi,(KSTACK_SIZE+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)
         /* It is now safe to parse the Multiboot information structure          /* It is now safe to parse the Multiboot information structure
Line 784  begin:
Line 784  begin:
         movl    %esp, %ebx              # save start of available space          movl    %esp, %ebx              # save start of available space
         movl    $_RELOC(tmpstk),%esp    # bootstrap stack end location          movl    $_RELOC(tmpstk),%esp    # bootstrap stack end location
   
         /* Clear BSS first so that there are no surprises... */          /* Clear BSS. */
         xorl    %eax,%eax          xorl    %eax,%eax
         movl    $RELOC(__bss_start),%edi          movl    $RELOC(__bss_start),%edi
         movl    $RELOC(_end),%ecx          movl    $RELOC(_end),%ecx
Line 827  begin:
Line 827  begin:
   
         /* Set up bootstrap stack. */          /* Set up bootstrap stack. */
         leal    (KSTACK_SIZE-FRAMESIZE)(%eax),%esp          leal    (KSTACK_SIZE-FRAMESIZE)(%eax),%esp
         xorl    %ebp,%ebp               # mark end of frames          xorl    %ebp,%ebp               # mark end of frames
   
         addl    $USPACE, %esi          addl    $USPACE, %esi
         subl    $KERNBASE, %esi         #init386 want a physical address          subl    $KERNBASE, %esi         #init386 want a physical address
Line 839  begin:
Line 839  begin:
         call    _C_LABEL(init386)       # wire 386 chip for unix operation          call    _C_LABEL(init386)       # wire 386 chip for unix operation
         addl    $PDE_SIZE,%esp          # pop paddr_t          addl    $PDE_SIZE,%esp          # pop paddr_t
         call    _C_LABEL(main)          call    _C_LABEL(main)
 #endif /* defined(XEN) */  #endif /* XEN */
 END(start)  END(start)
   
 #if defined(XEN)  #if defined(XEN)
Line 974  ENTRY(dumpsys)
Line 974  ENTRY(dumpsys)
 END(dumpsys)  END(dumpsys)
   
 /*  /*
  * struct lwp *cpu_switchto(struct lwp *oldlwp, struct *newlwp,   * struct lwp *cpu_switchto(struct lwp *oldlwp, struct lwp *newlwp,
  *                          bool returning)   *                          bool returning)
  *   *
  *      1. if (oldlwp != NULL), save its context.   *      1. if (oldlwp != NULL), save its context.
Line 1210  syscall1:
Line 1210  syscall1:
 .Lsyscall_resume:  .Lsyscall_resume:
         movl    %ebx,%eax       # get cpl          movl    %ebx,%eax       # get cpl
         movl    CPUVAR(IUNMASK)(,%eax,4),%eax          movl    CPUVAR(IUNMASK)(,%eax,4),%eax
         andl    CPUVAR(IPENDING),%eax   # any non-masked bits left?          andl    CPUVAR(IPENDING),%eax   # any non-masked bits left?
         jz      17f          jz      17f
         bsrl    %eax,%eax          bsrl    %eax,%eax
         btrl    %eax,CPUVAR(IPENDING)          btrl    %eax,CPUVAR(IPENDING)
         movl    CPUVAR(ISOURCES)(,%eax,4),%eax          movl    CPUVAR(ISOURCES)(,%eax,4),%eax
         jmp     *IS_RESUME(%eax)          jmp     *IS_RESUME(%eax)
 17:     movl    %ebx, CPUVAR(ILEVEL)    #restore cpl  17:     movl    %ebx, CPUVAR(ILEVEL)    #restore cpl
         jmp     .Lsyscall_checkast          jmp     .Lsyscall_checkast
 14:  14:
 #endif /* XEN */  #endif /* XEN */

Legend:
Removed from v.1.105  
changed lines
  Added in v.1.106

CVSweb <webmaster@jp.NetBSD.org>