aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips
diff options
context:
space:
mode:
authorDavid VomLehn <dvomlehn@cisco.com>2010-02-22 19:31:13 -0500
committerRalf Baechle <ralf@linux-mips.org>2010-02-27 06:53:41 -0500
commit81fc0179541dd52763cf62a52f0c09a05bcc6439 (patch)
treeb04013dfa4eb52cadb619577d95beb2c003247de /arch/mips
parent3b439470e360931ad65234f94aa92cd7362f635a (diff)
MIPS: PowerTV: Eliminate duplicate opcode definition macros
Change to different macros for assembler macros since the old names in powertv_setup.c were co-opted for use in asm/asm.h. This broken the build for the powertv platform. This patch introduces new macros based on the new macros in asm.h to take the place of the old macro values. Signed-off-by: David VomLehn <dvomlehn@cisco.com> Cc: linux-mips@linux-mips.org Patchwork: http://patchwork.linux-mips.org/patch/985/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/powertv/powertv_setup.c102
1 files changed, 49 insertions, 53 deletions
diff --git a/arch/mips/powertv/powertv_setup.c b/arch/mips/powertv/powertv_setup.c
index 698b1eafbe98..af2cae0a5ab3 100644
--- a/arch/mips/powertv/powertv_setup.c
+++ b/arch/mips/powertv/powertv_setup.c
@@ -25,14 +25,15 @@
25#include <linux/etherdevice.h> 25#include <linux/etherdevice.h>
26#include <linux/if_ether.h> 26#include <linux/if_ether.h>
27#include <linux/ctype.h> 27#include <linux/ctype.h>
28
29#include <linux/cpu.h> 28#include <linux/cpu.h>
29#include <linux/time.h>
30
30#include <asm/bootinfo.h> 31#include <asm/bootinfo.h>
31#include <asm/irq.h> 32#include <asm/irq.h>
32#include <asm/mips-boards/generic.h> 33#include <asm/mips-boards/generic.h>
33#include <asm/mips-boards/prom.h> 34#include <asm/mips-boards/prom.h>
34#include <asm/dma.h> 35#include <asm/dma.h>
35#include <linux/time.h> 36#include <asm/asm.h>
36#include <asm/traps.h> 37#include <asm/traps.h>
37#include <asm/asm-offsets.h> 38#include <asm/asm-offsets.h>
38#include "reset.h" 39#include "reset.h"
@@ -41,26 +42,21 @@
41 42
42/* 43/*
43 * Macros for loading addresses and storing registers: 44 * Macros for loading addresses and storing registers:
44 * PTR_LA Load the address into a register 45 * LONG_L_ Stringified version of LONG_L for use in asm() statement
45 * LONG_S Store the full width of the given register. 46 * LONG_S_ Stringified version of LONG_S for use in asm() statement
46 * LONG_L Load the full width of the given register 47 * PTR_LA_ Stringified version of PTR_LA for use in asm() statement
47 * PTR_ADDIU Add a constant value to a register used as a pointer
48 * REG_SIZE Number of 8-bit bytes in a full width register 48 * REG_SIZE Number of 8-bit bytes in a full width register
49 */ 49 */
50#define LONG_L_ VAL(LONG_L) " "
51#define LONG_S_ VAL(LONG_S) " "
52#define PTR_LA_ VAL(PTR_LA) " "
53
50#ifdef CONFIG_64BIT 54#ifdef CONFIG_64BIT
51#warning TODO: 64-bit code needs to be verified 55#warning TODO: 64-bit code needs to be verified
52#define PTR_LA "dla "
53#define LONG_S "sd "
54#define LONG_L "ld "
55#define PTR_ADDIU "daddiu "
56#define REG_SIZE "8" /* In bytes */ 56#define REG_SIZE "8" /* In bytes */
57#endif 57#endif
58 58
59#ifdef CONFIG_32BIT 59#ifdef CONFIG_32BIT
60#define PTR_LA "la "
61#define LONG_S "sw "
62#define LONG_L "lw "
63#define PTR_ADDIU "addiu "
64#define REG_SIZE "4" /* In bytes */ 60#define REG_SIZE "4" /* In bytes */
65#endif 61#endif
66 62
@@ -113,9 +109,9 @@ static int panic_handler(struct notifier_block *notifier_block,
113 * structure. */ 109 * structure. */
114 __asm__ __volatile__ ( 110 __asm__ __volatile__ (
115 ".set noat\n" 111 ".set noat\n"
116 LONG_S "$at, %[at]\n" 112 LONG_S_ "$at, %[at]\n"
117 LONG_S "$2, %[v0]\n" 113 LONG_S_ "$2, %[v0]\n"
118 LONG_S "$3, %[v1]\n" 114 LONG_S_ "$3, %[v1]\n"
119 : 115 :
120 [at] "=m" (at), 116 [at] "=m" (at),
121 [v0] "=m" (v0), 117 [v0] "=m" (v0),
@@ -129,54 +125,54 @@ static int panic_handler(struct notifier_block *notifier_block,
129 "move $at, %[pt_regs]\n" 125 "move $at, %[pt_regs]\n"
130 126
131 /* Argument registers */ 127 /* Argument registers */
132 LONG_S "$4, " VAL(PT_R4) "($at)\n" 128 LONG_S_ "$4, " VAL(PT_R4) "($at)\n"
133 LONG_S "$5, " VAL(PT_R5) "($at)\n" 129 LONG_S_ "$5, " VAL(PT_R5) "($at)\n"
134 LONG_S "$6, " VAL(PT_R6) "($at)\n" 130 LONG_S_ "$6, " VAL(PT_R6) "($at)\n"
135 LONG_S "$7, " VAL(PT_R7) "($at)\n" 131 LONG_S_ "$7, " VAL(PT_R7) "($at)\n"
136 132
137 /* Temporary regs */ 133 /* Temporary regs */
138 LONG_S "$8, " VAL(PT_R8) "($at)\n" 134 LONG_S_ "$8, " VAL(PT_R8) "($at)\n"
139 LONG_S "$9, " VAL(PT_R9) "($at)\n" 135 LONG_S_ "$9, " VAL(PT_R9) "($at)\n"
140 LONG_S "$10, " VAL(PT_R10) "($at)\n" 136 LONG_S_ "$10, " VAL(PT_R10) "($at)\n"
141 LONG_S "$11, " VAL(PT_R11) "($at)\n" 137 LONG_S_ "$11, " VAL(PT_R11) "($at)\n"
142 LONG_S "$12, " VAL(PT_R12) "($at)\n" 138 LONG_S_ "$12, " VAL(PT_R12) "($at)\n"
143 LONG_S "$13, " VAL(PT_R13) "($at)\n" 139 LONG_S_ "$13, " VAL(PT_R13) "($at)\n"
144 LONG_S "$14, " VAL(PT_R14) "($at)\n" 140 LONG_S_ "$14, " VAL(PT_R14) "($at)\n"
145 LONG_S "$15, " VAL(PT_R15) "($at)\n" 141 LONG_S_ "$15, " VAL(PT_R15) "($at)\n"
146 142
147 /* "Saved" registers */ 143 /* "Saved" registers */
148 LONG_S "$16, " VAL(PT_R16) "($at)\n" 144 LONG_S_ "$16, " VAL(PT_R16) "($at)\n"
149 LONG_S "$17, " VAL(PT_R17) "($at)\n" 145 LONG_S_ "$17, " VAL(PT_R17) "($at)\n"
150 LONG_S "$18, " VAL(PT_R18) "($at)\n" 146 LONG_S_ "$18, " VAL(PT_R18) "($at)\n"
151 LONG_S "$19, " VAL(PT_R19) "($at)\n" 147 LONG_S_ "$19, " VAL(PT_R19) "($at)\n"
152 LONG_S "$20, " VAL(PT_R20) "($at)\n" 148 LONG_S_ "$20, " VAL(PT_R20) "($at)\n"
153 LONG_S "$21, " VAL(PT_R21) "($at)\n" 149 LONG_S_ "$21, " VAL(PT_R21) "($at)\n"
154 LONG_S "$22, " VAL(PT_R22) "($at)\n" 150 LONG_S_ "$22, " VAL(PT_R22) "($at)\n"
155 LONG_S "$23, " VAL(PT_R23) "($at)\n" 151 LONG_S_ "$23, " VAL(PT_R23) "($at)\n"
156 152
157 /* Add'l temp regs */ 153 /* Add'l temp regs */
158 LONG_S "$24, " VAL(PT_R24) "($at)\n" 154 LONG_S_ "$24, " VAL(PT_R24) "($at)\n"
159 LONG_S "$25, " VAL(PT_R25) "($at)\n" 155 LONG_S_ "$25, " VAL(PT_R25) "($at)\n"
160 156
161 /* Kernel temp regs */ 157 /* Kernel temp regs */
162 LONG_S "$26, " VAL(PT_R26) "($at)\n" 158 LONG_S_ "$26, " VAL(PT_R26) "($at)\n"
163 LONG_S "$27, " VAL(PT_R27) "($at)\n" 159 LONG_S_ "$27, " VAL(PT_R27) "($at)\n"
164 160
165 /* Global pointer, stack pointer, frame pointer and 161 /* Global pointer, stack pointer, frame pointer and
166 * return address */ 162 * return address */
167 LONG_S "$gp, " VAL(PT_R28) "($at)\n" 163 LONG_S_ "$gp, " VAL(PT_R28) "($at)\n"
168 LONG_S "$sp, " VAL(PT_R29) "($at)\n" 164 LONG_S_ "$sp, " VAL(PT_R29) "($at)\n"
169 LONG_S "$fp, " VAL(PT_R30) "($at)\n" 165 LONG_S_ "$fp, " VAL(PT_R30) "($at)\n"
170 LONG_S "$ra, " VAL(PT_R31) "($at)\n" 166 LONG_S_ "$ra, " VAL(PT_R31) "($at)\n"
171 167
172 /* Now we can get the $at and v0 registers back and 168 /* Now we can get the $at and v0 registers back and
173 * store them */ 169 * store them */
174 LONG_L "$8, %[at]\n" 170 LONG_L_ "$8, %[at]\n"
175 LONG_S "$8, " VAL(PT_R1) "($at)\n" 171 LONG_S_ "$8, " VAL(PT_R1) "($at)\n"
176 LONG_L "$8, %[v0]\n" 172 LONG_L_ "$8, %[v0]\n"
177 LONG_S "$8, " VAL(PT_R2) "($at)\n" 173 LONG_S_ "$8, " VAL(PT_R2) "($at)\n"
178 LONG_L "$8, %[v1]\n" 174 LONG_L_ "$8, %[v1]\n"
179 LONG_S "$8, " VAL(PT_R3) "($at)\n" 175 LONG_S_ "$8, " VAL(PT_R3) "($at)\n"
180 : 176 :
181 : 177 :
182 [at] "m" (at), 178 [at] "m" (at),
@@ -191,8 +187,8 @@ static int panic_handler(struct notifier_block *notifier_block,
191 __asm__ __volatile__ ( 187 __asm__ __volatile__ (
192 ".set noat\n" 188 ".set noat\n"
193 "1:\n" 189 "1:\n"
194 PTR_LA "$at, 1b\n" 190 PTR_LA_ "$at, 1b\n"
195 LONG_S "$at, %[cp0_epc]\n" 191 LONG_S_ "$at, %[cp0_epc]\n"
196 : 192 :
197 [cp0_epc] "=m" (my_regs.cp0_epc) 193 [cp0_epc] "=m" (my_regs.cp0_epc)
198 : 194 :