Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / arch / i386 / prefix / nbiprefix.S
1         .text
2         .arch i386
3         .code16
4         .section ".prefix", "ax", @progbits
5         .org 0
6
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   _nbi_start, 0x07c0      /* Start execution at 0x07c0:entry */
21         .size   file_header, . - file_header
22
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
36
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
47
48 /*****************************************************************************
49  * NBI entry point
50  *****************************************************************************
51  */
52         .globl  _nbi_start
53 _nbi_start:
54         /* Install iPXE */
55         call    install
56
57         /* Set up real-mode stack */
58         movw    %bx, %ss
59         movw    $_estack16, %sp
60
61         /* Jump to .text16 segment */
62         pushw   %ax
63         pushw   $1f
64         lret
65         .section ".text16", "awx", @progbits
66 1:
67         pushl   $main
68         pushw   %cs
69         call    prot_call
70         popl    %ecx /* discard */
71
72         /* Uninstall iPXE */
73         call    uninstall
74
75         /* Reboot system */
76         int $0x19
77
78         .previous
79         .size   _nbi_start, . - _nbi_start
80
81 nbi_header_end:
82         .org 512