|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 05/45] arm: avoid inline asm for dsb, isb, wfi and sev.
On Wed, 23 Jan 2013, Ian Campbell wrote:
> "dsb" must be written "dsb sy" on arm64. "dsb sy" is also valid (and
> synonymous) on arm32 but we have a macro so lets use it.
>
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> xen/arch/arm/domain.c | 5 ++++-
> xen/arch/arm/smpboot.c | 10 ++++++----
> 2 files changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
> index 59d8d73..5506f78 100644
> --- a/xen/arch/arm/domain.c
> +++ b/xen/arch/arm/domain.c
> @@ -27,7 +27,10 @@ void idle_loop(void)
>
> local_irq_disable();
> if ( cpu_is_haltable(smp_processor_id()) )
> - asm volatile ("dsb; wfi");
> + {
> + dsb();
> + wfi();
> + }
> local_irq_enable();
>
> do_tasklet();
> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> index c7a586b..8956ead 100644
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -122,7 +122,8 @@ make_cpus_ready(unsigned int max_cpus, unsigned long
> boot_phys_offset)
> /* TODO: handle boards where CPUIDs are not contiguous */
> *gate = i;
> flush_xen_dcache(*gate);
> - asm volatile("isb; sev");
> + isb();
> + sev();
> /* And wait for it to respond */
> while ( ready_cpus < i )
> smp_rmb();
> @@ -205,8 +206,8 @@ void stop_cpu(void)
> /* Make sure the write happens before we sleep forever */
> dsb();
> isb();
> - while ( 1 )
> - asm volatile("wfi");
> + while ( 1 )
> + wfi();
> }
>
> /* Bring up a remote CPU */
> @@ -221,7 +222,8 @@ int __cpu_up(unsigned int cpu)
> /* we need to make sure that the change to smp_up_cpu is visible to
> * secondary cpus with D-cache off */
> flush_xen_dcache(smp_up_cpu);
> - asm volatile("isb; sev");
> + isb();
> + sev();
>
> while ( !cpu_online(cpu) )
> {
> --
> 1.7.2.5
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |