load stage 2 partition start and end
This commit is contained in:
1 parent
4433200e23
commit
2cca21750c
1 file changed
+24
-1
@@ -203,8 +203,31 @@ bits 16
|
|||||||
jmp .loop_find_stage2
|
jmp .loop_find_stage2
|
||||||
|
|
||||||
.found_stage2:
|
.found_stage2:
|
||||||
; TODO: we've found the right entry, now we need to parse it, load the sector and jump to it
|
|
||||||
push ax ; address of the GPT entry for stage 2
|
push ax ; address of the GPT entry for stage 2
|
||||||
|
mov si, ax
|
||||||
|
|
||||||
|
; Load partition LBA start.
|
||||||
|
mov eax, [si + 0x20]
|
||||||
|
mov ebx, [si + 0x24]
|
||||||
|
; Ensure it fits in 16 bits.
|
||||||
|
or ebx, ebx
|
||||||
|
jnz .panic
|
||||||
|
cmp ebx, 0xffff
|
||||||
|
ja .panic
|
||||||
|
; Load partition LBA end.
|
||||||
|
mov ecx, [si + 0x28]
|
||||||
|
mov edx, [si + 0x2c]
|
||||||
|
; Assert that the end LBA is greater than the start LBA, so we have at least one sector to load.
|
||||||
|
; TODO: is the end LBA inclusive?
|
||||||
|
or edx, edx
|
||||||
|
jnz .stage2_end_lba_ok
|
||||||
|
cmp eax, ecx
|
||||||
|
jae .panic
|
||||||
|
.stage2_end_lba_ok:
|
||||||
|
|
||||||
|
mov bx, 0x8200
|
||||||
|
call .read_lba
|
||||||
|
; TODO: jump to the sector we just read
|
||||||
|
|
||||||
mov al, [0x7e00]
|
mov al, [0x7e00]
|
||||||
mov byte fs:[0x0000], al
|
mov byte fs:[0x0000], al
|
||||||
|
|||||||
Reference in new issue
Block a user