1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- .text
- .arch i386
- .code16
- .section ".prefix", "ax", @progbits
- .org 0
-
- nbi_header:
-
- /*****************************************************************************
- * NBI file header
- *****************************************************************************
- */
- file_header:
- .long 0x1b031336 /* Signature */
- .byte 0x04 /* 16 bytes header, no vendor info */
- .byte 0
- .byte 0
- .byte 0 /* No flags */
- .word 0x0000, 0x07c0 /* Load header to 0x07c0:0x0000 */
- .word entry, 0x07c0 /* Start execution at 0x07c0:entry */
- .size file_header, . - file_header
-
- /*****************************************************************************
- * NBI segment header
- *****************************************************************************
- */
- segment_header:
- .byte 0x04 /* 16 bytes header, no vendor info */
- .byte 0
- .byte 0
- .byte 0x04 /* Last segment */
- .long 0x00007e00
- imglen: .long -512
- memlen: .long -512
- .size segment_header, . - segment_header
-
- .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */
- .ascii "ADDL"
- .long imglen
- .long 1
- .long 0
- .ascii "ADDL"
- .long memlen
- .long 1
- .long 0
- .previous
-
- /*****************************************************************************
- * NBI entry point
- *****************************************************************************
- */
- entry:
- /* Install iPXE */
- call install
-
- /* Jump to .text16 segment */
- pushw %ax
- pushw $1f
- lret
- .section ".text16", "awx", @progbits
- 1:
- pushl $main
- pushw %cs
- call prot_call
- popl %ecx /* discard */
-
- /* Uninstall iPXE */
- call uninstall
-
- /* Reboot system */
- int $0x19
-
- .previous
- .size entry, . - entry
-
- nbi_header_end:
- .org 512
|