@@ -14,9 +14,9 @@ rt_atomic_t rt_hw_atomic_exchange(volatile rt_atomic_t *ptr, rt_atomic_t val)
1414{
1515 rt_atomic_t result = 0 ;
1616#if __riscv_xlen == 32
17- asm volatile ("amoswap.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
17+ asm volatile ("amoswap.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
1818#elif __riscv_xlen == 64
19- asm volatile ("amoswap.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
19+ asm volatile ("amoswap.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
2020#endif
2121 return result ;
2222}
@@ -25,9 +25,9 @@ rt_atomic_t rt_hw_atomic_add(volatile rt_atomic_t *ptr, rt_atomic_t val)
2525{
2626 rt_atomic_t result = 0 ;
2727#if __riscv_xlen == 32
28- asm volatile ("amoadd.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
28+ asm volatile ("amoadd.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
2929#elif __riscv_xlen == 64
30- asm volatile ("amoadd.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
30+ asm volatile ("amoadd.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
3131#endif
3232 return result ;
3333}
@@ -37,9 +37,9 @@ rt_atomic_t rt_hw_atomic_sub(volatile rt_atomic_t *ptr, rt_atomic_t val)
3737 rt_atomic_t result = 0 ;
3838 val = - val ;
3939#if __riscv_xlen == 32
40- asm volatile ("amoadd.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
40+ asm volatile ("amoadd.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
4141#elif __riscv_xlen == 64
42- asm volatile ("amoadd.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
42+ asm volatile ("amoadd.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
4343#endif
4444 return result ;
4545}
@@ -48,9 +48,9 @@ rt_atomic_t rt_hw_atomic_xor(volatile rt_atomic_t *ptr, rt_atomic_t val)
4848{
4949 rt_atomic_t result = 0 ;
5050#if __riscv_xlen == 32
51- asm volatile ("amoxor.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
51+ asm volatile ("amoxor.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
5252#elif __riscv_xlen == 64
53- asm volatile ("amoxor.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
53+ asm volatile ("amoxor.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
5454#endif
5555 return result ;
5656}
@@ -59,9 +59,9 @@ rt_atomic_t rt_hw_atomic_and(volatile rt_atomic_t *ptr, rt_atomic_t val)
5959{
6060 rt_atomic_t result = 0 ;
6161#if __riscv_xlen == 32
62- asm volatile ("amoand.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
62+ asm volatile ("amoand.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
6363#elif __riscv_xlen == 64
64- asm volatile ("amoand.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
64+ asm volatile ("amoand.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
6565#endif
6666 return result ;
6767}
@@ -70,9 +70,9 @@ rt_atomic_t rt_hw_atomic_or(volatile rt_atomic_t *ptr, rt_atomic_t val)
7070{
7171 rt_atomic_t result = 0 ;
7272#if __riscv_xlen == 32
73- asm volatile ("amoor.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
73+ asm volatile ("amoor.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
7474#elif __riscv_xlen == 64
75- asm volatile ("amoor.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
75+ asm volatile ("amoor.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
7676#endif
7777 return result ;
7878}
@@ -81,9 +81,9 @@ rt_atomic_t rt_hw_atomic_load(volatile rt_atomic_t *ptr)
8181{
8282 rt_atomic_t result = 0 ;
8383#if __riscv_xlen == 32
84- asm volatile ("amoxor.w %0, x0, (%1)" : "=r" (result ) : "r" (ptr ) : "memory" );
84+ asm volatile ("amoxor.w %0, x0, (%1)" : "=r" (result ) : "r" (ptr ) : "memory" );
8585#elif __riscv_xlen == 64
86- asm volatile ("amoxor.d %0, x0, (%1)" : "=r" (result ) : "r" (ptr ) : "memory" );
86+ asm volatile ("amoxor.d %0, x0, (%1)" : "=r" (result ) : "r" (ptr ) : "memory" );
8787#endif
8888 return result ;
8989}
@@ -92,9 +92,9 @@ void rt_hw_atomic_store(volatile rt_atomic_t *ptr, rt_atomic_t val)
9292{
9393 rt_atomic_t result = 0 ;
9494#if __riscv_xlen == 32
95- asm volatile ("amoswap.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
95+ asm volatile ("amoswap.w %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
9696#elif __riscv_xlen == 64
97- asm volatile ("amoswap.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
97+ asm volatile ("amoswap.d %0, %1, (%2)" : "=r" (result ) : "r" (val ), "r" (ptr ) : "memory" );
9898#endif
9999}
100100
@@ -103,9 +103,9 @@ rt_atomic_t rt_hw_atomic_flag_test_and_set(volatile rt_atomic_t *ptr)
103103 rt_atomic_t result = 0 ;
104104 rt_atomic_t temp = 1 ;
105105#if __riscv_xlen == 32
106- asm volatile ("amoor.w %0, %1, (%2)" : "=r" (result ) : "r" (temp ), "r" (ptr ) : "memory" );
106+ asm volatile ("amoor.w %0, %1, (%2)" : "=r" (result ) : "r" (temp ), "r" (ptr ) : "memory" );
107107#elif __riscv_xlen == 64
108- asm volatile ("amoor.d %0, %1, (%2)" : "=r" (result ) : "r" (temp ), "r" (ptr ) : "memory" );
108+ asm volatile ("amoor.d %0, %1, (%2)" : "=r" (result ) : "r" (temp ), "r" (ptr ) : "memory" );
109109#endif
110110 return result ;
111111}
@@ -114,9 +114,9 @@ void rt_hw_atomic_flag_clear(volatile rt_atomic_t *ptr)
114114{
115115 rt_atomic_t result = 0 ;
116116#if __riscv_xlen == 32
117- asm volatile ("amoand.w %0, x0, (%1)" : "=r" (result ) :"r" (ptr ) : "memory" );
117+ asm volatile ("amoand.w %0, x0, (%1)" : "=r" (result ) : "r" (ptr ) : "memory" );
118118#elif __riscv_xlen == 64
119- asm volatile ("amoand.d %0, x0, (%1)" : "=r" (result ) :"r" (ptr ) : "memory" );
119+ asm volatile ("amoand.d %0, x0, (%1)" : "=r" (result ) : "r" (ptr ) : "memory" );
120120#endif
121121}
122122
@@ -126,34 +126,34 @@ rt_atomic_t rt_hw_atomic_compare_exchange_strong(volatile rt_atomic_t *ptr, rt_a
126126 rt_atomic_t result = 0 ;
127127#if __riscv_xlen == 32
128128 asm volatile (
129- " fence iorw, ow\n"
130- "1: lr.w.aq %[result], (%[ptr])\n"
131- " bne %[result], %[tmp], 2f\n"
132- " sc.w.rl %[tmp], %[desired], (%[ptr])\n"
133- " bnez %[tmp], 1b\n"
134- " li %[result], 1\n"
135- " j 3f\n"
136- " 2:sw %[result], (%[old])\n"
137- " li %[result], 0\n"
138- " 3:\n"
139- : [result ]"+r" (result ), [tmp ]"+r" (tmp ), [ptr ]"+r" (ptr )
140- : [desired ]"r" (desired ), [old ]"r" (old )
141- : "memory" );
129+ " fence iorw, ow\n"
130+ "1: lr.w.aq %[result], (%[ptr])\n"
131+ " bne %[result], %[tmp], 2f\n"
132+ " sc.w.rl %[tmp], %[desired], (%[ptr])\n"
133+ " bnez %[tmp], 1b\n"
134+ " li %[result], 1\n"
135+ " j 3f\n"
136+ " 2:sw %[result], (%[old])\n"
137+ " li %[result], 0\n"
138+ " 3:\n"
139+ : [result ] "+r" (result ), [tmp ] "+r" (tmp ), [ptr ] "+r" (ptr )
140+ : [desired ] "r" (desired ), [old ] "r" (old )
141+ : "memory" );
142142#elif __riscv_xlen == 64
143143 asm volatile (
144- " fence iorw, ow\n"
145- "1: lr.d.aq %[result], (%[ptr])\n"
146- " bne %[result], %[tmp], 2f\n"
147- " sc.d.rl %[tmp], %[desired], (%[ptr])\n"
148- " bnez %[tmp], 1b\n"
149- " li %[result], 1\n"
150- " j 3f\n"
151- " 2:sd %[result], (%[old])\n"
152- " li %[result], 0\n"
153- " 3:\n"
154- : [result ]"+r" (result ), [tmp ]"+r" (tmp ), [ptr ]"+r" (ptr )
155- : [desired ]"r" (desired ), [old ]"r" (old )
156- : "memory" );
144+ " fence iorw, ow\n"
145+ "1: lr.d.aq %[result], (%[ptr])\n"
146+ " bne %[result], %[tmp], 2f\n"
147+ " sc.d.rl %[tmp], %[desired], (%[ptr])\n"
148+ " bnez %[tmp], 1b\n"
149+ " li %[result], 1\n"
150+ " j 3f\n"
151+ " 2:sd %[result], (%[old])\n"
152+ " li %[result], 0\n"
153+ " 3:\n"
154+ : [result ] "+r" (result ), [tmp ] "+r" (tmp ), [ptr ] "+r" (ptr )
155+ : [desired ] "r" (desired ), [old ] "r" (old )
156+ : "memory" );
157157#endif
158158 return result ;
159159}
0 commit comments