On 2017-03-16 23:17, Ralf Ramsauer wrote:
> And use this chance to remove unneeded #ifdef ASSEMBLY guards.
>
> Signed-off-by: Ralf Ramsauer <[email protected]>
> ---
> inmates/lib/{arm64 => arm-common}/include/inmate.h | 17 +----
> inmates/lib/arm/include/arch/inmate.h | 26 +++++++
> inmates/lib/arm/include/inmate.h | 87
> ----------------------
> inmates/lib/arm64/include/arch/inmate.h | 25 +++++++
> 4 files changed, 52 insertions(+), 103 deletions(-)
> rename inmates/lib/{arm64 => arm-common}/include/inmate.h (80%)
> create mode 100644 inmates/lib/arm/include/arch/inmate.h
> delete mode 100644 inmates/lib/arm/include/inmate.h
> create mode 100644 inmates/lib/arm64/include/arch/inmate.h
>
> diff --git a/inmates/lib/arm64/include/inmate.h
> b/inmates/lib/arm-common/include/inmate.h
> similarity index 80%
> rename from inmates/lib/arm64/include/inmate.h
> rename to inmates/lib/arm-common/include/inmate.h
> index 24e828a144..99ab37f0c6 100644
> --- a/inmates/lib/arm64/include/inmate.h
> +++ b/inmates/lib/arm-common/include/inmate.h
> @@ -13,7 +13,6 @@
> #ifndef _JAILHOUSE_INMATE_H
> #define _JAILHOUSE_INMATE_H
>
> -#ifndef __ASSEMBLY__
> typedef signed char s8;
> typedef unsigned char u8;
>
> @@ -56,20 +55,6 @@ static inline void cpu_relax(void)
> asm volatile("" : : : "memory");
> }
>
> -/*
> - * To ease the debugging, we can send a spurious hypercall, which should
> return
> - * -ENOSYS, but appear in the hypervisor stats for this cell.
> - */
> -static inline void heartbeat(void)
> -{
> - asm volatile (
> - "mov x0, %0\n"
> - "hvc #0\n"
> - : : "r" (0xbea7) : "x0");
> -}
> -
> -void __attribute__((used)) vector_irq(void);
> -
> typedef void (*irq_handler_t)(unsigned int);
> void gic_setup(irq_handler_t handler);
> void gic_enable_irq(unsigned int irq);
> @@ -79,7 +64,7 @@ u64 timer_get_ticks(void);
> u64 timer_ticks_to_ns(u64 ticks);
> void timer_start(u64 timeout);
>
> -#endif /* !__ASSEMBLY__ */
> +#include <arch/inmate.h>
>
> #include "../inmate_common.h"
>
> diff --git a/inmates/lib/arm/include/arch/inmate.h
> b/inmates/lib/arm/include/arch/inmate.h
> new file mode 100644
> index 0000000000..5c2ee1a670
> --- /dev/null
> +++ b/inmates/lib/arm/include/arch/inmate.h
> @@ -0,0 +1,26 @@
> +/*
> + * Jailhouse, a Linux-based partitioning hypervisor
> + *
> + * Copyright (c) ARM Limited, 2014
> + *
> + * Authors:
> + * Jean-Philippe Brucker <[email protected]>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2. See
> + * the COPYING file in the top-level directory.
> + */
> +
> +/*
> + * To ease the debugging, we can send a spurious hypercall, which should
> return
> + * -ENOSYS, but appear in the hypervisor stats for this cell.
> + */
> +static inline void heartbeat(void)
> +{
> + asm volatile (
> + ".arch_extension virt\n"
> + "mov r0, %0\n"
> + "hvc #0\n"
> + : : "r" (0xbea7) : "r0");
> +}
> +
> +void __attribute__((interrupt("IRQ"))) __attribute__((used))
> vector_irq(void);
> diff --git a/inmates/lib/arm/include/inmate.h
> b/inmates/lib/arm/include/inmate.h
> deleted file mode 100644
> index bbf93131b4..0000000000
> --- a/inmates/lib/arm/include/inmate.h
> +++ /dev/null
> @@ -1,87 +0,0 @@
> -/*
> - * Jailhouse, a Linux-based partitioning hypervisor
> - *
> - * Copyright (c) ARM Limited, 2014
> - *
> - * Authors:
> - * Jean-Philippe Brucker <[email protected]>
> - *
> - * This work is licensed under the terms of the GNU GPL, version 2. See
> - * the COPYING file in the top-level directory.
> - */
> -
> -#ifndef _JAILHOUSE_INMATE_H
> -#define _JAILHOUSE_INMATE_H
> -
> -#ifndef __ASSEMBLY__
> -typedef signed char s8;
> -typedef unsigned char u8;
> -
> -typedef signed short s16;
> -typedef unsigned short u16;
> -
> -typedef signed int s32;
> -typedef unsigned int u32;
> -
> -typedef signed long long s64;
> -typedef unsigned long long u64;
> -
> -static inline u8 mmio_read8(void *address)
> -{
> - return *(volatile u8 *)address;
> -}
> -
> -static inline void mmio_write8(void *address, u8 value)
> -{
> - *(volatile u8 *)address = value;
> -}
> -
> -static inline void mmio_write16(void *address, u16 value)
> -{
> - *(volatile u16 *)address = value;
> -}
> -
> -static inline u32 mmio_read32(void *address)
> -{
> - return *(volatile u32 *)address;
> -}
> -
> -static inline void mmio_write32(void *address, u32 value)
> -{
> - *(volatile u32 *)address = value;
> -}
> -
> -static inline void cpu_relax(void)
> -{
> - asm volatile("" : : : "memory");
> -}
> -
> -/*
> - * To ease the debugging, we can send a spurious hypercall, which should
> return
> - * -ENOSYS, but appear in the hypervisor stats for this cell.
> - */
> -static inline void heartbeat(void)
> -{
> - asm volatile (
> - ".arch_extension virt\n"
> - "mov r0, %0\n"
> - "hvc #0\n"
> - : : "r" (0xbea7) : "r0");
> -}
> -
> -void __attribute__((interrupt("IRQ"))) __attribute__((used))
> vector_irq(void);
> -
> -typedef void (*irq_handler_t)(unsigned int);
> -void gic_setup(irq_handler_t handler);
> -void gic_enable_irq(unsigned int irq);
> -
> -unsigned long timer_get_frequency(void);
> -u64 timer_get_ticks(void);
> -u64 timer_ticks_to_ns(u64 ticks);
> -void timer_start(u64 timeout);
> -
> -#endif /* !__ASSEMBLY__ */
> -
> -#include "../inmate_common.h"
> -
> -#endif /* !_JAILHOUSE_INMATE_H */
> diff --git a/inmates/lib/arm64/include/arch/inmate.h
> b/inmates/lib/arm64/include/arch/inmate.h
> new file mode 100644
> index 0000000000..cd9275ddf0
> --- /dev/null
> +++ b/inmates/lib/arm64/include/arch/inmate.h
> @@ -0,0 +1,25 @@
> +/*
> + * Jailhouse, a Linux-based partitioning hypervisor
> + *
> + * Copyright (c) ARM Limited, 2014
> + *
> + * Authors:
> + * Jean-Philippe Brucker <[email protected]>
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2. See
> + * the COPYING file in the top-level directory.
> + */
> +
> +/*
> + * To ease the debugging, we can send a spurious hypercall, which should
> return
> + * -ENOSYS, but appear in the hypervisor stats for this cell.
> + */
> +static inline void heartbeat(void)
> +{
> + asm volatile (
> + "mov x0, %0\n"
> + "hvc #0\n"
> + : : "r" (0xbea7) : "x0");
> +}
> +
> +void __attribute__((used)) vector_irq(void);
>
Can be done separately, but we still have the open topic of tagging
vector_irq as interrupt on 64-bit.
At that chance, attributes should be combined:
__attribute__((interrupt("IRQ), used)).
Jan
--
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.