[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [Bug 657006] [NEW] arm - svc instruction
From: |
jb |
Subject: |
[Qemu-devel] [Bug 657006] [NEW] arm - svc instruction |
Date: |
Fri, 08 Oct 2010 18:00:54 -0000 |
Public bug reported:
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)
** Affects: qemu
Importance: Undecided
Status: New
--
arm - svc instruction
https://bugs.launchpad.net/bugs/657006
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |