mirror of
https://gitlab.com/bztsrc/bootboot.git
synced 2023-02-13 20:54:32 -05:00
Support for initrd over serial in BIOS/Multiboot variant
This commit is contained in:
parent
b73f0d5b2a
commit
e80c8cc9ab
6 changed files with 70 additions and 3 deletions
BIN
dist/bootboot.bin
vendored
BIN
dist/bootboot.bin
vendored
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -1,7 +1,7 @@
|
||||||
/* generated by bin2h, do not edit */
|
/* generated by bin2h, do not edit */
|
||||||
|
|
||||||
extern unsigned char binary_boot_bin[512];
|
extern unsigned char binary_boot_bin[512];
|
||||||
extern unsigned char binary_bootboot_bin[11776];
|
extern unsigned char binary_bootboot_bin[12288];
|
||||||
extern unsigned char binary_bootboot_efi[99396];
|
extern unsigned char binary_bootboot_efi[99396];
|
||||||
extern unsigned char binary_bootboot_img[34672];
|
extern unsigned char binary_bootboot_img[34672];
|
||||||
extern unsigned char binary_LICENCE_broadcom[1594];
|
extern unsigned char binary_LICENCE_broadcom[1594];
|
||||||
|
|
|
@ -1006,6 +1006,29 @@ prot_oct2bin:
|
||||||
pop ebx
|
pop ebx
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
; IN: al, character to send
|
||||||
|
uart_send: mov ah, al
|
||||||
|
mov dx, 3fdh
|
||||||
|
@@: pause
|
||||||
|
in al, dx
|
||||||
|
and al, 20h
|
||||||
|
jz @b
|
||||||
|
sub dl, 5
|
||||||
|
mov al, ah
|
||||||
|
out dx, al
|
||||||
|
ret
|
||||||
|
|
||||||
|
; IN: edi pointer to store the received char
|
||||||
|
uart_getc: mov dx, 03fdh
|
||||||
|
@@: pause
|
||||||
|
in al, dx
|
||||||
|
and al, 1
|
||||||
|
jz @b
|
||||||
|
sub dl, 5
|
||||||
|
in al, dx
|
||||||
|
stosb
|
||||||
|
ret
|
||||||
|
|
||||||
protmode_start:
|
protmode_start:
|
||||||
mov ax, DATA_PROT
|
mov ax, DATA_PROT
|
||||||
mov ds, ax
|
mov ds, ax
|
||||||
|
@ -1038,7 +1061,51 @@ protmode_start:
|
||||||
cmp esi, 0F4000h
|
cmp esi, 0F4000h
|
||||||
jb .nextrom
|
jb .nextrom
|
||||||
|
|
||||||
; read GPT
|
;---- notify raspbootcom / USBImager to send the initrd over serial line ----
|
||||||
|
mov al, 3
|
||||||
|
call uart_send
|
||||||
|
call uart_send
|
||||||
|
call uart_send
|
||||||
|
|
||||||
|
; wait for response with timeout
|
||||||
|
mov ah, al
|
||||||
|
mov cx, 10000
|
||||||
|
mov dx, 3fdh
|
||||||
|
@@: dec cx
|
||||||
|
jz .getgpt
|
||||||
|
pause
|
||||||
|
in al, dx
|
||||||
|
and al, 1
|
||||||
|
jz @b
|
||||||
|
; read the initrd's size
|
||||||
|
mov edi, bootboot.initrd_size
|
||||||
|
call uart_getc
|
||||||
|
call uart_getc
|
||||||
|
call uart_getc
|
||||||
|
call uart_getc
|
||||||
|
mov ecx, dword [bootboot.initrd_size]
|
||||||
|
; send negative or positive acknowledge
|
||||||
|
cmp ecx, 32
|
||||||
|
jb .se
|
||||||
|
cmp ecx, INITRD_MAXSIZE*1024*1024
|
||||||
|
jb .ok
|
||||||
|
.se: mov al, 'S'
|
||||||
|
call uart_send
|
||||||
|
mov al, 'E'
|
||||||
|
call uart_send
|
||||||
|
jmp .getgpt
|
||||||
|
.ok: mov al, 'O'
|
||||||
|
call uart_send
|
||||||
|
mov al, 'K'
|
||||||
|
call uart_send
|
||||||
|
mov edi, dword [bootboot.initrd_ptr]
|
||||||
|
; read in the image
|
||||||
|
@@: call uart_getc
|
||||||
|
dec ecx
|
||||||
|
jnz @b
|
||||||
|
jmp .initrdloaded
|
||||||
|
|
||||||
|
;---- read GPT -----
|
||||||
.getgpt: xor eax, eax
|
.getgpt: xor eax, eax
|
||||||
xor edi, edi
|
xor edi, edi
|
||||||
prot_readsector
|
prot_readsector
|
||||||
|
|
Loading…
Reference in a new issue