diff options
Diffstat (limited to 'results/classifier/accel-gemma3:12b/kvm/657006')
| -rw-r--r-- | results/classifier/accel-gemma3:12b/kvm/657006 | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/results/classifier/accel-gemma3:12b/kvm/657006 b/results/classifier/accel-gemma3:12b/kvm/657006 new file mode 100644 index 00000000..cfc193af --- /dev/null +++ b/results/classifier/accel-gemma3:12b/kvm/657006 @@ -0,0 +1,45 @@ + +arm v7M - svc insn doesn't trigger PendSV handler + +The svc instruction doesn't work as expected. + +-> qemu 0.13.0 rc1 (git) + +Test : demo with freeRTOS (for example FreeRTOS-6.0.5/Demo/CORTEX_LM3S811_GCC) with the card lm3s811evb. + +If we start the scheduler, it will call that function (__attribute__ (( naked ))) : + +void vPortStartFirstTask( void ) + +{ + + __asm volatile( + + " ldr r0, =0xE000ED08 \n" /* Use the NVIC offset register to locate the stack. */ + + " ldr r0, [r0] \n" + + " ldr r0, [r0] \n" + + " msr msp, r0 \n" /* Set the msp back to the start of the stack. */ + + " svc 0 \n" /* System call to start first task. */ + + ); + +} + +The 4 first lines in asm work fine. The scv 0 call will rise the right interrupt in qemu (line 151, in arm_gic.c, best_irq = 15). However, it will never call the PendSV Handler (xPortPendSVHandler here). This function is recorded in the nvic vector. +Next, (after the svc), the processor will execute the line after in code (this is a naked function) so the next function written after vPortStartFirstTask in the code. + + +command line : +console 1 : qemu-system-arm -M lm3s6965evb -kernel gcc/RTOSDemo.axf -s -S +console 2 : arm-none-eabi-gdb -ex "target remote localhost:1234" gcc/RTOSDemo.axf + +arm-none-eabi from http://www.codesourcery.com/sgpp/lite/arm/portal/release1294 +Same error with another project with arm-elf + +processor : arm cortex m3 + +host : gentoo (2.6.35-r9) (without kqemu) \ No newline at end of file |