diff options
author | aiju <aiju@phicode.de> | 2012-07-13 18:09:42 +0200 |
---|---|---|
committer | aiju <aiju@phicode.de> | 2012-07-13 18:09:42 +0200 |
commit | c03913c62ddb751d2992e8a3d70e945229ed8e15 (patch) | |
tree | 901a9390e70443b1e67929e4d9dd8757bfdda0b9 /sys/src/9/pc/l.s | |
parent | 8e11ff283f1e7c36b23e6e52c2ab0ca12a7713f9 (diff) |
fixed multiboot booting
Diffstat (limited to 'sys/src/9/pc/l.s')
-rw-r--r-- | sys/src/9/pc/l.s | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/sys/src/9/pc/l.s b/sys/src/9/pc/l.s index d3e5f5201..128fde3d3 100644 --- a/sys/src/9/pc/l.s +++ b/sys/src/9/pc/l.s @@ -46,12 +46,28 @@ TEXT _multibootheader(SB), $0 LONG $_startKADDR-KZERO(SB) /* load_addr */ LONG $edata-KZERO(SB) /* load_end_addr */ LONG $end-KZERO(SB) /* bss_end_addr */ - LONG $_startKADDR-KZERO(SB) /* entry_addr */ + LONG $_multibootentry-KZERO(SB) /* entry_addr */ LONG $0 /* mode_type */ LONG $0 /* width */ LONG $0 /* height */ LONG $0 /* depth */ +TEXT _multibootentry(SB), $0 + MOVL $etext-KZERO(SB), SI + MOVL SI, DI + ADDL $0xfff, DI + ANDL $~0xfff, DI + MOVL $edata-KZERO(SB), CX + SUBL DI, CX + ADDL CX, SI + ADDL CX, DI + STD + REP; MOVSB + CLD + MOVL $_startPADDR(SB), AX + ANDL $~KZERO, AX + JMP* AX + /* * In protected mode with paging turned off and segment registers setup * to linear map all memory. Entered via a jump to PADDR(entry), |