| # The xv6 kernel starts executing in this file. This file is linked with | |
| # the kernel C code, so it can refer to kernel symbols such as main(). | |
| # The boot block (bootasm.S and bootmain.c) jumps to entry below. | |
| # 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" | |
| #include "param.h" | |
| # Multiboot header. Data to direct multiboot loader. | |
| .p2align 2 | |
| .text | |
| .globl multiboot_header | |
| multiboot_header: | |
| #define magic 0x1badb002 | |
| #define flags 0 | |
| .long magic | |
| .long flags | |
| .long (-magic-flags) | |
| # By convention, the _start symbol specifies the ELF entry point. | |
| # Since we haven't set up virtual memory yet, our entry point is | |
| # the physical address of 'entry'. | |
| .globl _start | |
| _start = V2P_WO(entry) | |
| # Entering xv6 on boot processor, with paging off. | |
| .globl entry | |
| entry: | |
| # Turn on page size extension for 4Mbyte pages | |
| movl %cr4, %eax | |
| orl $(CR4_PSE), %eax | |
| movl %eax, %cr4 | |
| # Set page directory | |
| movl $(V2P_WO(entrypgdir)), %eax | |
| movl %eax, %cr3 | |
| # Turn on paging. | |
| movl %cr0, %eax | |
| orl $(CR0_PG|CR0_WP), %eax | |
| movl %eax, %cr0 | |
| # Set up the stack pointer. | |
| movl $(stack + KSTACKSIZE), %esp | |
| # Jump to main(), and switch to executing at | |
| # high addresses. The indirect call is needed because | |
| # the assembler produces a PC-relative instruction | |
| # for a direct jump. | |
| mov $main, %eax | |
| jmp *%eax | |
| .comm stack, KSTACKSIZE | |
Xet Storage Details
- Size:
- 1.83 kB
- Xet hash:
- 284ba0ff726f21b37ee4167faf03238d73cb131108ea95501fadbd8ad0bcae3d
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.