mirror of
https://github.com/ipxe/ipxe
synced 2025-12-31 06:49:20 +03:00
Initial revision
This commit is contained in:
65
src/arch/i386/core/start16z.lds
Normal file
65
src/arch/i386/core/start16z.lds
Normal file
@@ -0,0 +1,65 @@
|
||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
||||
OUTPUT_ARCH(i386)
|
||||
|
||||
/* Linker-generated symbols are prefixed with a double underscore.
|
||||
* Decompressor symbols are prefixed with __decompressor_. All other
|
||||
* symbols are the same as in the original object file, i.e. the
|
||||
* runtime addresses.
|
||||
*/
|
||||
|
||||
ENTRY(_start16)
|
||||
|
||||
SECTIONS {
|
||||
.text : {
|
||||
*(.text)
|
||||
}
|
||||
.payload : {
|
||||
__payload_start = .;
|
||||
*(.data)
|
||||
__payload_end = .;
|
||||
}
|
||||
|
||||
/* _payload_size is the size of the binary image appended to
|
||||
* start16, in bytes.
|
||||
*/
|
||||
__payload_size = __payload_end - __payload_start ;
|
||||
|
||||
/* _size is the size of the runtime image
|
||||
* (start32 + the C code), in bytes.
|
||||
*/
|
||||
__size = _end - _start ;
|
||||
|
||||
/* _decompressor_size is the size of the decompressor, in
|
||||
* bytes. For a non-compressed image, start16.lds sets
|
||||
* _decompressor_uncompressed = _decompressor__start = 0.
|
||||
*/
|
||||
__decompressor_size = __decompressor_uncompressed - __decompressor__start ;
|
||||
|
||||
/* image__size is the total size of the image, after
|
||||
* decompression and including the decompressor if applicable.
|
||||
* It is therefore the amount of memory that start16's payload
|
||||
* needs in order to execute, in bytes.
|
||||
*/
|
||||
__image_size = __size + __decompressor_size ;
|
||||
|
||||
/* Amount to add to runtime symbols to obtain the offset of
|
||||
* that symbol within the image.
|
||||
*/
|
||||
__offset_adjust = __decompressor_size - _start ;
|
||||
|
||||
/* Calculations for the stack
|
||||
*/
|
||||
__stack_size = _estack - _stack ;
|
||||
__offset_stack = _stack + __offset_adjust ;
|
||||
|
||||
/* Some symbols will be larger than 16 bits but guaranteed to
|
||||
* be multiples of 16. We calculate them in paragraphs and
|
||||
* export these symbols which can be used in 16-bit code
|
||||
* without risk of overflow.
|
||||
*/
|
||||
__image_size_pgh = ( __image_size / 16 );
|
||||
__start_pgh = ( _start / 16 );
|
||||
__decompressor_size_pgh = ( __decompressor_size / 16 );
|
||||
__offset_stack_pgh = ( __offset_stack / 16 );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user