diff options
author | Frans Kaashoek <[email protected]> | 2011-08-15 12:02:59 -0400 |
---|---|---|
committer | Frans Kaashoek <[email protected]> | 2011-08-15 12:02:59 -0400 |
commit | c60a3551c2dba29006f5d7917308281e47fa5fef (patch) | |
tree | 3fad525469c88a1521220ff8d0468dddbdb47af5 /bootother.S | |
parent | c95ce31c5978bd43e1f0d34e51a4e3d7bcc41b14 (diff) | |
download | xv6-labs-c60a3551c2dba29006f5d7917308281e47fa5fef.tar.gz xv6-labs-c60a3551c2dba29006f5d7917308281e47fa5fef.tar.bz2 xv6-labs-c60a3551c2dba29006f5d7917308281e47fa5fef.zip |
Separate more clearly bootloader from xv6 by renaming multiboot.S to entry.S etc.
Maybe the string boot shouldn't appear in xv6 code?
Diffstat (limited to 'bootother.S')
-rw-r--r-- | bootother.S | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/bootother.S b/bootother.S deleted file mode 100644 index 56edac2..0000000 --- a/bootother.S +++ /dev/null @@ -1,84 +0,0 @@ -#include "asm.h" -#include "memlayout.h" -#include "mmu.h" - -# Each non-boot CPU ("AP") is started up in response to a STARTUP -# IPI from the boot CPU. Section B.4.2 of the Multi-Processor -# Specification says that the AP will start in real mode with CS:IP -# set to XY00:0000, where XY is an 8-bit value sent with the -# STARTUP. Thus this code must start at a 4096-byte boundary. -# -# Because this code sets DS to zero, it must sit -# at an address in the low 2^16 bytes. -# -# Bootothers (in main.c) sends the STARTUPs one at a time. -# It copies this code (start) at 0x7000. -# It puts the address of a newly allocated per-core stack in start-4, -# the address of the place to jump to (mpboot) in start-8, and the physical -# address of bootpgdir in start-12. -# -# -# This code is identical to bootasm.S except: -# - it does not need to enable A20 -# - it uses the address at start-4, start-8, and start-12 - -.code16 -.globl start -start: - cli - - xorw %ax,%ax - movw %ax,%ds - movw %ax,%es - movw %ax,%ss - - lgdt gdtdesc - movl %cr0, %eax - orl $CR0_PE, %eax - movl %eax, %cr0 - -//PAGEBREAK! - ljmpl $(SEG_KCODE<<3), $(start32) - -.code32 -start32: - movw $(SEG_KDATA<<3), %ax - movw %ax, %ds - movw %ax, %es - movw %ax, %ss - movw $0, %ax - movw %ax, %fs - movw %ax, %gs - - # Use bootpgdir as our initial page table - movl (start-12), %eax - movl %eax, %cr3 - # Turn on paging. - movl %cr0, %eax - orl $(CR0_PE|CR0_PG|CR0_WP), %eax - movl %eax, %cr0 - - # Switch to the stack allocated by bootothers() - movl (start-4), %esp - # Call mpboot() - call *(start-8) - - movw $0x8a00, %ax - movw %ax, %dx - outw %ax, %dx - movw $0x8ae0, %ax - outw %ax, %dx -spin: - jmp spin - -.p2align 2 -gdt: - SEG_NULLASM - SEG_ASM(STA_X|STA_R, 0, 0xffffffff) - SEG_ASM(STA_W, 0, 0xffffffff) - - -gdtdesc: - .word (gdtdesc - gdt - 1) - .long gdt - |