|
14 | 14 | static inline void arch_local_irq_enable(void)
|
15 | 15 | {
|
16 | 16 | u32 flags = CSR_CRMD_IE;
|
| 17 | + register u32 mask asm("t0") = CSR_CRMD_IE; |
| 18 | + |
17 | 19 | __asm__ __volatile__(
|
18 | 20 | "csrxchg %[val], %[mask], %[reg]\n\t"
|
19 | 21 | : [val] "+r" (flags)
|
20 |
| - : [mask] "r" (CSR_CRMD_IE), [reg] "i" (LOONGARCH_CSR_CRMD) |
| 22 | + : [mask] "r" (mask), [reg] "i" (LOONGARCH_CSR_CRMD) |
21 | 23 | : "memory");
|
22 | 24 | }
|
23 | 25 |
|
24 | 26 | static inline void arch_local_irq_disable(void)
|
25 | 27 | {
|
26 | 28 | u32 flags = 0;
|
| 29 | + register u32 mask asm("t0") = CSR_CRMD_IE; |
| 30 | + |
27 | 31 | __asm__ __volatile__(
|
28 | 32 | "csrxchg %[val], %[mask], %[reg]\n\t"
|
29 | 33 | : [val] "+r" (flags)
|
30 |
| - : [mask] "r" (CSR_CRMD_IE), [reg] "i" (LOONGARCH_CSR_CRMD) |
| 34 | + : [mask] "r" (mask), [reg] "i" (LOONGARCH_CSR_CRMD) |
31 | 35 | : "memory");
|
32 | 36 | }
|
33 | 37 |
|
34 | 38 | static inline unsigned long arch_local_irq_save(void)
|
35 | 39 | {
|
36 | 40 | u32 flags = 0;
|
| 41 | + register u32 mask asm("t0") = CSR_CRMD_IE; |
| 42 | + |
37 | 43 | __asm__ __volatile__(
|
38 | 44 | "csrxchg %[val], %[mask], %[reg]\n\t"
|
39 | 45 | : [val] "+r" (flags)
|
40 |
| - : [mask] "r" (CSR_CRMD_IE), [reg] "i" (LOONGARCH_CSR_CRMD) |
| 46 | + : [mask] "r" (mask), [reg] "i" (LOONGARCH_CSR_CRMD) |
41 | 47 | : "memory");
|
42 | 48 | return flags;
|
43 | 49 | }
|
44 | 50 |
|
45 | 51 | static inline void arch_local_irq_restore(unsigned long flags)
|
46 | 52 | {
|
| 53 | + register u32 mask asm("t0") = CSR_CRMD_IE; |
| 54 | + |
47 | 55 | __asm__ __volatile__(
|
48 | 56 | "csrxchg %[val], %[mask], %[reg]\n\t"
|
49 | 57 | : [val] "+r" (flags)
|
50 |
| - : [mask] "r" (CSR_CRMD_IE), [reg] "i" (LOONGARCH_CSR_CRMD) |
| 58 | + : [mask] "r" (mask), [reg] "i" (LOONGARCH_CSR_CRMD) |
51 | 59 | : "memory");
|
52 | 60 | }
|
53 | 61 |
|
|
0 commit comments