| Sam Ravnborg | 1b1fbbc | 2008-11-29 21:44:32 -0800 | [diff] [blame] | 1 | /* ld script for sparc32/sparc64 kernel */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 2 |  | 
|  | 3 | #include <asm-generic/vmlinux.lds.h> | 
| Sam Ravnborg | b74e34d | 2008-12-27 00:34:41 -0800 | [diff] [blame] | 4 |  | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 5 | #include <asm/page.h> | 
| Sam Ravnborg | b74e34d | 2008-12-27 00:34:41 -0800 | [diff] [blame] | 6 | #include <asm/thread_info.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 7 |  | 
| Sam Ravnborg | 1b1fbbc | 2008-11-29 21:44:32 -0800 | [diff] [blame] | 8 | #ifdef CONFIG_SPARC32 | 
|  | 9 | #define INITIAL_ADDRESS  0x10000 + SIZEOF_HEADERS | 
|  | 10 | #define TEXTSTART	0xf0004000 | 
|  | 11 |  | 
|  | 12 | #define SMP_CACHE_BYTES_SHIFT 5 | 
|  | 13 |  | 
|  | 14 | #else | 
|  | 15 | #define SMP_CACHE_BYTES_SHIFT 6 | 
|  | 16 | #define INITIAL_ADDRESS 0x4000 | 
|  | 17 | #define TEXTSTART      0x0000000000404000 | 
|  | 18 |  | 
|  | 19 | #endif | 
|  | 20 |  | 
|  | 21 | #define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT) | 
|  | 22 |  | 
|  | 23 | #ifdef CONFIG_SPARC32 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 24 | OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc") | 
|  | 25 | OUTPUT_ARCH(sparc) | 
|  | 26 | ENTRY(_start) | 
|  | 27 | jiffies = jiffies_64 + 4; | 
| Sam Ravnborg | 1b1fbbc | 2008-11-29 21:44:32 -0800 | [diff] [blame] | 28 | #else | 
|  | 29 | /* sparc64 */ | 
|  | 30 | OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc") | 
|  | 31 | OUTPUT_ARCH(sparc:v9a) | 
|  | 32 | ENTRY(_start) | 
|  | 33 | jiffies = jiffies_64; | 
|  | 34 | #endif | 
|  | 35 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 36 | SECTIONS | 
|  | 37 | { | 
| Sam Ravnborg | 1b1fbbc | 2008-11-29 21:44:32 -0800 | [diff] [blame] | 38 | /* swapper_low_pmd_dir is sparc64 only */ | 
|  | 39 | swapper_low_pmd_dir = 0x0000000000402000; | 
|  | 40 | . = INITIAL_ADDRESS; | 
|  | 41 | .text TEXTSTART : | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 42 | { | 
|  | 43 | _text = .; | 
| Tim Abbott | ce8a742 | 2009-04-25 22:11:08 -0400 | [diff] [blame] | 44 | HEAD_TEXT | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 45 | TEXT_TEXT | 
|  | 46 | SCHED_TEXT | 
|  | 47 | LOCK_TEXT | 
| Sam Ravnborg | 1b1fbbc | 2008-11-29 21:44:32 -0800 | [diff] [blame] | 48 | KPROBES_TEXT | 
| David S. Miller | 9960e9e | 2010-04-07 04:41:33 -0700 | [diff] [blame] | 49 | IRQENTRY_TEXT | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 50 | *(.gnu.warning) | 
|  | 51 | } = 0 | 
|  | 52 | _etext = .; | 
| Sam Ravnborg | 1b1fbbc | 2008-11-29 21:44:32 -0800 | [diff] [blame] | 53 |  | 
|  | 54 | RO_DATA(PAGE_SIZE) | 
| David S. Miller | 8b8d8e2 | 2010-04-09 00:14:35 -0700 | [diff] [blame] | 55 |  | 
|  | 56 | /* Start of data section */ | 
|  | 57 | _sdata = .; | 
|  | 58 |  | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 59 | .data1 : { | 
|  | 60 | *(.data1) | 
|  | 61 | } | 
| Geoffrey Thomas | 3240a77 | 2009-09-18 15:52:09 -0400 | [diff] [blame] | 62 | RW_DATA_SECTION(SMP_CACHE_BYTES, 0, THREAD_SIZE) | 
|  | 63 |  | 
| Sam Ravnborg | b74e34d | 2008-12-27 00:34:41 -0800 | [diff] [blame] | 64 | /* End of data section */ | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 65 | _edata = .; | 
| Sam Ravnborg | b74e34d | 2008-12-27 00:34:41 -0800 | [diff] [blame] | 66 |  | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 67 | .fixup : { | 
|  | 68 | __start___fixup = .; | 
|  | 69 | *(.fixup) | 
|  | 70 | __stop___fixup = .; | 
|  | 71 | } | 
| Geoffrey Thomas | 3240a77 | 2009-09-18 15:52:09 -0400 | [diff] [blame] | 72 | EXCEPTION_TABLE(16) | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 73 | NOTES | 
|  | 74 |  | 
|  | 75 | . = ALIGN(PAGE_SIZE); | 
| Geoffrey Thomas | 3240a77 | 2009-09-18 15:52:09 -0400 | [diff] [blame] | 76 | __init_begin = ALIGN(PAGE_SIZE); | 
|  | 77 | INIT_TEXT_SECTION(PAGE_SIZE) | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 78 | __init_text_end = .; | 
| Geoffrey Thomas | 3240a77 | 2009-09-18 15:52:09 -0400 | [diff] [blame] | 79 | INIT_DATA_SECTION(16) | 
| Jean-Paul Saman | 67d3822 | 2007-02-10 01:44:44 -0800 | [diff] [blame] | 80 |  | 
| Sam Ravnborg | 1b1fbbc | 2008-11-29 21:44:32 -0800 | [diff] [blame] | 81 | . = ALIGN(4); | 
|  | 82 | .tsb_ldquad_phys_patch : { | 
|  | 83 | __tsb_ldquad_phys_patch = .; | 
|  | 84 | *(.tsb_ldquad_phys_patch) | 
|  | 85 | __tsb_ldquad_phys_patch_end = .; | 
|  | 86 | } | 
|  | 87 |  | 
|  | 88 | .tsb_phys_patch : { | 
|  | 89 | __tsb_phys_patch = .; | 
|  | 90 | *(.tsb_phys_patch) | 
|  | 91 | __tsb_phys_patch_end = .; | 
|  | 92 | } | 
|  | 93 |  | 
|  | 94 | .cpuid_patch : { | 
|  | 95 | __cpuid_patch = .; | 
|  | 96 | *(.cpuid_patch) | 
|  | 97 | __cpuid_patch_end = .; | 
|  | 98 | } | 
|  | 99 |  | 
|  | 100 | .sun4v_1insn_patch : { | 
|  | 101 | __sun4v_1insn_patch = .; | 
|  | 102 | *(.sun4v_1insn_patch) | 
|  | 103 | __sun4v_1insn_patch_end = .; | 
|  | 104 | } | 
|  | 105 | .sun4v_2insn_patch : { | 
|  | 106 | __sun4v_2insn_patch = .; | 
|  | 107 | *(.sun4v_2insn_patch) | 
|  | 108 | __sun4v_2insn_patch_end = .; | 
|  | 109 | } | 
| David S. Miller | 9076d0e | 2011-08-05 00:53:57 -0700 | [diff] [blame] | 110 | .swapper_tsb_phys_patch : { | 
|  | 111 | __swapper_tsb_phys_patch = .; | 
|  | 112 | *(.swapper_tsb_phys_patch) | 
|  | 113 | __swapper_tsb_phys_patch_end = .; | 
|  | 114 | } | 
|  | 115 | .swapper_4m_tsb_phys_patch : { | 
|  | 116 | __swapper_4m_tsb_phys_patch = .; | 
|  | 117 | *(.swapper_4m_tsb_phys_patch) | 
|  | 118 | __swapper_4m_tsb_phys_patch_end = .; | 
|  | 119 | } | 
| David S. Miller | ef7c4d4 | 2011-07-29 09:42:07 -0700 | [diff] [blame] | 120 | .popc_3insn_patch : { | 
|  | 121 | __popc_3insn_patch = .; | 
|  | 122 | *(.popc_3insn_patch) | 
|  | 123 | __popc_3insn_patch_end = .; | 
|  | 124 | } | 
| David S. Miller | 56d205c | 2011-08-02 20:23:34 -0700 | [diff] [blame] | 125 | .popc_6insn_patch : { | 
|  | 126 | __popc_6insn_patch = .; | 
|  | 127 | *(.popc_6insn_patch) | 
|  | 128 | __popc_6insn_patch_end = .; | 
|  | 129 | } | 
| Tejun Heo | 0415b00 | 2011-03-24 18:50:09 +0100 | [diff] [blame] | 130 | PERCPU_SECTION(SMP_CACHE_BYTES) | 
| Sam Ravnborg | 1b1fbbc | 2008-11-29 21:44:32 -0800 | [diff] [blame] | 131 |  | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 132 | . = ALIGN(PAGE_SIZE); | 
|  | 133 | __init_end = .; | 
| Geoffrey Thomas | 3240a77 | 2009-09-18 15:52:09 -0400 | [diff] [blame] | 134 | BSS_SECTION(0, 0, 0) | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 135 | _end = . ; | 
| Sam Ravnborg | 1b1fbbc | 2008-11-29 21:44:32 -0800 | [diff] [blame] | 136 |  | 
| Sam Ravnborg | bcbe40e | 2007-09-17 19:02:30 -0700 | [diff] [blame] | 137 | STABS_DEBUG | 
|  | 138 | DWARF_DEBUG | 
| Tejun Heo | 023bf6f | 2009-07-09 11:27:40 +0900 | [diff] [blame] | 139 |  | 
|  | 140 | DISCARDS | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 141 | } |