Skip to content

Commit

Permalink
ARM: use LOADADDR() to get load address of sections
Browse files Browse the repository at this point in the history
Use the linker's LOADADDR() macro to get the load address of the
sections, and provide a macro to set the start and end symbols.

Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
  • Loading branch information
Russell King (Oracle) committed Mar 5, 2022
1 parent 04e91b7 commit 8d9d651
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions arch/arm/include/asm/vmlinux.lds.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@
#define ARM_MMU_DISCARD(x) x
#endif

/* Set start/end symbol names to the LMA for the section */
#define ARM_LMA(sym, section) \
sym##_start = LOADADDR(section); \
sym##_end = LOADADDR(section) + SIZEOF(section)

#define PROC_INFO \
. = ALIGN(4); \
__proc_info_begin = .; \
Expand Down Expand Up @@ -110,19 +115,19 @@
* only thing that matters is their relative offsets
*/
#define ARM_VECTORS \
__vectors_start = .; \
__vectors_lma = .; \
.vectors 0xffff0000 : AT(__vectors_start) { \
*(.vectors) \
} \
. = __vectors_start + SIZEOF(.vectors); \
__vectors_end = .; \
ARM_LMA(__vectors, .vectors); \
. = __vectors_lma + SIZEOF(.vectors); \
\
__stubs_start = .; \
.stubs ADDR(.vectors) + 0x1000 : AT(__stubs_start) { \
__stubs_lma = .; \
.stubs ADDR(.vectors) + 0x1000 : AT(__stubs_lma) { \
*(.stubs) \
} \
. = __stubs_start + SIZEOF(.stubs); \
__stubs_end = .; \
ARM_LMA(__stubs, .stubs); \
. = __stubs_lma + SIZEOF(.stubs); \
\
PROVIDE(vector_fiq_offset = vector_fiq - ADDR(.vectors));

Expand Down

0 comments on commit 8d9d651

Please sign in to comment.