| #include "elf.h" |
| |
| .arch i386 |
| .section ".prefix", "a", @progbits |
| |
| #define LOAD_ADDR 0x10000 |
| |
| /* ELF Header */ |
| .globl elf_header |
| elf_header: |
| e_ident: .byte 0x7f, 'E', 'L', 'F', 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 |
| e_type: .short ET_EXEC |
| e_machine: .short EM_386 |
| e_version: .long 1 |
| e_entry: .long LOAD_ADDR + _start - elf_header |
| e_phoff: .long elf_program_header - elf_header |
| e_shoff: .long 0 |
| e_flags: .long 0 |
| e_ehsize: .short elf_header_end - elf_header |
| e_phentsize: .short ELF32_PHDR_SIZE |
| e_phnum: .short (elf_program_header_end - elf_program_header)/ELF32_PHDR_SIZE |
| e_shentsize: .short 0 |
| e_shnum: .short 0 |
| e_shstrndx: .short 0 |
| elf_header_end: |
| |
| elf_program_header: |
| phdr1_p_type: .long PT_NOTE |
| phdr1_p_offset: .long elf_note - elf_header |
| phdr1_p_vaddr: .long elf_note |
| phdr1_p_paddr: .long elf_note |
| phdr1_p_filesz: .long elf_note_end - elf_note |
| phdr1_p_memsz: .long elf_note_end - elf_note |
| phdr1_p_flags: .long PF_R | PF_W | PF_X |
| phdr1_p_align: .long 0 |
| |
| /* The decompressor */ |
| phdr2_p_type: .long PT_LOAD |
| phdr2_p_offset: .long 0 |
| phdr2_p_vaddr: .long elf_header |
| phdr2_p_paddr: .long LOAD_ADDR |
| phdr2_p_filesz: .long _verbatim_size |
| phdr2_p_memsz: .long _image_size |
| phdr2_p_flags: .long PF_R | PF_W | PF_X |
| phdr2_p_align: .long 16 |
| |
| elf_program_header_end: |
| |
| .globl elf_note |
| elf_note: |
| .balign 4 |
| .int 2f - 1f |
| .int 4f - 3f |
| .int EIN_PROGRAM_NAME |
| 1: .asciz "ELFBoot" |
| 2: |
| .balign 4 |
| 3: |
| .asciz "Etherboot" |
| 4: |
| |
| |
| .balign 4 |
| .int 2f - 1f |
| .int 4f - 3f |
| .int EIN_PROGRAM_VERSION |
| 1: .asciz "ELFBoot" |
| 2: |
| .balign 4 |
| 3: |
| .asciz VERSION |
| 4: |
| |
| #if 0 |
| .balign 4 |
| .int 2f - 1f |
| .int 4f - 3f |
| .int EIN_PROGRAM_CHECKSUM |
| 1: .asciz "ELFBoot" |
| 2: |
| .balign 4 |
| 3: |
| .word 0 |
| 4: |
| #endif |
| .balign 4 |
| elf_note_end: |
| |
| /* Dummy routines to satisfy the build */ |
| .section ".text16", "ax", @progbits |
| prefix_exit: |
| |
| prefix_exit_end: |
| .previous |