summaryrefslogtreecommitdiff
path: root/multiboot.S
diff options
context:
space:
mode:
Diffstat (limited to 'multiboot.S')
-rw-r--r--multiboot.S60
1 files changed, 0 insertions, 60 deletions
diff --git a/multiboot.S b/multiboot.S
deleted file mode 100644
index cd6a62b..0000000
--- a/multiboot.S
+++ /dev/null
@@ -1,60 +0,0 @@
-# Multiboot header, for multiboot boot loaders like GNU Grub.
-# http://www.gnu.org/software/grub/manual/multiboot/multiboot.html
-#
-# Using GRUB 2, you can boot xv6 from a file stored in a
-# Linux file system by copying kernel or kernelmemfs to /boot
-# and then adding this menu entry:
-#
-# menuentry "xv6" {
-# insmod ext2
-# set root='(hd0,msdos1)'
-# set kernel='/boot/kernel'
-# echo "Loading ${kernel}..."
-# multiboot ${kernel} ${kernel}
-# boot
-# }
-
-#include "asm.h"
-#include "memlayout.h"
-#include "mmu.h"
-
-#define STACK 4096
-
-# Multiboot header. Data to direct multiboot loader.
-.p2align 2
-.text
-.globl multiboot_header
-multiboot_header:
- #define magic 0x1badb002
- #define flags (1<<16 | 1<<0)
- .long magic
- .long flags
- .long (-magic-flags)
- .long multiboot_header # beginning of image
- .long multiboot_header
- .long edata
- .long end
- .long multiboot_entry
-
-# Multiboot entry point. Machine is mostly set up.
-.globl multiboot_entry
-multiboot_entry:
- movl $(V2P_WO(bootpgdir)), %eax
- movl %eax, %cr3
- # Turn on paging.
- movl %cr0, %eax
- orl $(CR0_PE|CR0_PG|CR0_WP), %eax
- movl %eax, %cr0
-
- # now switch to using addresses above KERNBASE
- # call addresses are pc-relative so we jump though this hoop:
- mov $relocated, %eax
- jmp *%eax
-relocated:
- # Set up the stack pointer and call into C.
- movl $(stack + STACK), %esp
- call main
-spin:
- jmp spin
-
-.comm stack, STACK