[contrib] Allow Network Protocol header to display in rom-o-matic
[gpxe.git] / src / arch / i386 / prefix / nbiprefix.S
blob607d80fb3c95e9517db9ac8ebfbac66b18543026
1         .text
2         .arch i386
3         .code16
4         .section ".prefix", "ax", @progbits
5         .org 0
7 nbi_header:
8         
9 /*****************************************************************************
10  * NBI file header
11  *****************************************************************************
12  */
13 file_header:
14         .long   0x1b031336      /* Signature */
15         .byte   0x04            /* 16 bytes header, no vendor info */
16         .byte   0
17         .byte   0
18         .byte   0               /* No flags */
19         .word   0x0000, 0x07c0  /* Load header to 0x07c0:0x0000 */
20         .word   entry, 0x07c0   /* Start execution at 0x07c0:entry */
21         .size   file_header, . - file_header
23 /*****************************************************************************
24  * NBI segment header
25  *****************************************************************************
26  */
27 segment_header:
28         .byte   0x04            /* 16 bytes header, no vendor info */
29         .byte   0
30         .byte   0
31         .byte   0x04            /* Last segment */
32         .long   0x00007e00
33 imglen: .long   -512
34 memlen: .long   -512
35         .size   segment_header, . - segment_header
37         .section ".zinfo.fixup", "a", @progbits /* Compressor fixups */
38         .ascii  "ADDL"
39         .long   imglen
40         .long   1
41         .long   0
42         .ascii  "ADDL"
43         .long   memlen
44         .long   1
45         .long   0
46         .previous
48 /*****************************************************************************
49  * NBI entry point
50  *****************************************************************************
51  */
52 entry:
53         /* Install gPXE */
54         call    install
56         /* Jump to .text16 segment */
57         pushw   %ax
58         pushw   $1f
59         lret
60         .section ".text16", "awx", @progbits
62         pushl   $main
63         pushw   %cs
64         call    prot_call
65         popl    %ecx /* discard */
67         /* Uninstall gPXE */
68         call    uninstall
70         /* Reboot system */
71         int $0x19
73         .previous
74         .size   entry, . - entry
76 nbi_header_end:
77         .org 512