aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc')
-rw-r--r--arch/sparc/Kconfig.debug4
-rw-r--r--arch/sparc/kernel/irq.c12
-rw-r--r--arch/sparc/kernel/of_device.c5
-rw-r--r--arch/sparc/kernel/time.c4
-rw-r--r--arch/sparc/kernel/vmlinux.lds.S165
5 files changed, 110 insertions, 80 deletions
diff --git a/arch/sparc/Kconfig.debug b/arch/sparc/Kconfig.debug
index 120f6b52934..87dd496f15e 100644
--- a/arch/sparc/Kconfig.debug
+++ b/arch/sparc/Kconfig.debug
@@ -1,5 +1,9 @@
1menu "Kernel hacking" 1menu "Kernel hacking"
2 2
3config TRACE_IRQFLAGS_SUPPORT
4 bool
5 default y
6
3source "lib/Kconfig.debug" 7source "lib/Kconfig.debug"
4 8
5config DEBUG_STACK_USAGE 9config DEBUG_STACK_USAGE
diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c
index b76dc03fc31..722d67d3296 100644
--- a/arch/sparc/kernel/irq.c
+++ b/arch/sparc/kernel/irq.c
@@ -56,7 +56,7 @@
56#define SMP_NOP2 56#define SMP_NOP2
57#define SMP_NOP3 57#define SMP_NOP3
58#endif /* SMP */ 58#endif /* SMP */
59unsigned long __local_irq_save(void) 59unsigned long __raw_local_irq_save(void)
60{ 60{
61 unsigned long retval; 61 unsigned long retval;
62 unsigned long tmp; 62 unsigned long tmp;
@@ -74,7 +74,7 @@ unsigned long __local_irq_save(void)
74 return retval; 74 return retval;
75} 75}
76 76
77void local_irq_enable(void) 77void raw_local_irq_enable(void)
78{ 78{
79 unsigned long tmp; 79 unsigned long tmp;
80 80
@@ -89,7 +89,7 @@ void local_irq_enable(void)
89 : "memory"); 89 : "memory");
90} 90}
91 91
92void local_irq_restore(unsigned long old_psr) 92void raw_local_irq_restore(unsigned long old_psr)
93{ 93{
94 unsigned long tmp; 94 unsigned long tmp;
95 95
@@ -105,9 +105,9 @@ void local_irq_restore(unsigned long old_psr)
105 : "memory"); 105 : "memory");
106} 106}
107 107
108EXPORT_SYMBOL(__local_irq_save); 108EXPORT_SYMBOL(__raw_local_irq_save);
109EXPORT_SYMBOL(local_irq_enable); 109EXPORT_SYMBOL(raw_local_irq_enable);
110EXPORT_SYMBOL(local_irq_restore); 110EXPORT_SYMBOL(raw_local_irq_restore);
111 111
112/* 112/*
113 * Dave Redman (djhr@tadpole.co.uk) 113 * Dave Redman (djhr@tadpole.co.uk)
diff --git a/arch/sparc/kernel/of_device.c b/arch/sparc/kernel/of_device.c
index 36383f73d68..fb2caef79ce 100644
--- a/arch/sparc/kernel/of_device.c
+++ b/arch/sparc/kernel/of_device.c
@@ -588,7 +588,10 @@ __setup("of_debug=", of_debug);
588int of_register_driver(struct of_platform_driver *drv, struct bus_type *bus) 588int of_register_driver(struct of_platform_driver *drv, struct bus_type *bus)
589{ 589{
590 /* initialize common driver fields */ 590 /* initialize common driver fields */
591 drv->driver.name = drv->name; 591 if (!drv->driver.name)
592 drv->driver.name = drv->name;
593 if (!drv->driver.owner)
594 drv->driver.owner = drv->owner;
592 drv->driver.bus = bus; 595 drv->driver.bus = bus;
593 596
594 /* register with core */ 597 /* register with core */
diff --git a/arch/sparc/kernel/time.c b/arch/sparc/kernel/time.c
index 6a251332162..4bf78a5e8e0 100644
--- a/arch/sparc/kernel/time.c
+++ b/arch/sparc/kernel/time.c
@@ -347,9 +347,11 @@ static struct of_device_id clock_match[] = {
347}; 347};
348 348
349static struct of_platform_driver clock_driver = { 349static struct of_platform_driver clock_driver = {
350 .name = "clock",
351 .match_table = clock_match, 350 .match_table = clock_match,
352 .probe = clock_probe, 351 .probe = clock_probe,
352 .driver = {
353 .name = "clock",
354 },
353}; 355};
354 356
355 357
diff --git a/arch/sparc/kernel/vmlinux.lds.S b/arch/sparc/kernel/vmlinux.lds.S
index 15109c156e8..a8b4200f9cc 100644
--- a/arch/sparc/kernel/vmlinux.lds.S
+++ b/arch/sparc/kernel/vmlinux.lds.S
@@ -1,6 +1,7 @@
1/* ld script to make SparcLinux kernel */ 1/* ld script to make SparcLinux kernel */
2 2
3#include <asm-generic/vmlinux.lds.h> 3#include <asm-generic/vmlinux.lds.h>
4#include <asm/page.h>
4 5
5OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc") 6OUTPUT_FORMAT("elf32-sparc", "elf32-sparc", "elf32-sparc")
6OUTPUT_ARCH(sparc) 7OUTPUT_ARCH(sparc)
@@ -8,84 +9,104 @@ ENTRY(_start)
8jiffies = jiffies_64 + 4; 9jiffies = jiffies_64 + 4;
9SECTIONS 10SECTIONS
10{ 11{
11 . = 0x10000 + SIZEOF_HEADERS; 12 . = 0x10000 + SIZEOF_HEADERS;
12 .text 0xf0004000 : 13 .text 0xf0004000 :
13 { 14 {
14 _text = .; 15 _text = .;
15 TEXT_TEXT 16 TEXT_TEXT
16 SCHED_TEXT 17 SCHED_TEXT
17 LOCK_TEXT 18 LOCK_TEXT
18 *(.gnu.warning) 19 *(.gnu.warning)
19 } =0 20 } = 0
20 _etext = .; 21 _etext = .;
21 PROVIDE (etext = .); 22 PROVIDE (etext = .);
22 RODATA 23 RODATA
23 .data : 24 .data : {
24 { 25 DATA_DATA
25 DATA_DATA 26 CONSTRUCTORS
26 CONSTRUCTORS 27 }
27 } 28 .data1 : {
28 .data1 : { *(.data1) } 29 *(.data1)
29 _edata = .; 30 }
30 PROVIDE (edata = .); 31 _edata = .;
31 __start___fixup = .; 32 PROVIDE (edata = .);
32 .fixup : { *(.fixup) }
33 __stop___fixup = .;
34 __start___ex_table = .;
35 __ex_table : { *(__ex_table) }
36 __stop___ex_table = .;
37 33
38 NOTES 34 .fixup : {
35 __start___fixup = .;
36 *(.fixup)
37 __stop___fixup = .;
38 }
39 __ex_table : {
40 __start___ex_table = .;
41 *(__ex_table)
42 __stop___ex_table = .;
43 }
39 44
40 . = ALIGN(4096); 45 NOTES
41 __init_begin = .; 46
42 _sinittext = .; 47 . = ALIGN(PAGE_SIZE);
43 .init.text : { 48 __init_begin = .;
44 *(.init.text) 49 .init.text : {
45 } 50 _sinittext = .;
46 _einittext = .; 51 *(.init.text)
47 __init_text_end = .; 52 _einittext = .;
48 .init.data : { *(.init.data) } 53 }
49 . = ALIGN(16); 54 __init_text_end = .;
50 __setup_start = .; 55 .init.data : {
51 .init.setup : { *(.init.setup) } 56 *(.init.data)
52 __setup_end = .; 57 }
53 __initcall_start = .; 58 . = ALIGN(16);
54 .initcall.init : { 59 .init.setup : {
55 INITCALLS 60 __setup_start = .;
56 } 61 *(.init.setup)
57 __initcall_end = .; 62 __setup_end = .;
58 __con_initcall_start = .; 63 }
59 .con_initcall.init : { *(.con_initcall.init) } 64 .initcall.init : {
60 __con_initcall_end = .; 65 __initcall_start = .;
61 SECURITY_INIT 66 INITCALLS
67 __initcall_end = .;
68 }
69 .con_initcall.init : {
70 __con_initcall_start = .;
71 *(.con_initcall.init)
72 __con_initcall_end = .;
73 }
74 SECURITY_INIT
62 75
63#ifdef CONFIG_BLK_DEV_INITRD 76#ifdef CONFIG_BLK_DEV_INITRD
64 . = ALIGN(4096); 77 . = ALIGN(PAGE_SIZE);
65 __initramfs_start = .; 78 .init.ramfs : {
66 .init.ramfs : { *(.init.ramfs) } 79 __initramfs_start = .;
67 __initramfs_end = .; 80 *(.init.ramfs)
81 __initramfs_end = .;
82 }
68#endif 83#endif
69 84
70 PERCPU(4096) 85 PERCPU(PAGE_SIZE)
71 . = ALIGN(4096); 86 . = ALIGN(PAGE_SIZE);
72 __init_end = .; 87 __init_end = .;
73 . = ALIGN(32); 88 . = ALIGN(32);
74 .data.cacheline_aligned : { *(.data.cacheline_aligned) } 89 .data.cacheline_aligned : {
75 90 *(.data.cacheline_aligned)
76 __bss_start = .; 91 }
77 .sbss : { *(.sbss) *(.scommon) }
78 .bss :
79 {
80 *(.dynbss)
81 *(.bss)
82 *(COMMON)
83 }
84 _end = . ;
85 PROVIDE (end = .);
86 /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
87 92
88 STABS_DEBUG 93 __bss_start = .;
94 .sbss : {
95 *(.sbss)
96 *(.scommon) }
97 .bss : {
98 *(.dynbss)
99 *(.bss)
100 *(COMMON)
101 }
102 _end = . ;
103 PROVIDE (end = .);
104 /DISCARD/ : {
105 *(.exit.text)
106 *(.exit.data)
107 *(.exitcall.exit)
108 }
89 109
90 DWARF_DEBUG 110 STABS_DEBUG
111 DWARF_DEBUG
91} 112}