1*1b1fbbcaSSam Ravnborg/* ld script for sparc32/sparc64 kernel */ 21da177e4SLinus Torvalds 31da177e4SLinus Torvalds#include <asm-generic/vmlinux.lds.h> 4bcbe40ebSSam Ravnborg#include <asm/page.h> 51da177e4SLinus Torvalds 6*1b1fbbcaSSam Ravnborg#ifdef CONFIG_SPARC32 7*1b1fbbcaSSam Ravnborg#define INITIAL_ADDRESS 0x10000 + SIZEOF_HEADERS 8*1b1fbbcaSSam Ravnborg#define TEXTSTART 0xf0004000 9*1b1fbbcaSSam Ravnborg 10*1b1fbbcaSSam Ravnborg#define SMP_CACHE_BYTES_SHIFT 5 11*1b1fbbcaSSam Ravnborg 12*1b1fbbcaSSam Ravnborg#else 13*1b1fbbcaSSam Ravnborg#define SMP_CACHE_BYTES_SHIFT 6 14*1b1fbbcaSSam Ravnborg#define INITIAL_ADDRESS 0x4000 15*1b1fbbcaSSam Ravnborg#define TEXTSTART 0x0000000000404000 16*1b1fbbcaSSam Ravnborg 17*1b1fbbcaSSam Ravnborg#endif 18*1b1fbbcaSSam Ravnborg 19*1b1fbbcaSSam Ravnborg#define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT) 20*1b1fbbcaSSam Ravnborg 21*1b1fbbcaSSam Ravnborg#ifdef CONFIG_SPARC32 221da177e4SLinus TorvaldsOUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc") 231da177e4SLinus TorvaldsOUTPUT_ARCH(sparc) 241da177e4SLinus TorvaldsENTRY(_start) 251da177e4SLinus Torvaldsjiffies = jiffies_64 + 4; 26*1b1fbbcaSSam Ravnborg#else 27*1b1fbbcaSSam Ravnborg/* sparc64 */ 28*1b1fbbcaSSam RavnborgOUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc") 29*1b1fbbcaSSam RavnborgOUTPUT_ARCH(sparc:v9a) 30*1b1fbbcaSSam RavnborgENTRY(_start) 31*1b1fbbcaSSam Ravnborgjiffies = jiffies_64; 32*1b1fbbcaSSam Ravnborg#endif 33*1b1fbbcaSSam Ravnborg 341da177e4SLinus TorvaldsSECTIONS 351da177e4SLinus Torvalds{ 36*1b1fbbcaSSam Ravnborg /* swapper_low_pmd_dir is sparc64 only */ 37*1b1fbbcaSSam Ravnborg swapper_low_pmd_dir = 0x0000000000402000; 38*1b1fbbcaSSam Ravnborg . = INITIAL_ADDRESS; 39*1b1fbbcaSSam Ravnborg .text TEXTSTART : 401da177e4SLinus Torvalds { 41fd593d12SEric W. Biederman _text = .; 425bac287eSAl Viro *(.text.head) 437664709bSSam Ravnborg TEXT_TEXT 441da177e4SLinus Torvalds SCHED_TEXT 451da177e4SLinus Torvalds LOCK_TEXT 46*1b1fbbcaSSam Ravnborg KPROBES_TEXT 471da177e4SLinus Torvalds *(.gnu.warning) 481da177e4SLinus Torvalds } = 0 491da177e4SLinus Torvalds _etext = .; 501da177e4SLinus Torvalds PROVIDE (etext = .); 51*1b1fbbcaSSam Ravnborg 52*1b1fbbcaSSam Ravnborg RO_DATA(PAGE_SIZE) 53bcbe40ebSSam Ravnborg .data : { 54ca967258SSam Ravnborg DATA_DATA 551da177e4SLinus Torvalds CONSTRUCTORS 561da177e4SLinus Torvalds } 57bcbe40ebSSam Ravnborg .data1 : { 58bcbe40ebSSam Ravnborg *(.data1) 59bcbe40ebSSam Ravnborg } 60*1b1fbbcaSSam Ravnborg . = ALIGN(SMP_CACHE_BYTES); 61*1b1fbbcaSSam Ravnborg .data.cacheline_aligned : { 62*1b1fbbcaSSam Ravnborg *(.data.cacheline_aligned) 63*1b1fbbcaSSam Ravnborg } 64*1b1fbbcaSSam Ravnborg . = ALIGN(SMP_CACHE_BYTES); 65*1b1fbbcaSSam Ravnborg .data.read_mostly : { 66*1b1fbbcaSSam Ravnborg *(.data.read_mostly) 67*1b1fbbcaSSam Ravnborg } 681da177e4SLinus Torvalds _edata = .; 691da177e4SLinus Torvalds PROVIDE (edata = .); 70bcbe40ebSSam Ravnborg .fixup : { 711da177e4SLinus Torvalds __start___fixup = .; 72bcbe40ebSSam Ravnborg *(.fixup) 731da177e4SLinus Torvalds __stop___fixup = .; 74bcbe40ebSSam Ravnborg } 75*1b1fbbcaSSam Ravnborg . = ALIGN(16); 76bcbe40ebSSam Ravnborg __ex_table : { 771da177e4SLinus Torvalds __start___ex_table = .; 78bcbe40ebSSam Ravnborg *(__ex_table) 791da177e4SLinus Torvalds __stop___ex_table = .; 80bcbe40ebSSam Ravnborg } 810c0d345eSDavid S. Miller NOTES 820c0d345eSDavid S. Miller 83bcbe40ebSSam Ravnborg . = ALIGN(PAGE_SIZE); 84ab5da288SMartin Habets .init.text : { 85*1b1fbbcaSSam Ravnborg __init_begin = .; 86bcbe40ebSSam Ravnborg _sinittext = .; 8701ba2bdcSSam Ravnborg INIT_TEXT 88ab5da288SMartin Habets _einittext = .; 891da177e4SLinus Torvalds } 90bcbe40ebSSam Ravnborg __init_text_end = .; 91bcbe40ebSSam Ravnborg .init.data : { 9201ba2bdcSSam Ravnborg INIT_DATA 93bcbe40ebSSam Ravnborg } 94bcbe40ebSSam Ravnborg . = ALIGN(16); 95bcbe40ebSSam Ravnborg .init.setup : { 96bcbe40ebSSam Ravnborg __setup_start = .; 97bcbe40ebSSam Ravnborg *(.init.setup) 98bcbe40ebSSam Ravnborg __setup_end = .; 99bcbe40ebSSam Ravnborg } 100bcbe40ebSSam Ravnborg .initcall.init : { 101bcbe40ebSSam Ravnborg __initcall_start = .; 102bcbe40ebSSam Ravnborg INITCALLS 1031da177e4SLinus Torvalds __initcall_end = .; 104bcbe40ebSSam Ravnborg } 105bcbe40ebSSam Ravnborg .con_initcall.init : { 1061da177e4SLinus Torvalds __con_initcall_start = .; 107bcbe40ebSSam Ravnborg *(.con_initcall.init) 1081da177e4SLinus Torvalds __con_initcall_end = .; 109bcbe40ebSSam Ravnborg } 1101da177e4SLinus Torvalds SECURITY_INIT 11167d38229SJean-Paul Saman 112*1b1fbbcaSSam Ravnborg . = ALIGN(4); 113*1b1fbbcaSSam Ravnborg .tsb_ldquad_phys_patch : { 114*1b1fbbcaSSam Ravnborg __tsb_ldquad_phys_patch = .; 115*1b1fbbcaSSam Ravnborg *(.tsb_ldquad_phys_patch) 116*1b1fbbcaSSam Ravnborg __tsb_ldquad_phys_patch_end = .; 117*1b1fbbcaSSam Ravnborg } 118*1b1fbbcaSSam Ravnborg 119*1b1fbbcaSSam Ravnborg .tsb_phys_patch : { 120*1b1fbbcaSSam Ravnborg __tsb_phys_patch = .; 121*1b1fbbcaSSam Ravnborg *(.tsb_phys_patch) 122*1b1fbbcaSSam Ravnborg __tsb_phys_patch_end = .; 123*1b1fbbcaSSam Ravnborg } 124*1b1fbbcaSSam Ravnborg 125*1b1fbbcaSSam Ravnborg .cpuid_patch : { 126*1b1fbbcaSSam Ravnborg __cpuid_patch = .; 127*1b1fbbcaSSam Ravnborg *(.cpuid_patch) 128*1b1fbbcaSSam Ravnborg __cpuid_patch_end = .; 129*1b1fbbcaSSam Ravnborg } 130*1b1fbbcaSSam Ravnborg 131*1b1fbbcaSSam Ravnborg .sun4v_1insn_patch : { 132*1b1fbbcaSSam Ravnborg __sun4v_1insn_patch = .; 133*1b1fbbcaSSam Ravnborg *(.sun4v_1insn_patch) 134*1b1fbbcaSSam Ravnborg __sun4v_1insn_patch_end = .; 135*1b1fbbcaSSam Ravnborg } 136*1b1fbbcaSSam Ravnborg .sun4v_2insn_patch : { 137*1b1fbbcaSSam Ravnborg __sun4v_2insn_patch = .; 138*1b1fbbcaSSam Ravnborg *(.sun4v_2insn_patch) 139*1b1fbbcaSSam Ravnborg __sun4v_2insn_patch_end = .; 140*1b1fbbcaSSam Ravnborg } 141*1b1fbbcaSSam Ravnborg 14267d38229SJean-Paul Saman#ifdef CONFIG_BLK_DEV_INITRD 143bcbe40ebSSam Ravnborg . = ALIGN(PAGE_SIZE); 144bcbe40ebSSam Ravnborg .init.ramfs : { 1451da177e4SLinus Torvalds __initramfs_start = .; 146bcbe40ebSSam Ravnborg *(.init.ramfs) 1471da177e4SLinus Torvalds __initramfs_end = .; 148bcbe40ebSSam Ravnborg } 14967d38229SJean-Paul Saman#endif 15067d38229SJean-Paul Saman 151bcbe40ebSSam Ravnborg PERCPU(PAGE_SIZE) 152*1b1fbbcaSSam Ravnborg 153bcbe40ebSSam Ravnborg . = ALIGN(PAGE_SIZE); 1541da177e4SLinus Torvalds __init_end = .; 1551da177e4SLinus Torvalds __bss_start = .; 156bcbe40ebSSam Ravnborg .sbss : { 157bcbe40ebSSam Ravnborg *(.sbss) 158*1b1fbbcaSSam Ravnborg *(.scommon) 159*1b1fbbcaSSam Ravnborg } 160bcbe40ebSSam Ravnborg .bss : { 1611da177e4SLinus Torvalds *(.dynbss) 1621da177e4SLinus Torvalds *(.bss) 1631da177e4SLinus Torvalds *(COMMON) 1641da177e4SLinus Torvalds } 1651da177e4SLinus Torvalds _end = . ; 1661da177e4SLinus Torvalds PROVIDE (end = .); 167*1b1fbbcaSSam Ravnborg 168bcbe40ebSSam Ravnborg /DISCARD/ : { 16901ba2bdcSSam Ravnborg EXIT_TEXT 17001ba2bdcSSam Ravnborg EXIT_DATA 171bcbe40ebSSam Ravnborg *(.exitcall.exit) 172bcbe40ebSSam Ravnborg } 173d5784b57SDavid S. Miller 174d5784b57SDavid S. Miller STABS_DEBUG 175d5784b57SDavid S. Miller DWARF_DEBUG 1761da177e4SLinus Torvalds} 177