Magellan Linux

Annotation of /trunk/mkinitrd-magellan/isolinux/layout.inc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1133 - (hide annotations) (download)
Thu Aug 19 09:50:43 2010 UTC (13 years, 8 months ago) by niro
File size: 4078 byte(s)
-updated to isolinux-3.86
1 niro 532 ; -----------------------------------------------------------------------
2     ;
3 niro 1133 ; Copyright 1994-2009 H. Peter Anvin - All Rights Reserved
4     ; Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
5     ;
6 niro 532 ; This program is free software; you can redistribute it and/or modify
7     ; it under the terms of the GNU General Public License as published by
8     ; the Free Software Foundation, Inc., 53 Temple Place Ste 330,
9     ; Bostom MA 02111-1307, USA; either version 2 of the License, or
10     ; (at your option) any later version; incorporated herein by reference.
11     ;
12     ; -----------------------------------------------------------------------
13    
14     ;
15     ; layout.inc
16     ;
17     ; Memory layout of segments
18     ;
19    
20 niro 1133 ; Default to 16-bit code
21     bits 16
22 niro 532
23     ; Memory below 0800h is reserved for the BIOS and the MBR.
24     BSS_START equ 0800h
25    
26     ; Text starts at the load address of 07C00h.
27     TEXT_START equ 7C00h
28    
29 niro 1133 ;
30     ; Stack layout
31     ;
32     ; PXELINUX: There are apparently some AMI BIOSes in the field which
33     ; put their BEV stack somewhere below 7C00h (and therefore don't
34     ; handle localboot properly), so avoid that immediate memory region.
35     ; The range that is known to be bad is approximately 75E8..7C00; the
36     ; lower bound is tight.
37     ;
38     global STACK_LEN, STACK_TOP, STACK_BASE
39     STACK_LEN equ 4096
40     %if IS_PXELINUX
41     STACK_TOP equ 7000h
42     %else
43     STACK_TOP equ 7c00h
44     %endif
45     STACK_BASE equ STACK_TOP - STACK_LEN
46    
47 niro 532 ; The secondary BSS section, above the text; we really wish we could
48     ; just make it follow .bcopy32 or hang off the end,
49     ; but it doesn't seem to work that way.
50 niro 1133 LATEBSS_START equ 0B800h
51 niro 532
52 niro 1133 ;
53     ; The various sections and their relationship
54     ;
55     ; Use .earlybss for things that MUST be in low memory.
56     section .earlybss nobits
57     section .config write progbits align=4
58     section .replacestub exec write progbits align=16
59 niro 532
60 niro 1133 ; Use .bss for things that doesn't have to be in low memory;
61     ; with .bss1 and .bss2 to offload. .earlybss should be used
62     ; for things that absolutely have to be below 0x7c00.
63     section .bss write nobits align=16
64    
65     %if 0 ; IS_PXELINUX
66     ; Warning here: RBFG build 22 randomly overwrites
67     ; memory location [0x5680,0x576c), possibly more. It
68     ; seems that it gets confused and screws up the
69     ; pointer to its own internal packet buffer and starts
70     ; writing a received ARP packet into low memory.
71     section .rbfg write nobits
72     RBFG_brainfuck: resb 2048 ; Bigger than an Ethernet packet...
73 niro 532 %endif
74    
75 niro 1133 section .bss2 write nobits align=16
76    
77     section .text exec write progbits align=16
78     section .bcopyxx exec write progbits align=16
79     section .data write progbits align=16
80    
81     section .adv write nobits align=512
82    
83     ; .uibss contains bss data which is guaranteed to be
84     ; safe to clobber during the loading of the image. This
85     ; is because while loading the primary image we will clobber
86     ; the spillover from the last fractional sector load.
87     section .uibss write nobits align=16
88    
89     ; Normal bss...
90     section .bss1 write nobits align=16
91    
92     ; Symbols from linker script
93     %macro SECINFO 1
94     extern __%1_start, __%1_lma, __%1_end
95     extern __%1_len, __%1_dwords
96     %endmacro
97     SECINFO config
98     SECINFO replacestub
99    
100     global _start
101    
102     section .text
103    
104 niro 532 ;
105 niro 1133 ; Segment assignments in the bottom 640K
106     ; Keep the low-memory footprint as small as possible... overrun is a hard
107     ; failure!
108 niro 532 ;
109 niro 1133 ; 0000h - main code/data segment (and BIOS segment)
110 niro 532
111 niro 1133 xfer_buf_seg equ 1000h
112     aux_seg equ 2000h
113 niro 532
114 niro 1133 serial_buf_size equ 4096 ; Should be a power of 2
115 niro 532
116 niro 1133 ;
117     ; Contents of aux_seg
118     ;
119     struc aux
120     .fontbuf resb 8192
121     .serial resb serial_buf_size
122 niro 532
123 niro 1133 alignb 4096 ; Align the next segment to 4K
124     endstruc
125 niro 532
126 niro 1133 aux_seg_end equ aux_seg + (aux_size >> 4)
127    
128     ;
129     ; Bounce buffer for I/O to high mem
130     ; Note: we keep all the segments page-aligned, even if that probably
131     ; is somewhat excessive. Sector alignment is obligatory, however.
132     ;
133    
134     %if IS_ISOLINUX
135     ; ISOLINUX doesn't have a block cache yet
136     real_mode_seg equ aux_seg_end
137     %else
138     cache_seg equ aux_seg_end ; 64K area for metadata cache
139     real_mode_seg equ cache_seg + 1000h
140    
141     pktbuf_seg equ cache_seg ; PXELINUX packet buffers
142     %endif
143    
144     comboot_seg equ real_mode_seg ; COMBOOT image loading zone