diff options
-rw-r--r-- | arch/sparc64/kernel/etrap.S | 4 | ||||
-rw-r--r-- | arch/sparc64/kernel/ktlb.S | 4 | ||||
-rw-r--r-- | arch/sparc64/kernel/rtrap.S | 4 | ||||
-rw-r--r-- | arch/sparc64/kernel/setup.c | 16 | ||||
-rw-r--r-- | arch/sparc64/kernel/tsb.S | 12 | ||||
-rw-r--r-- | arch/sparc64/kernel/vmlinux.lds.S | 12 | ||||
-rw-r--r-- | arch/sparc64/mm/ultra.S | 4 | ||||
-rw-r--r-- | include/asm-sparc64/cpudata.h | 11 |
8 files changed, 35 insertions, 32 deletions
diff --git a/arch/sparc64/kernel/etrap.S b/arch/sparc64/kernel/etrap.S index 4d644949ad49..d8c062a1700c 100644 --- a/arch/sparc64/kernel/etrap.S +++ b/arch/sparc64/kernel/etrap.S | |||
@@ -105,7 +105,7 @@ etrap_save: save %g2, -STACK_BIAS, %sp | |||
105 | 105 | ||
106 | /* Go to trap time globals so we can save them. */ | 106 | /* Go to trap time globals so we can save them. */ |
107 | 661: wrpr %g0, ETRAP_PSTATE1, %pstate | 107 | 661: wrpr %g0, ETRAP_PSTATE1, %pstate |
108 | .section .gl_1insn_patch, "ax" | 108 | .section .sun4v_1insn_patch, "ax" |
109 | .word 661b | 109 | .word 661b |
110 | SET_GL(0) | 110 | SET_GL(0) |
111 | .previous | 111 | .previous |
@@ -206,7 +206,7 @@ etraptl1: /* Save tstate/tpc/tnpc of TL 1-->4 and the tl register itself. | |||
206 | 206 | ||
207 | wrpr %g0, 1, %tl | 207 | wrpr %g0, 1, %tl |
208 | 661: nop | 208 | 661: nop |
209 | .section .gl_1insn_patch, "ax" | 209 | .section .sun4v_1insn_patch, "ax" |
210 | .word 661b | 210 | .word 661b |
211 | SET_GL(1) | 211 | SET_GL(1) |
212 | .previous | 212 | .previous |
diff --git a/arch/sparc64/kernel/ktlb.S b/arch/sparc64/kernel/ktlb.S index 2e55084a0c12..f6bb2e08964a 100644 --- a/arch/sparc64/kernel/ktlb.S +++ b/arch/sparc64/kernel/ktlb.S | |||
@@ -67,7 +67,7 @@ kvmap_itlb_longpath: | |||
67 | 67 | ||
68 | 661: rdpr %pstate, %g5 | 68 | 661: rdpr %pstate, %g5 |
69 | wrpr %g5, PSTATE_AG | PSTATE_MG, %pstate | 69 | wrpr %g5, PSTATE_AG | PSTATE_MG, %pstate |
70 | .section .gl_2insn_patch, "ax" | 70 | .section .sun4v_2insn_patch, "ax" |
71 | .word 661b | 71 | .word 661b |
72 | nop | 72 | nop |
73 | nop | 73 | nop |
@@ -179,7 +179,7 @@ kvmap_dtlb_longpath: | |||
179 | 179 | ||
180 | 661: rdpr %pstate, %g5 | 180 | 661: rdpr %pstate, %g5 |
181 | wrpr %g5, PSTATE_AG | PSTATE_MG, %pstate | 181 | wrpr %g5, PSTATE_AG | PSTATE_MG, %pstate |
182 | .section .gl_2insn_patch, "ax" | 182 | .section .sun4v_2insn_patch, "ax" |
183 | .word 661b | 183 | .word 661b |
184 | nop | 184 | nop |
185 | nop | 185 | nop |
diff --git a/arch/sparc64/kernel/rtrap.S b/arch/sparc64/kernel/rtrap.S index a2fa277da62b..a55d517e76aa 100644 --- a/arch/sparc64/kernel/rtrap.S +++ b/arch/sparc64/kernel/rtrap.S | |||
@@ -234,7 +234,7 @@ rt_continue: ldx [%sp + PTREGS_OFF + PT_V9_G1], %g1 | |||
234 | 234 | ||
235 | /* Normal globals are restored, go to trap globals. */ | 235 | /* Normal globals are restored, go to trap globals. */ |
236 | 661: wrpr %g0, RTRAP_PSTATE_AG_IRQOFF, %pstate | 236 | 661: wrpr %g0, RTRAP_PSTATE_AG_IRQOFF, %pstate |
237 | .section .gl_1insn_patch, "ax" | 237 | .section .sun4v_1insn_patch, "ax" |
238 | .word 661b | 238 | .word 661b |
239 | SET_GL(1) | 239 | SET_GL(1) |
240 | .previous | 240 | .previous |
@@ -316,7 +316,7 @@ user_rtt_fill_fixup: | |||
316 | wrpr %g0, RTRAP_PSTATE, %pstate | 316 | wrpr %g0, RTRAP_PSTATE, %pstate |
317 | 317 | ||
318 | 661: nop | 318 | 661: nop |
319 | .section .gl_1insn_patch, "ax" | 319 | .section .sun4v_1insn_patch, "ax" |
320 | .word 661b | 320 | .word 661b |
321 | SET_GL(0) | 321 | SET_GL(0) |
322 | .previous | 322 | .previous |
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c index 40acac5b8337..6d6178efd587 100644 --- a/arch/sparc64/kernel/setup.c +++ b/arch/sparc64/kernel/setup.c | |||
@@ -549,16 +549,16 @@ static void __init per_cpu_patch(void) | |||
549 | #endif | 549 | #endif |
550 | } | 550 | } |
551 | 551 | ||
552 | static void __init gl_patch(void) | 552 | static void __init sun4v_patch(void) |
553 | { | 553 | { |
554 | struct gl_1insn_patch_entry *p1; | 554 | struct sun4v_1insn_patch_entry *p1; |
555 | struct gl_2insn_patch_entry *p2; | 555 | struct sun4v_2insn_patch_entry *p2; |
556 | 556 | ||
557 | if (tlb_type != hypervisor) | 557 | if (tlb_type != hypervisor) |
558 | return; | 558 | return; |
559 | 559 | ||
560 | p1 = &__gl_1insn_patch; | 560 | p1 = &__sun4v_1insn_patch; |
561 | while (p1 < &__gl_1insn_patch_end) { | 561 | while (p1 < &__sun4v_1insn_patch_end) { |
562 | unsigned long addr = p1->addr; | 562 | unsigned long addr = p1->addr; |
563 | 563 | ||
564 | *(unsigned int *) (addr + 0) = p1->insn; | 564 | *(unsigned int *) (addr + 0) = p1->insn; |
@@ -568,8 +568,8 @@ static void __init gl_patch(void) | |||
568 | p1++; | 568 | p1++; |
569 | } | 569 | } |
570 | 570 | ||
571 | p2 = &__gl_2insn_patch; | 571 | p2 = &__sun4v_2insn_patch; |
572 | while (p2 < &__gl_2insn_patch_end) { | 572 | while (p2 < &__sun4v_2insn_patch_end) { |
573 | unsigned long addr = p2->addr; | 573 | unsigned long addr = p2->addr; |
574 | 574 | ||
575 | *(unsigned int *) (addr + 0) = p2->insns[0]; | 575 | *(unsigned int *) (addr + 0) = p2->insns[0]; |
@@ -606,7 +606,7 @@ void __init setup_arch(char **cmdline_p) | |||
606 | */ | 606 | */ |
607 | per_cpu_patch(); | 607 | per_cpu_patch(); |
608 | 608 | ||
609 | gl_patch(); | 609 | sun4v_patch(); |
610 | 610 | ||
611 | boot_flags_init(*cmdline_p); | 611 | boot_flags_init(*cmdline_p); |
612 | 612 | ||
diff --git a/arch/sparc64/kernel/tsb.S b/arch/sparc64/kernel/tsb.S index 818bc9e9135a..819a6ef9799f 100644 --- a/arch/sparc64/kernel/tsb.S +++ b/arch/sparc64/kernel/tsb.S | |||
@@ -74,7 +74,7 @@ tsb_dtlb_load: | |||
74 | 74 | ||
75 | 661: stxa %g5, [%g0] ASI_DTLB_DATA_IN | 75 | 661: stxa %g5, [%g0] ASI_DTLB_DATA_IN |
76 | retry | 76 | retry |
77 | .section .gl_2insn_patch, "ax" | 77 | .section .sun4v_2insn_patch, "ax" |
78 | .word 661b | 78 | .word 661b |
79 | nop | 79 | nop |
80 | nop | 80 | nop |
@@ -99,7 +99,7 @@ tsb_itlb_load: | |||
99 | 99 | ||
100 | 661: stxa %g5, [%g0] ASI_ITLB_DATA_IN | 100 | 661: stxa %g5, [%g0] ASI_ITLB_DATA_IN |
101 | retry | 101 | retry |
102 | .section .gl_2insn_patch, "ax" | 102 | .section .sun4v_2insn_patch, "ax" |
103 | .word 661b | 103 | .word 661b |
104 | nop | 104 | nop |
105 | nop | 105 | nop |
@@ -130,7 +130,7 @@ tsb_do_fault: | |||
130 | 130 | ||
131 | 661: rdpr %pstate, %g5 | 131 | 661: rdpr %pstate, %g5 |
132 | wrpr %g5, PSTATE_AG | PSTATE_MG, %pstate | 132 | wrpr %g5, PSTATE_AG | PSTATE_MG, %pstate |
133 | .section .gl_2insn_patch, "ax" | 133 | .section .sun4v_2insn_patch, "ax" |
134 | .word 661b | 134 | .word 661b |
135 | nop | 135 | nop |
136 | nop | 136 | nop |
@@ -145,7 +145,7 @@ tsb_do_dtlb_fault: | |||
145 | 145 | ||
146 | 661: mov TLB_TAG_ACCESS, %g4 | 146 | 661: mov TLB_TAG_ACCESS, %g4 |
147 | ldxa [%g4] ASI_DMMU, %g5 | 147 | ldxa [%g4] ASI_DMMU, %g5 |
148 | .section .gl_2insn_patch, "ax" | 148 | .section .sun4v_2insn_patch, "ax" |
149 | .word 661b | 149 | .word 661b |
150 | mov %g4, %g5 | 150 | mov %g4, %g5 |
151 | nop | 151 | nop |
@@ -250,7 +250,7 @@ __tsb_context_switch: | |||
250 | 250 | ||
251 | 661: mov TSB_REG, %g1 | 251 | 661: mov TSB_REG, %g1 |
252 | stxa %o1, [%g1] ASI_DMMU | 252 | stxa %o1, [%g1] ASI_DMMU |
253 | .section .gl_2insn_patch, "ax" | 253 | .section .sun4v_2insn_patch, "ax" |
254 | .word 661b | 254 | .word 661b |
255 | mov SCRATCHPAD_UTSBREG1, %g1 | 255 | mov SCRATCHPAD_UTSBREG1, %g1 |
256 | stxa %o1, [%g1] ASI_SCRATCHPAD | 256 | stxa %o1, [%g1] ASI_SCRATCHPAD |
@@ -260,7 +260,7 @@ __tsb_context_switch: | |||
260 | 260 | ||
261 | 661: stxa %o1, [%g1] ASI_IMMU | 261 | 661: stxa %o1, [%g1] ASI_IMMU |
262 | membar #Sync | 262 | membar #Sync |
263 | .section .gl_2insn_patch, "ax" | 263 | .section .sun4v_2insn_patch, "ax" |
264 | .word 661b | 264 | .word 661b |
265 | nop | 265 | nop |
266 | nop | 266 | nop |
diff --git a/arch/sparc64/kernel/vmlinux.lds.S b/arch/sparc64/kernel/vmlinux.lds.S index a09a8a2383dd..b097379a49a8 100644 --- a/arch/sparc64/kernel/vmlinux.lds.S +++ b/arch/sparc64/kernel/vmlinux.lds.S | |||
@@ -80,12 +80,12 @@ SECTIONS | |||
80 | __cpuid_patch = .; | 80 | __cpuid_patch = .; |
81 | .cpuid_patch : { *(.cpuid_patch) } | 81 | .cpuid_patch : { *(.cpuid_patch) } |
82 | __cpuid_patch_end = .; | 82 | __cpuid_patch_end = .; |
83 | __gl_1insn_patch = .; | 83 | __sun4v_1insn_patch = .; |
84 | .gl_1insn_patch : { *(.gl_1insn_patch) } | 84 | .sun4v_1insn_patch : { *(.sun4v_1insn_patch) } |
85 | __gl_1insn_patch_end = .; | 85 | __sun4v_1insn_patch_end = .; |
86 | __gl_2insn_patch = .; | 86 | __sun4v_2insn_patch = .; |
87 | .gl_2insn_patch : { *(.gl_2insn_patch) } | 87 | .sun4v_2insn_patch : { *(.sun4v_2insn_patch) } |
88 | __gl_2insn_patch_end = .; | 88 | __sun4v_2insn_patch_end = .; |
89 | . = ALIGN(8192); | 89 | . = ALIGN(8192); |
90 | __initramfs_start = .; | 90 | __initramfs_start = .; |
91 | .init.ramfs : { *(.init.ramfs) } | 91 | .init.ramfs : { *(.init.ramfs) } |
diff --git a/arch/sparc64/mm/ultra.S b/arch/sparc64/mm/ultra.S index 5dd86ad0d29f..8c244932b1c2 100644 --- a/arch/sparc64/mm/ultra.S +++ b/arch/sparc64/mm/ultra.S | |||
@@ -447,7 +447,7 @@ xcall_sync_tick: | |||
447 | 447 | ||
448 | 661: rdpr %pstate, %g2 | 448 | 661: rdpr %pstate, %g2 |
449 | wrpr %g2, PSTATE_IG | PSTATE_AG, %pstate | 449 | wrpr %g2, PSTATE_IG | PSTATE_AG, %pstate |
450 | .section .gl_2insn_patch, "ax" | 450 | .section .sun4v_2insn_patch, "ax" |
451 | .word 661b | 451 | .word 661b |
452 | nop | 452 | nop |
453 | nop | 453 | nop |
@@ -478,7 +478,7 @@ xcall_report_regs: | |||
478 | 478 | ||
479 | 661: rdpr %pstate, %g2 | 479 | 661: rdpr %pstate, %g2 |
480 | wrpr %g2, PSTATE_IG | PSTATE_AG, %pstate | 480 | wrpr %g2, PSTATE_IG | PSTATE_AG, %pstate |
481 | .section .gl_2insn_patch, "ax" | 481 | .section .sun4v_2insn_patch, "ax" |
482 | .word 661b | 482 | .word 661b |
483 | nop | 483 | nop |
484 | nop | 484 | nop |
diff --git a/include/asm-sparc64/cpudata.h b/include/asm-sparc64/cpudata.h index a3dc4afc4b21..26b1dc9afbf1 100644 --- a/include/asm-sparc64/cpudata.h +++ b/include/asm-sparc64/cpudata.h | |||
@@ -78,17 +78,20 @@ struct cpuid_patch_entry { | |||
78 | extern struct cpuid_patch_entry __cpuid_patch, __cpuid_patch_end; | 78 | extern struct cpuid_patch_entry __cpuid_patch, __cpuid_patch_end; |
79 | #endif | 79 | #endif |
80 | 80 | ||
81 | struct gl_1insn_patch_entry { | 81 | struct sun4v_1insn_patch_entry { |
82 | unsigned int addr; | 82 | unsigned int addr; |
83 | unsigned int insn; | 83 | unsigned int insn; |
84 | }; | 84 | }; |
85 | extern struct gl_1insn_patch_entry __gl_1insn_patch, __gl_1insn_patch_end; | 85 | extern struct sun4v_1insn_patch_entry __sun4v_1insn_patch, |
86 | __sun4v_1insn_patch_end; | ||
86 | 87 | ||
87 | struct gl_2insn_patch_entry { | 88 | struct sun4v_2insn_patch_entry { |
88 | unsigned int addr; | 89 | unsigned int addr; |
89 | unsigned int insns[2]; | 90 | unsigned int insns[2]; |
90 | }; | 91 | }; |
91 | extern struct gl_2insn_patch_entry __gl_2insn_patch, __gl_2insn_patch_end; | 92 | extern struct sun4v_2insn_patch_entry __sun4v_2insn_patch, |
93 | __sun4v_2insn_patch_end; | ||
94 | |||
92 | #endif /* !(__ASSEMBLY__) */ | 95 | #endif /* !(__ASSEMBLY__) */ |
93 | 96 | ||
94 | #define TRAP_PER_CPU_THREAD 0x00 | 97 | #define TRAP_PER_CPU_THREAD 0x00 |