qemu-devel
[Top][All Lists]
Advanced

[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)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]