summaryrefslogtreecommitdiff
path: root/libcpu
diff options
context:
space:
mode:
authoraozima <[email protected]>2017-08-23 16:13:51 +0800
committeraozima <[email protected]>2017-08-23 16:13:51 +0800
commit9bbc4e5e6b6d5c6efe24484d9032a8b8da2f1920 (patch)
tree5e988af98b55cb1847729bae16ff0ad35abe1bc3 /libcpu
parent1f45d8c723cf8fd91a2f0ac6fec5ac9789c4cf66 (diff)
update cortex-m libcpu: fixed compile error.
Diffstat (limited to 'libcpu')
-rw-r--r--libcpu/arm/cortex-m3/cpuport.c11
-rw-r--r--libcpu/arm/cortex-m4/cpuport.c9
-rw-r--r--libcpu/arm/cortex-m7/cpuport.c9
3 files changed, 19 insertions, 10 deletions
diff --git a/libcpu/arm/cortex-m3/cpuport.c b/libcpu/arm/cortex-m3/cpuport.c
index f938bab800..10989ffc5b 100644
--- a/libcpu/arm/cortex-m3/cpuport.c
+++ b/libcpu/arm/cortex-m3/cpuport.c
@@ -368,11 +368,12 @@ __asm int __rt_ffs(int value)
{
CMP r0, #0x00
BEQ exit
+
RBIT r0, r0
CLZ r0, r0
ADDS r0, r0, #0x01
- exit
+exit
BX lr
}
#elif defined(__IAR_SYSTEMS_ICC__)
@@ -380,9 +381,11 @@ int __rt_ffs(int value)
{
if (value == 0) return value;
- __ASM("RBIT r0, r0");
- __ASM("CLZ r0, r0");
- __ASM("ADDS r0, r0, #0x01");
+ asm("RBIT %0, %1" : "=r"(value) : "r"(value));
+ asm("CLZ %0, %1" : "=r"(value) : "r"(value));
+ asm("ADDS %0, %1, #0x01" : "=r"(value) : "r"(value));
+
+ return value;
}
#elif defined(__GNUC__)
int __rt_ffs(int value)
diff --git a/libcpu/arm/cortex-m4/cpuport.c b/libcpu/arm/cortex-m4/cpuport.c
index 47d8473997..e74c337c60 100644
--- a/libcpu/arm/cortex-m4/cpuport.c
+++ b/libcpu/arm/cortex-m4/cpuport.c
@@ -238,6 +238,7 @@ __asm int __rt_ffs(int value)
{
CMP r0, #0x00
BEQ exit
+
RBIT r0, r0
CLZ r0, r0
ADDS r0, r0, #0x01
@@ -250,9 +251,11 @@ int __rt_ffs(int value)
{
if (value == 0) return value;
- __ASM("RBIT r0, r0");
- __ASM("CLZ r0, r0");
- __ASM("ADDS r0, r0, #0x01");
+ asm("RBIT %0, %1" : "=r"(value) : "r"(value));
+ asm("CLZ %0, %1" : "=r"(value) : "r"(value));
+ asm("ADDS %0, %1, #0x01" : "=r"(value) : "r"(value));
+
+ return value;
}
#elif defined(__GNUC__)
int __rt_ffs(int value)
diff --git a/libcpu/arm/cortex-m7/cpuport.c b/libcpu/arm/cortex-m7/cpuport.c
index 47d8473997..e74c337c60 100644
--- a/libcpu/arm/cortex-m7/cpuport.c
+++ b/libcpu/arm/cortex-m7/cpuport.c
@@ -238,6 +238,7 @@ __asm int __rt_ffs(int value)
{
CMP r0, #0x00
BEQ exit
+
RBIT r0, r0
CLZ r0, r0
ADDS r0, r0, #0x01
@@ -250,9 +251,11 @@ int __rt_ffs(int value)
{
if (value == 0) return value;
- __ASM("RBIT r0, r0");
- __ASM("CLZ r0, r0");
- __ASM("ADDS r0, r0, #0x01");
+ asm("RBIT %0, %1" : "=r"(value) : "r"(value));
+ asm("CLZ %0, %1" : "=r"(value) : "r"(value));
+ asm("ADDS %0, %1, #0x01" : "=r"(value) : "r"(value));
+
+ return value;
}
#elif defined(__GNUC__)
int __rt_ffs(int value)