[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [Bug 657006] Re: arm v7M - svc insn doesn't trigger PendSV
From: |
Mark Phillips |
Subject: |
[Qemu-devel] [Bug 657006] Re: arm v7M - svc insn doesn't trigger PendSV handler |
Date: |
Wed, 22 Aug 2012 14:37:18 -0000 |
I have put together a test program and tried against a vanila copy of
qemu 1.1.1
The SVC wil be completely masked unless I apply patch 0002-target-arm-
Disable-priority_mask-feature.patch, which hacks arm_gic.c to initialise
the gic priority_mask to 0x100 instead of 0xf0. There doesn't appear to
be anyway to write to the gix priority_mask from arm code - maybe it
should be linked to the ARM Cortex BASEPRI?
Anyway the test code indicates execution does continue after the SVC
call before the exception is handled.
Where would you like me to upload/send the test code?
Cheers
Mark
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/657006
Title:
arm v7M - svc insn doesn't trigger PendSV handler
Status in QEMU:
New
Bug description:
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)
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/657006/+subscriptions
- [Qemu-devel] [Bug 657006] Re: arm v7M - svc insn doesn't trigger PendSV handler, Mark Phillips, 2012/08/20
- [Qemu-devel] [Bug 657006] Re: arm v7M - svc insn doesn't trigger PendSV handler, Mark Phillips, 2012/08/22
- [Qemu-devel] [Bug 657006] Re: arm v7M - svc insn doesn't trigger PendSV handler, Mark Phillips, 2012/08/22
- [Qemu-devel] [Bug 657006] Re: arm v7M - svc insn doesn't trigger PendSV handler, Peter Maydell, 2012/08/22
- [Qemu-devel] [Bug 657006] Re: arm v7M - svc insn doesn't trigger PendSV handler, Mark Phillips, 2012/08/22
- [Qemu-devel] [Bug 657006] Re: arm v7M - svc insn doesn't trigger PendSV handler,
Mark Phillips <=
- [Qemu-devel] [Bug 657006] Re: arm v7M - svc insn doesn't trigger PendSV handler, Mark Phillips, 2012/08/22