arch/powerpc/kernel/vmlinux.lds.S

Source file repositories/reference/linux-study-clean/arch/powerpc/kernel/vmlinux.lds.S

File Facts

System
Linux kernel
Corpus path
arch/powerpc/kernel/vmlinux.lds.S
Extension
.S
Size
9184 bytes
Lines
415
Domain
Architecture Layer
Bucket
arch/powerpc
Inferred role
Architecture Layer: arch/powerpc
Status
atlas-only

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

#define BSS_FIRST_SECTIONS *(.bss.prominit)
#define EMITS_PT_NOTE
#define RO_EXCEPTION_TABLE_ALIGN	0
#define RUNTIME_DISCARD_EXIT

#define SOFT_MASK_TABLE(align)						\
	. = ALIGN(align);						\
	__soft_mask_table : AT(ADDR(__soft_mask_table) - LOAD_OFFSET) {	\
		__start___soft_mask_table = .;				\
		KEEP(*(__soft_mask_table))				\
		__stop___soft_mask_table = .;				\
	}

#define RESTART_TABLE(align)						\
	. = ALIGN(align);						\
	__restart_table : AT(ADDR(__restart_table) - LOAD_OFFSET) {	\
		__start___restart_table = .;				\
		KEEP(*(__restart_table))				\
		__stop___restart_table = .;				\
	}

#include <asm/page.h>
#include <asm-generic/vmlinux.lds.h>
#include <asm/cache.h>
#include <asm/thread_info.h>

#define STRICT_ALIGN_SIZE	(1 << CONFIG_DATA_SHIFT)

#if STRICT_ALIGN_SIZE < PAGE_SIZE
#error "CONFIG_DATA_SHIFT must be >= PAGE_SHIFT"
#endif

ENTRY(_stext)

PHDRS {
	text PT_LOAD FLAGS(7); /* RWX */
	note PT_NOTE FLAGS(0);
}

#ifdef CONFIG_PPC64
OUTPUT_ARCH(powerpc:common64)
jiffies = jiffies_64;
#else
OUTPUT_ARCH(powerpc:common)
jiffies = jiffies_64 + 4;
#endif
SECTIONS
{
	. = KERNELBASE;

/*
 * Text, read only data and other permanent read-only sections
 */

	_text = .;
	_stext = .;

	/*
	 * Head text.
	 * This needs to be in its own output section to avoid ld placing
	 * branch trampoline stubs randomly throughout the fixed sections,
	 * which it will do (even if the branch comes from another section)
	 * in order to optimize stub generation.
	 */
	.head.text : AT(ADDR(.head.text) - LOAD_OFFSET) {
#ifdef CONFIG_PPC64
		KEEP(*(.head.text.first_256B));
#ifdef CONFIG_PPC_BOOK3E_64
#else
		KEEP(*(.head.text.real_vectors));

Annotation

Implementation Notes