diff options
Diffstat (limited to 'arch/x86/boot/head.s')
-rw-r--r-- | arch/x86/boot/head.s | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/arch/x86/boot/head.s b/arch/x86/boot/head.s deleted file mode 100644 index d24e36c..0000000 --- a/arch/x86/boot/head.s +++ /dev/null @@ -1,35 +0,0 @@ -/* - head.s is loaded at 0x1000 (by second stage), its main goal - is run 32-bit startup code. - - After that manipulations it jumps to kernel written by C -*/ - -.code32 # Tell GAS to generate 32 bit code -.extern kernel_main - -.set CODESEG, 0x08 -.set DATASEG, 0x10 - -.global _start -_start: - mov $DATASEG, %ax # Point segment registers to the - mov %ax, %ds # data selector we defined in our GDT - mov %ax, %es - mov %ax, %ss - mov %ax, %fs - mov %ax, %gs - - mov $0x90000, %ebp # Update stack position so it is right - mov %ebp, %esp # at the top of the free space. - -check_a20: - mov $0x112345, %edi # Odd megabyte address - mov $0x012345, %esi # Even megabyte address - mov %esi, (%esi) # If A20 line is disabled two pointers - mov %edi, (%edi) # would point to the address 0x012345 - cmpsd # Compare values at addresses - je . # If equivalent, loop forever - - call kernel_main - jmp . # infinite loop |