mirror of
https://github.com/memtest86plus/memtest86plus.git
synced 2026-10-14 01:42:03 -05:00
1 parent
badcf8a57c
commit
dae548f804
5 files changed
+83
-9
No files matched your search
+22
-1
@@ -10,6 +10,7 @@
|
||||
#define __ASSEMBLY__
|
||||
|
||||
#include "boot.h"
|
||||
#include "build_version.h"
|
||||
#include "peimage.h"
|
||||
|
||||
# The EFI loader loads the header at ImageBase, so we have to locate the main program
|
||||
@@ -36,7 +37,7 @@ pe_header:
|
||||
|
||||
coff_header:
|
||||
.short IMAGE_FILE_MACHINE_LOONGARCH64 # Machine (LoongArch64)
|
||||
.short 4 # NumberOfSections
|
||||
.short 5 # NumberOfSections
|
||||
.long 0 # TimeDateStamp
|
||||
.long 0 # PointerToSymbolTable
|
||||
.long 0 # NumberOfSymbols
|
||||
@@ -159,6 +160,20 @@ section_table:
|
||||
.long IMAGE_SCN_MEM_READ \
|
||||
| IMAGE_SCN_CNT_INITIALIZED_DATA # Characteristics (section flags)
|
||||
|
||||
.ascii ".osrel"
|
||||
.byte 0
|
||||
.byte 0
|
||||
.long _virt_osrel_size # VirtualSize
|
||||
.long _virt_osrel_start # VirtualAddress
|
||||
.long _file_osrel_size # SizeOfRawData
|
||||
.long _file_osrel_start # PointerToRawData
|
||||
.long 0 # PointerToRelocations
|
||||
.long 0 # PointerToLineNumbers
|
||||
.short 0 # NumberOfRelocations
|
||||
.short 0 # NumberOfLineNumbers
|
||||
.long IMAGE_SCN_MEM_READ \
|
||||
| IMAGE_SCN_CNT_INITIALIZED_DATA # Characteristics (section flags)
|
||||
|
||||
.org 512
|
||||
|
||||
.section ".reloc"
|
||||
@@ -168,3 +183,9 @@ section_table:
|
||||
|
||||
.section ".sbat", "a", @progbits
|
||||
.incbin "../boot/sbat.csv"
|
||||
|
||||
.section ".osrel", "a", @progbits
|
||||
.ascii "ID=memtest86plus\n"
|
||||
.ascii "NAME=\"Memtest86+\"\n"
|
||||
.ascii "VERSION_ID=\"" , MT_VERSION , "\"\n"
|
||||
.ascii "PRETTY_NAME=\"Memtest86+ v" , MT_VERSION , "\"\n"
|
||||
+21
-1
@@ -805,7 +805,7 @@ coff_header:
|
||||
#else
|
||||
.word IMAGE_FILE_MACHINE_I386 # Machine (i386)
|
||||
#endif
|
||||
.word 4 # NumberOfSections
|
||||
.word 5 # NumberOfSections
|
||||
.long 0 # TimeDateStamp
|
||||
.long 0 # PointerToSymbolTable
|
||||
.long 0 # NumberOfSymbols
|
||||
@@ -954,6 +954,20 @@ section_table:
|
||||
.long IMAGE_SCN_MEM_READ \
|
||||
| IMAGE_SCN_CNT_INITIALIZED_DATA # Characteristics (section flags)
|
||||
|
||||
.ascii ".osrel"
|
||||
.byte 0
|
||||
.byte 0
|
||||
.long _virt_osrel_size # VirtualSize
|
||||
.long _virt_osrel_start # VirtualAddress
|
||||
.long _file_osrel_size # SizeOfRawData
|
||||
.long _file_osrel_start # PointerToRawData
|
||||
.long 0 # PointerToRelocations
|
||||
.long 0 # PointerToLineNumbers
|
||||
.word 0 # NumberOfRelocations
|
||||
.word 0 # NumberOfLineNumbers
|
||||
.long IMAGE_SCN_MEM_READ \
|
||||
| IMAGE_SCN_CNT_INITIALIZED_DATA # Characteristics (section flags)
|
||||
|
||||
# Pad to the declared size.
|
||||
.org (SETUP_SECS*512)
|
||||
|
||||
@@ -964,3 +978,9 @@ section_table:
|
||||
|
||||
.section ".sbat", "a", @progbits
|
||||
.incbin "../boot/sbat.csv"
|
||||
|
||||
.section ".osrel", "a", @progbits
|
||||
.ascii "ID=memtest86plus\n"
|
||||
.ascii "NAME=\"Memtest86+\"\n"
|
||||
.ascii "VERSION_ID=\"" , MT_VERSION , "\"\n"
|
||||
.ascii "PRETTY_NAME=\"Memtest86+ v" , MT_VERSION , "\"\n"
|
||||
@@ -39,6 +39,13 @@ SECTIONS {
|
||||
. = ALIGN(512);
|
||||
_file_sbat_end = . ;
|
||||
}
|
||||
.osrel : {
|
||||
_file_osrel_start = . ;
|
||||
*(.osrel)
|
||||
_real_osrel_end = . ;
|
||||
. = ALIGN(512);
|
||||
_file_osrel_end = . ;
|
||||
}
|
||||
.shstrtab : { *(.shstrtab) }
|
||||
/DISCARD/ : { *(*) }
|
||||
|
||||
@@ -46,12 +53,14 @@ SECTIONS {
|
||||
_real_data_size = _real_data_end - _file_data_start;
|
||||
_real_reloc_size = _real_reloc_end - _file_reloc_start;
|
||||
_real_sbat_size = _real_sbat_end - _file_sbat_start;
|
||||
_real_osrel_size = _real_osrel_end - _file_osrel_start;
|
||||
|
||||
_file_head_size = _file_text_start;
|
||||
_file_text_size = _file_text_end - _file_text_start;
|
||||
_file_data_size = _file_data_end - _file_data_start;
|
||||
_file_reloc_size = _file_reloc_end - _file_reloc_start;
|
||||
_file_sbat_size = _file_sbat_end - _file_sbat_start;
|
||||
_file_osrel_size = _file_osrel_end - _file_osrel_start;
|
||||
|
||||
_sys_size = (_real_text_size + _real_data_size + 15) >> 4;
|
||||
_init_size = _real_text_size + _real_data_size + _bss_size;
|
||||
@@ -61,15 +70,17 @@ SECTIONS {
|
||||
_virt_data_size = ((_real_data_size + _bss_size + 4095) >> 12) << 12;
|
||||
_virt_reloc_size = ((_file_reloc_size + 4095) >> 12) << 12;
|
||||
_virt_sbat_size = ((_file_sbat_size + 4095) >> 12) << 12;
|
||||
_virt_osrel_size = ((_file_osrel_size + 4095) >> 12) << 12;
|
||||
|
||||
_virt_text_start = _virt_head_size;
|
||||
_virt_data_start = _virt_text_start + _virt_text_size;
|
||||
_virt_reloc_start = _virt_data_start + _virt_data_size;
|
||||
_virt_sbat_start = _virt_reloc_start + _virt_reloc_size;
|
||||
_virt_osrel_start = _virt_sbat_start + _virt_sbat_size;
|
||||
|
||||
_virt_img_size = _virt_sbat_start + _virt_sbat_size;
|
||||
_virt_img_size = _virt_osrel_start + _virt_osrel_size;
|
||||
|
||||
_virt_init_size = _virt_data_size + _virt_reloc_size + _virt_sbat_size;
|
||||
_virt_init_size = _virt_data_size + _virt_reloc_size + _virt_sbat_size + _virt_osrel_size;
|
||||
|
||||
. = ASSERT(header == 0x202, "The setup header has the wrong offset!");
|
||||
. = ASSERT(_file_text_start == 0x1000, "The .text is at the wrong offset!");
|
||||
|
||||
@@ -36,6 +36,13 @@ SECTIONS {
|
||||
. = ALIGN(512);
|
||||
_file_sbat_end = . ;
|
||||
}
|
||||
.osrel : {
|
||||
_file_osrel_start = . ;
|
||||
*(.osrel)
|
||||
_real_osrel_end = . ;
|
||||
. = ALIGN(512);
|
||||
_file_osrel_end = . ;
|
||||
}
|
||||
.shstrtab : { *(.shstrtab) }
|
||||
/DISCARD/ : { *(*) }
|
||||
|
||||
@@ -43,12 +50,14 @@ SECTIONS {
|
||||
_real_data_size = _real_data_end - _file_data_start;
|
||||
_real_reloc_size = _real_reloc_end - _file_reloc_start;
|
||||
_real_sbat_size = _real_sbat_end - _file_sbat_start;
|
||||
_real_osrel_size = _real_osrel_end - _file_osrel_start;
|
||||
|
||||
_file_head_size = _file_text_start;
|
||||
_file_text_size = _file_text_end - _file_text_start;
|
||||
_file_data_size = _file_data_end - _file_data_start;
|
||||
_file_reloc_size = _file_reloc_end - _file_reloc_start;
|
||||
_file_sbat_size = _file_sbat_end - _file_sbat_start;
|
||||
_file_osrel_size = _file_osrel_end - _file_osrel_start;
|
||||
|
||||
_sys_size = (_real_text_size + _real_data_size + 15) >> 4;
|
||||
_init_size = _real_text_size + _real_data_size + _bss_size;
|
||||
@@ -58,13 +67,15 @@ SECTIONS {
|
||||
_virt_data_size = ((_real_data_size + _bss_size + 4095) >> 12) << 12;
|
||||
_virt_reloc_size = ((_file_reloc_size + 4095) >> 12) << 12;
|
||||
_virt_sbat_size = ((_file_sbat_size + 4095) >> 12) << 12;
|
||||
_virt_osrel_size = ((_file_osrel_size + 4095) >> 12) << 12;
|
||||
|
||||
_virt_text_start = _virt_head_size;
|
||||
_virt_data_start = _virt_text_start + _virt_text_size;
|
||||
_virt_reloc_start = _virt_data_start + _virt_data_size;
|
||||
_virt_sbat_start = _virt_reloc_start + _virt_reloc_size;
|
||||
_virt_osrel_start = _virt_sbat_start + _virt_sbat_size;
|
||||
|
||||
_virt_img_size = _virt_sbat_start + _virt_sbat_size;
|
||||
_virt_img_size = _virt_osrel_start + _virt_osrel_size;
|
||||
|
||||
_virt_init_size = _virt_data_size + _virt_reloc_size + _virt_sbat_size;
|
||||
_virt_init_size = _virt_data_size + _virt_reloc_size + _virt_sbat_size + _virt_osrel_size;
|
||||
}
|
||||
@@ -39,6 +39,13 @@ SECTIONS {
|
||||
. = ALIGN(512);
|
||||
_file_sbat_end = . ;
|
||||
}
|
||||
.osrel : {
|
||||
_file_osrel_start = . ;
|
||||
*(.osrel)
|
||||
_real_osrel_end = . ;
|
||||
. = ALIGN(512);
|
||||
_file_osrel_end = . ;
|
||||
}
|
||||
.shstrtab : { *(.shstrtab) }
|
||||
/DISCARD/ : { *(*) }
|
||||
|
||||
@@ -46,12 +53,14 @@ SECTIONS {
|
||||
_real_data_size = _real_data_end - _file_data_start;
|
||||
_real_reloc_size = _real_reloc_end - _file_reloc_start;
|
||||
_real_sbat_size = _real_sbat_end - _file_sbat_start;
|
||||
_real_osrel_size = _real_osrel_end - _file_osrel_start;
|
||||
|
||||
_file_head_size = _file_text_start;
|
||||
_file_text_size = _file_text_end - _file_text_start;
|
||||
_file_data_size = _file_data_end - _file_data_start;
|
||||
_file_reloc_size = _file_reloc_end - _file_reloc_start;
|
||||
_file_sbat_size = _file_sbat_end - _file_sbat_start;
|
||||
_file_osrel_size = _file_osrel_end - _file_osrel_start;
|
||||
|
||||
_sys_size = (_real_text_size + _real_data_size + 15) >> 4;
|
||||
_init_size = _real_text_size + _real_data_size + _bss_size;
|
||||
@@ -60,16 +69,18 @@ SECTIONS {
|
||||
_virt_text_size = ((_real_text_size + 4095) >> 12) << 12;
|
||||
_virt_data_size = ((_real_data_size + _bss_size + 4095) >> 12) << 12;
|
||||
_virt_reloc_size = ((_file_reloc_size + 4095) >> 12) << 12;
|
||||
_virt_sbat_size = _real_sbat_size;
|
||||
_virt_sbat_size = ((_file_sbat_size + 4095) >> 12) << 12;
|
||||
_virt_osrel_size = ((_file_osrel_size + 4095) >> 12) << 12;
|
||||
|
||||
_virt_text_start = _virt_head_size;
|
||||
_virt_data_start = _virt_text_start + _virt_text_size;
|
||||
_virt_reloc_start = _virt_data_start + _virt_data_size;
|
||||
_virt_sbat_start = _virt_reloc_start + _virt_reloc_size;
|
||||
_virt_osrel_start = _virt_sbat_start + _virt_sbat_size;
|
||||
|
||||
_virt_img_size = ((_virt_sbat_start + _virt_sbat_size + 4095) >> 12) << 12;
|
||||
_virt_img_size = ((_virt_osrel_start + _virt_osrel_size + 4095) >> 12) << 12;
|
||||
|
||||
_virt_init_size = _virt_data_size + _virt_reloc_size + _virt_sbat_size;
|
||||
_virt_init_size = _virt_data_size + _virt_reloc_size + _virt_sbat_size + _virt_osrel_size;
|
||||
|
||||
. = ASSERT(header == 0x202, "The setup header has the wrong offset!");
|
||||
. = ASSERT(_file_text_start == 0x1000, "The .text is at the wrong offset!");
|
||||
|
||||
Reference in new issue
Block a user