diff options
Diffstat (limited to 'arch/mips/include/asm/uasm.h')
-rw-r--r-- | arch/mips/include/asm/uasm.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/mips/include/asm/uasm.h b/arch/mips/include/asm/uasm.h index b99bd07e199b..697e40c06497 100644 --- a/arch/mips/include/asm/uasm.h +++ b/arch/mips/include/asm/uasm.h | |||
@@ -84,6 +84,7 @@ Ip_u2s3u1(_lw); | |||
84 | Ip_u1u2u3(_mfc0); | 84 | Ip_u1u2u3(_mfc0); |
85 | Ip_u1u2u3(_mtc0); | 85 | Ip_u1u2u3(_mtc0); |
86 | Ip_u2u1u3(_ori); | 86 | Ip_u2u1u3(_ori); |
87 | Ip_u3u1u2(_or); | ||
87 | Ip_u2s3u1(_pref); | 88 | Ip_u2s3u1(_pref); |
88 | Ip_0(_rfe); | 89 | Ip_0(_rfe); |
89 | Ip_u2s3u1(_sc); | 90 | Ip_u2s3u1(_sc); |
@@ -102,6 +103,7 @@ Ip_0(_tlbwr); | |||
102 | Ip_u3u1u2(_xor); | 103 | Ip_u3u1u2(_xor); |
103 | Ip_u2u1u3(_xori); | 104 | Ip_u2u1u3(_xori); |
104 | Ip_u2u1msbu3(_dins); | 105 | Ip_u2u1msbu3(_dins); |
106 | Ip_u1(_syscall); | ||
105 | 107 | ||
106 | /* Handle labels. */ | 108 | /* Handle labels. */ |
107 | struct uasm_label { | 109 | struct uasm_label { |
@@ -165,6 +167,24 @@ static inline void __cpuinit uasm_l##lb(struct uasm_label **lab, u32 *addr) \ | |||
165 | #define uasm_i_ssnop(buf) uasm_i_sll(buf, 0, 0, 1) | 167 | #define uasm_i_ssnop(buf) uasm_i_sll(buf, 0, 0, 1) |
166 | #define uasm_i_ehb(buf) uasm_i_sll(buf, 0, 0, 3) | 168 | #define uasm_i_ehb(buf) uasm_i_sll(buf, 0, 0, 3) |
167 | 169 | ||
170 | static inline void uasm_i_dsrl_safe(u32 **p, unsigned int a1, | ||
171 | unsigned int a2, unsigned int a3) | ||
172 | { | ||
173 | if (a3 < 32) | ||
174 | uasm_i_dsrl(p, a1, a2, a3); | ||
175 | else | ||
176 | uasm_i_dsrl32(p, a1, a2, a3 - 32); | ||
177 | } | ||
178 | |||
179 | static inline void uasm_i_dsll_safe(u32 **p, unsigned int a1, | ||
180 | unsigned int a2, unsigned int a3) | ||
181 | { | ||
182 | if (a3 < 32) | ||
183 | uasm_i_dsll(p, a1, a2, a3); | ||
184 | else | ||
185 | uasm_i_dsll32(p, a1, a2, a3 - 32); | ||
186 | } | ||
187 | |||
168 | /* Handle relocations. */ | 188 | /* Handle relocations. */ |
169 | struct uasm_reloc { | 189 | struct uasm_reloc { |
170 | u32 *addr; | 190 | u32 *addr; |