mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
ArmPlatformPkg/ArmJunoPkg: use a rodata symbol for ReferenceAcpiTable
The ACPI .aslc files contain a ReferenceAcpiTable() function whose sole purpose is to ensure that the table itself does not get optimized away. However, when using clang, these dummy functions result in a 4 KB section alignment requirement, which is silly since everything except the .data section is discarded later anyway. So instead, make ReferenceAcpiTable a CONST pointer to VOID*. This way, we still have a .text section, which is mandatory for the PE/COFF conversion, but no executable code with small model relocations that impose additional alignment requirements. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> Tested-by: Leif Lindholm <leif.lindholm@linaro.org> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18194 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
baeddf2b27
commit
9bdf791f7d
@ -55,14 +55,8 @@ EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE Facs = {
|
||||
EFI_ACPI_RESERVED_BYTE }, // UINT8 Reserved1[23]
|
||||
};
|
||||
|
||||
VOID*
|
||||
ReferenceAcpiTable (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
//
|
||||
// Reference the table being generated to prevent the optimizer from removing the
|
||||
// data structure from the executable
|
||||
//
|
||||
return (VOID*)&Facs;
|
||||
}
|
||||
//
|
||||
// Reference the table being generated to prevent the optimizer from removing the
|
||||
// data structure from the executable
|
||||
//
|
||||
VOID* CONST ReferenceAcpiTable = &Facs;
|
||||
|
@ -92,14 +92,8 @@ EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE Fadt = {
|
||||
NULL_GAS // EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg
|
||||
};
|
||||
|
||||
VOID*
|
||||
ReferenceAcpiTable (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
//
|
||||
// Reference the table being generated to prevent the optimizer from removing the
|
||||
// data structure from the executable
|
||||
//
|
||||
return (VOID*)&Fadt;
|
||||
}
|
||||
//
|
||||
// Reference the table being generated to prevent the optimizer from removing the
|
||||
// data structure from the executable
|
||||
//
|
||||
VOID* CONST ReferenceAcpiTable = &Fadt;
|
||||
|
@ -96,14 +96,8 @@
|
||||
};
|
||||
#endif
|
||||
|
||||
VOID*
|
||||
ReferenceAcpiTable (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
//
|
||||
// Reference the table being generated to prevent the optimizer from removing the
|
||||
// data structure from the exeutable
|
||||
//
|
||||
return (VOID*)&Gtdt;
|
||||
}
|
||||
//
|
||||
// Reference the table being generated to prevent the optimizer from removing the
|
||||
// data structure from the executable
|
||||
//
|
||||
VOID* CONST ReferenceAcpiTable = &Gtdt;
|
||||
|
@ -123,14 +123,8 @@
|
||||
};
|
||||
#endif
|
||||
|
||||
VOID*
|
||||
ReferenceAcpiTable (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
//
|
||||
// Reference the table being generated to prevent the optimizer from removing the
|
||||
// data structure from the executable
|
||||
//
|
||||
return (VOID*)&Madt;
|
||||
}
|
||||
//
|
||||
// Reference the table being generated to prevent the optimizer from removing the
|
||||
// data structure from the executable
|
||||
//
|
||||
VOID* CONST ReferenceAcpiTable = &Madt;
|
||||
|
Loading…
x
Reference in New Issue
Block a user