|
@@ -22,25 +22,28 @@ static inline unsigned int
|
|
|
p_maskirq(unsigned int newmask, unsigned int keepmask)
|
|
|
{
|
|
|
unsigned int oldmask;
|
|
|
- asm volatile(".insn r 0x0b, 0, 3, %0, %1, %2"
|
|
|
+ asm volatile(".insn r 0x0b, 0, 3, %0, %z1, %z2"
|
|
|
: "=r" (oldmask)
|
|
|
- : "r" (newmask), "r" (keepmask));
|
|
|
+ : "Jr" (newmask), "Jr" (keepmask));
|
|
|
return oldmask;
|
|
|
}
|
|
|
|
|
|
-static inline unsigned int p_waitirq(void)
|
|
|
+static inline unsigned int
|
|
|
+p_waitirq(unsigned int andmask, unsigned int ormask)
|
|
|
{
|
|
|
unsigned int pending_mask;
|
|
|
- asm volatile(".insn r 0x0b, 0, 4, %0, zero, zero"
|
|
|
- : "=r" (pending_mask));
|
|
|
+ asm volatile(".insn r 0x0b, 0, 4, %0, %z1, %z2"
|
|
|
+ : "=r" (pending_mask)
|
|
|
+ : "Jr" (andmask), "Jr" (ormask));
|
|
|
return pending_mask;
|
|
|
}
|
|
|
|
|
|
static inline unsigned int p_timer(unsigned int newval)
|
|
|
{
|
|
|
unsigned int oldval;
|
|
|
- asm volatile(".insn 0x0b, 0, 5, %0, %1, zero"
|
|
|
- : "=r" (oldval) : "r" (newval));
|
|
|
+ asm volatile(".insn 0x0b, 0, 5, %0, %z1, %z2"
|
|
|
+ : "=r" (oldval)
|
|
|
+ : "Jr" (newval), "Jr" (0));
|
|
|
}
|
|
|
|
|
|
#else /* __ASSEMBLY__ */
|
|
@@ -64,8 +67,8 @@ static inline unsigned int p_timer(unsigned int newval)
|
|
|
.insn r 0x0b, 0, 3, \rd, \rs1, \rs2
|
|
|
.endm
|
|
|
|
|
|
-.macro waitirq rd
|
|
|
- .insn r 0x0b, 0, 4, \rd, zero, zero
|
|
|
+.macro waitirq rd, andmask, ormask
|
|
|
+ .insn r 0x0b, 0, 4, \rd, \andmask, \ormask
|
|
|
.endm
|
|
|
|
|
|
.macro timer rd, rs
|