summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chip/npcx/clock.c10
-rw-r--r--core/cortex-m/task.c5
2 files changed, 6 insertions, 9 deletions
diff --git a/chip/npcx/clock.c b/chip/npcx/clock.c
index 8021f3c4d6..e2f071fea8 100644
--- a/chip/npcx/clock.c
+++ b/chip/npcx/clock.c
@@ -342,11 +342,10 @@ void __idle(void)
* Workaround: Apply the same bypass of idle.
*/
asm ("push {r0-r5}\n"
- "ldr r0, =0x100A8000\n"
"wfi\n"
- "ldm r0, {r0-r5}\n"
+ "ldm %0, {r0-r5}\n"
"pop {r0-r5}\n"
- "isb\n"
+ "isb\n" :: "r" (0x100A8000)
);
/* Get time delay cause of deep idle */
@@ -393,11 +392,10 @@ void __idle(void)
* Please see task.c for more detail
*/
asm ("push {r0-r5}\n"
- "ldr r0, =0x100A8000\n"
"wfi\n"
- "ldm r0, {r0-r5}\n"
+ "ldm %0, {r0-r5}\n"
"pop {r0-r5}\n"
- "isb\n"
+ "isb\n" :: "r" (0x100A8000)
);
}
diff --git a/core/cortex-m/task.c b/core/cortex-m/task.c
index 67785d4366..bab5310245 100644
--- a/core/cortex-m/task.c
+++ b/core/cortex-m/task.c
@@ -90,12 +90,11 @@ void __idle(void)
asm (
"cpsid i\n" /* Disable interrupt */
"push {r0-r5}\n" /* Save needed registers */
- "ldr r0, =0x100A8000\n" /* Set r0 to a valid RAM addr */
"wfi\n" /* Wait for int to enter idle */
- "ldm r0, {r0-r5}\n" /* Add a delay after WFI */
+ "ldm %0, {r0-r5}\n" /* Add a delay after WFI */
"pop {r0-r5}\n" /* Restore regs before enabling ints */
"isb\n" /* Flush the cpu pipeline */
- "cpsie i\n" /* Enable interrupts */
+ "cpsie i\n" :: "r" (0x100A8000) /* Enable interrupts */
);
#else
/*