You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by GitBox <gi...@apache.org> on 2020/04/20 23:21:31 UTC
[GitHub] [incubator-nuttx] masayuki2009 edited a comment on issue #802: Locking case in SMP mode
masayuki2009 edited a comment on issue #802:
URL: https://github.com/apache/incubator-nuttx/issues/802#issuecomment-616861005
@patacongo
> If you move the __err to _arm_doirq() after CURRENT_REGS is set, it may work.
I've just revert the patch which @xiaoxiang781216 attached and added the following code.
```
--- a/arch/arm/src/armv7-a/arm_doirq.c
+++ b/arch/arm/src/armv7-a/arm_doirq.c
@@ -91,6 +91,14 @@ static inline uint32_t *_arm_doirq(int irq, uint32_t *regs)
CURRENT_REGS = regs;
+#if 1
+ int cpu = up_cpu_index();
+ if (cpu != 0)
+ {
+ _err("cpu = %d, irq %d.\n", cpu, irq);
+ }
+#endif
+
/* Deliver the IRQ */
```
Actually hello app works on qemu. (smp and ostest apps also work)
```
qemu-system-arm -M sabrelite -smp 4 -kernel ./nuttx/nuttx -nographic -s
ABCDGHIJKNOPQ
NuttShell (NSH) NuttX-8.2.0
nsh> dmesg
_arm_doirq: cpu = 1, irq 1.
_arm_doirq: cpu = 2, irq 1.
_arm_doirq: cpu = 3, irq 1.
nsh> hello
Hello, World!!
nsh> dmesg
_arm_doirq: cpu = 1, irq 2.
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org