Loading...
Searching...
No Matches
Go to the documentation of this file.
53#define COP2_SF_SHIFT 19
54#define COP2_MX_SHIFT 17
55#define COP2_V_SHIFT 15
56#define COP2_CV_SHIFT 13
57#define COP2_LM_SHIFT 10
82#define COP2_LM_SIGNED 0
83#define COP2_LM_UNSIGNED 1
86#define COP2_FN_RTPS 0x01
87#define COP2_FN_NCLIP 0x06
88#define COP2_FN_OP 0x0c
89#define COP2_FN_DPCS 0x10
90#define COP2_FN_INTPL 0x11
91#define COP2_FN_MVMVA 0x12
92#define COP2_FN_NCDS 0x13
93#define COP2_FN_CDP 0x14
94#define COP2_FN_NCDT 0x16
95#define COP2_FN_NCCS 0x1b
96#define COP2_FN_CC 0x1c
97#define COP2_FN_NCS 0x1e
98#define COP2_FN_NCT 0x20
99#define COP2_FN_SQR 0x28
100#define COP2_FN_DCPL 0x29
101#define COP2_FN_DPCT 0x2a
102#define COP2_FN_AVSZ3 0x2d
103#define COP2_FN_AVSZ4 0x2e
104#define COP2_FN_RTPT 0x30
105#define COP2_FN_GPF 0x3d
106#define COP2_FN_GPL 0x3e
107#define COP2_FN_NCCT 0x3f
116#define COP2_OP(fake, sf, mx, v, cv, lm, fn) \
117 (((fake) << 20) | ((sf) << COP2_SF_SHIFT) | ((mx) << COP2_MX_SHIFT) | \
118 ((v) << COP2_V_SHIFT) | ((cv) << COP2_CV_SHIFT) | \
119 ((lm) << COP2_LM_SHIFT) | (fn))
129#define COP2_RTPS(sf, lm) COP2_OP( 1, sf, 0, 0, 0, lm, COP2_FN_RTPS)
130#define COP2_RTPT(sf, lm) COP2_OP( 2, sf, 0, 0, 0, lm, COP2_FN_RTPT)
133#define COP2_NCLIP COP2_OP(20, 0, 0, 0, 0, 0, COP2_FN_NCLIP)
136#define COP2_OP_CP(sf, lm) COP2_OP(23, sf, 0, 0, 0, lm, COP2_FN_OP)
139#define COP2_DPCS(sf, lm) COP2_OP( 7, sf, 0, 0, 0, lm, COP2_FN_DPCS)
140#define COP2_DPCT(sf, lm) COP2_OP(15, sf, 0, 0, 0, lm, COP2_FN_DPCT)
141#define COP2_DCPL(sf, lm) COP2_OP( 6, sf, 0, 0, 0, lm, COP2_FN_DCPL)
142#define COP2_INTPL(sf, lm) COP2_OP( 9, sf, 0, 0, 0, lm, COP2_FN_INTPL)
145#define COP2_MVMVA(sf, mx, v, cv, lm) \
146 COP2_OP(4, sf, mx, v, cv, lm, COP2_FN_MVMVA)
149#define COP2_NCS(sf, lm) COP2_OP(12, sf, 0, 0, 0, lm, COP2_FN_NCS)
150#define COP2_NCT(sf, lm) COP2_OP(13, sf, 0, 0, 0, lm, COP2_FN_NCT)
151#define COP2_NCCS(sf, lm) COP2_OP(16, sf, 0, 0, 0, lm, COP2_FN_NCCS)
152#define COP2_NCCT(sf, lm) COP2_OP(17, sf, 0, 0, 0, lm, COP2_FN_NCCT)
153#define COP2_NCDS(sf, lm) COP2_OP(14, sf, 0, 0, 0, lm, COP2_FN_NCDS)
154#define COP2_NCDT(sf, lm) COP2_OP(15, sf, 0, 0, 0, lm, COP2_FN_NCDT)
157#define COP2_CC(sf, lm) COP2_OP(19, sf, 0, 0, 0, lm, COP2_FN_CC)
158#define COP2_CDP(sf, lm) COP2_OP(18, sf, 0, 0, 0, lm, COP2_FN_CDP)
161#define COP2_SQR(sf, lm) COP2_OP(10, sf, 0, 0, 0, lm, COP2_FN_SQR)
164#define COP2_AVSZ3 COP2_OP(21, 1, 0, 0, 0, 0, COP2_FN_AVSZ3)
165#define COP2_AVSZ4 COP2_OP(22, 1, 0, 0, 0, 0, COP2_FN_AVSZ4)
168#define COP2_GPF(sf, lm) COP2_OP(25, sf, 0, 0, 0, lm, COP2_FN_GPF)
169#define COP2_GPL(sf, lm) COP2_OP(26, sf, 0, 0, 0, lm, COP2_FN_GPL)
175#define cop2_cmd(op) __asm__ volatile("cop2 %0" : : "i"(op))
182#define cop2_put(reg, val) do { \
183 uint32_t _v = (val); \
184 __asm__ volatile("mtc2 %0, $" #reg \
189#define cop2_get(reg, dest) do { \
190 __asm__ volatile("mfc2 %0, $" #reg \
196#define cop2_putc(reg, val) do { \
197 uint32_t _v = (val); \
198 __asm__ volatile("ctc2 %0, $" #reg \
203#define cop2_getc(reg, dest) do { \
204 __asm__ volatile("cfc2 %0, $" #reg \
260#define COP2_L22L23 10
261#define COP2_L31L32 11
266#define COP2_LR1LR2 16
267#define COP2_LR3LG1 17
268#define COP2_LG2LG3 18
269#define COP2_LB1LB2 19
287#define COP2_FLAG_MAC1_OVER_POS (1u << 30)
288#define COP2_FLAG_MAC2_OVER_POS (1u << 29)
289#define COP2_FLAG_MAC3_OVER_POS (1u << 28)
290#define COP2_FLAG_MAC1_OVER_NEG (1u << 27)
291#define COP2_FLAG_MAC2_OVER_NEG (1u << 26)
292#define COP2_FLAG_MAC3_OVER_NEG (1u << 25)
293#define COP2_FLAG_IR1_SAT (1u << 24)
294#define COP2_FLAG_IR2_SAT (1u << 23)
295#define COP2_FLAG_IR3_SAT (1u << 22)
296#define COP2_FLAG_COLOR_R_SAT (1u << 21)
297#define COP2_FLAG_COLOR_G_SAT (1u << 20)
298#define COP2_FLAG_COLOR_B_SAT (1u << 19)
299#define COP2_FLAG_SZ3_OTZ_SAT (1u << 18)
300#define COP2_FLAG_DIV_OVERFLOW (1u << 17)
301#define COP2_FLAG_MAC0_OVER_POS (1u << 16)
302#define COP2_FLAG_MAC0_OVER_NEG (1u << 15)
303#define COP2_FLAG_SX2_SAT (1u << 14)
304#define COP2_FLAG_SY2_SAT (1u << 13)
305#define COP2_FLAG_IR0_SAT (1u << 12)
306#define COP2_FLAG_ERROR (1u << 31)