On 2017-09-13 16:29, Ralf Ramsauer wrote: > cpu_relax() is currently defined in inmate.h. But we need cpu_relax() in > places where we don't want to include inmate.h. Use this chance to > implement memory_barrier() as well. > > As ARM and ARM64 don't differ for those definitions we can use a common > header file for both architectures.
...and - missing signed-off. Jan > --- > inmates/lib/arm-common/include/asm/processor.h | 49 > ++++++++++++++++++++++++++ > inmates/lib/arm-common/include/inmate.h | 6 +--- > 2 files changed, 50 insertions(+), 5 deletions(-) > create mode 100644 inmates/lib/arm-common/include/asm/processor.h > > diff --git a/inmates/lib/arm-common/include/asm/processor.h > b/inmates/lib/arm-common/include/asm/processor.h > new file mode 100644 > index 00000000..7873971e > --- /dev/null > +++ b/inmates/lib/arm-common/include/asm/processor.h > @@ -0,0 +1,49 @@ > +/* > + * Jailhouse, a Linux-based partitioning hypervisor > + * > + * Copyright (c) OTH Regensburg, 2017 > + * > + * Authors: > + * Ralf Ramsauer <[email protected]> > + * > + * This work is licensed under the terms of the GNU GPL, version 2. See > + * the COPYING file in the top-level directory. > + * > + * Alternatively, you can use or redistribute this file under the following > + * BSD license: > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * > + * 1. Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * > + * 2. Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in the > + * documentation and/or other materials provided with the distribution. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS > IS" > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > + * THE POSSIBILITY OF SUCH DAMAGE. > + */ > + > +#define dmb(domain) asm volatile("dmb " #domain ::: "memory") > + > +static inline void cpu_relax(void) > +{ > + asm volatile("" : : : "memory"); > +} > + > +static inline void memory_barrier(void) > +{ > + dmb(ish); > +} > diff --git a/inmates/lib/arm-common/include/inmate.h > b/inmates/lib/arm-common/include/inmate.h > index da0d4050..e4c256d2 100644 > --- a/inmates/lib/arm-common/include/inmate.h > +++ b/inmates/lib/arm-common/include/inmate.h > @@ -76,11 +76,6 @@ static inline void mmio_write32(void *address, u32 value) > *(volatile u32 *)address = value; > } > > -static inline void cpu_relax(void) > -{ > - asm volatile("" : : : "memory"); > -} > - > typedef void (*irq_handler_t)(unsigned int); > void gic_setup(irq_handler_t handler, void *irq_stack); > void gic_enable_irq(unsigned int irq); > @@ -92,6 +87,7 @@ void timer_start(u64 timeout); > > void inmate_main(void *irq_stack); > > +#include <asm/processor.h> > #include <arch/inmate.h> > > #include "../inmate_common.h" > -- Siemens AG, Corporate Technology, CT RDA ITP SES-DE Corporate Competence Center Embedded Linux -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
