mirror of
https://gitlab.com/bztsrc/bootboot.git
synced 2023-02-13 20:54:32 -05:00
62 lines
2.3 KiB
NASM
62 lines
2.3 KiB
NASM
;*
|
|
;* x86_64-bios/initrd.asm
|
|
;*
|
|
;* Copyright (C) 2017 bzt (bztsrc@gitlab)
|
|
;*
|
|
;* Permission is hereby granted, free of charge, to any person
|
|
;* obtaining a copy of this software and associated documentation
|
|
;* files (the "Software"), to deal in the Software without
|
|
;* restriction, including without limitation the rights to use, copy,
|
|
;* modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
;* of the Software, and to permit persons to whom the Software is
|
|
;* furnished to do so, subject to the following conditions:
|
|
;*
|
|
;* The above copyright notice and this permission notice shall be
|
|
;* included in all copies or substantial portions of the Software.
|
|
;*
|
|
;* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
;* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
;* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
;* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
;* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
;* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
;* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
;* DEALINGS IN THE SOFTWARE.
|
|
;*
|
|
;* This file is part of the BOOTBOOT Protocol package.
|
|
;* @brief Option ROM for initrd. mkfs utility also can do this.
|
|
;*
|
|
;* This may seem odd, but works with BIOS (up to 96k gzipped
|
|
;* initrd), and makes much more sense on EFI, where Option ROMs
|
|
;* can be 16M in size.
|
|
;*
|
|
|
|
;------------header------------
|
|
USE16
|
|
ORG 0h
|
|
rom: db 55h,0AAh ;ROM magic
|
|
db (rom_end-rom)/512 ;size in 512 blocks
|
|
.executor: xor ax, ax ;entry point
|
|
retf
|
|
.checksum: dw 0 ;checksum
|
|
.name: db "INITRD"
|
|
db 0,0
|
|
dd initrd_end-initrd, 0
|
|
db 0,0
|
|
.pnpptr: dw 0
|
|
.flags: dd 0
|
|
;------------data------------
|
|
initrd:
|
|
file "../../bin/ESP/BOOTBOOT/INITRD"
|
|
initrd_end:
|
|
;-----------padding to be multiple of 512----------
|
|
db (511-($-rom+511) mod 512) dup 0
|
|
rom_end:
|
|
|
|
;-----------BIOS checksum------------
|
|
chksum = 0
|
|
repeat $-rom
|
|
load b byte from (rom+%-1)
|
|
chksum = (chksum + b) mod 100h
|
|
end repeat
|
|
store byte (100h-chksum) at (rom.checksum)
|