|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH ARM v6 09/14] mini-os: arm: scheduling
On Wed, 2014-07-16 at 12:07 +0100, Thomas Leonard wrote:
> Based on an initial patch by Karim Raslan.
>
> Signed-off-by: Karim Allah Ahmed <karim.allah.ahmed@xxxxxxxxx>
> Signed-off-by: Thomas Leonard <talex5@xxxxxxxxx>
> ---
> extras/mini-os/arch/arm/arm32.S | 22 ++++++++++++++++++++++
> extras/mini-os/arch/arm/sched.c | 38 ++++++++++++++++++++++++++++++++++++++
> 2 files changed, 60 insertions(+)
> create mode 100644 extras/mini-os/arch/arm/sched.c
>
> diff --git a/extras/mini-os/arch/arm/arm32.S b/extras/mini-os/arch/arm/arm32.S
> index 88efe24..56429b1 100644
> --- a/extras/mini-os/arch/arm/arm32.S
> +++ b/extras/mini-os/arch/arm/arm32.S
> @@ -204,8 +204,30 @@ irq_handler:
> IRQ_handler:
> .long 0x0
>
> +
> +.globl __arch_switch_threads
> +@ => r0 = &prev->sp
> +@ r1 = &next->sp
> +@ <= returns to next thread's saved return address
> +__arch_switch_threads:
> + stmia r0, {sp, lr} @ Store current sp and ip to prev's struct
> thread
> + str fp, [sp, #-4] @ Store fp on the old stack
> +
> + ldmia r1, {sp, lr} @ Load new sp, ip from next's struct thread
> + ldr fp, [sp, #-4] @ Restore fp from the stack
> +
> + mov pc, lr
I'm a bit confused by the lack of saving of the GPRs here. Shouldn't at
least the caller saved registers (r4..r11) be saved/restored here?
> +void run_idle_thread(void)
> +{
> + __asm__ __volatile__ ("mov sp, %0; mov pc, %1"::"r"(idle_thread->sp),
> "r"(idle_thread->ip));
Is bx preferred to mov pc these days? I don't know if it matters in this
case...
> + /* Never arrive here! */
> +}
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |