10#ifndef __XEN_PUBLIC_ARCH_ARM_H__
11#define __XEN_PUBLIC_ARCH_ARM_H__
183#define XEN_HYPERCALL_TAG 0XEA1
185#if defined(__XEN__) || defined(__XEN_TOOLS__) || defined(__GNUC__)
186#define int64_aligned_t int64_t __attribute__((__aligned__(8)))
187#define uint64_aligned_t uint64_t __attribute__((__aligned__(8)))
191#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \
192 typedef union { type *p; unsigned long q; } \
193 __guest_handle_ ## name; \
194 typedef union { type *p; uint64_aligned_t q; } \
195 __guest_handle_64_ ## name
204#define __DEFINE_XEN_GUEST_HANDLE(name, type) \
205 ___DEFINE_XEN_GUEST_HANDLE(name, type); \
206 ___DEFINE_XEN_GUEST_HANDLE(const_##name, const type)
207#define DEFINE_XEN_GUEST_HANDLE(name) __DEFINE_XEN_GUEST_HANDLE(name, name)
208#define __XEN_GUEST_HANDLE(name) __guest_handle_64_ ## name
209#define XEN_GUEST_HANDLE(name) __XEN_GUEST_HANDLE(name)
210#define XEN_GUEST_HANDLE_PARAM(name) __guest_handle_ ## name
211#define set_xen_guest_handle_raw(hnd, val) \
213 __typeof__(&(hnd)) _sxghr_tmp = &(hnd); \
215 _sxghr_tmp->p = (val); \
217#define set_xen_guest_handle(hnd, val) set_xen_guest_handle_raw(hnd, val)
220#define PRI_xen_pfn PRIx64
221#define PRIu_xen_pfn PRIu64
227#define XEN_LEGACY_MAX_VCPUS 1
230#define PRI_xen_ulong PRIx64
232#if defined(__XEN__) || defined(__XEN_TOOLS__)
233#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
235# define __DECL_REG(n64, n32) union { \
241#define __DECL_REG(n64, n32) uint64_t n64
297 uint32_t spsr_fiq, spsr_irq, spsr_und, spsr_abt;
309#define _VGCF_online 0
310#define VGCF_online (1<<_VGCF_online)
325#define XEN_DOMCTL_CONFIG_GIC_NATIVE 0
326#define XEN_DOMCTL_CONFIG_GIC_V2 1
327#define XEN_DOMCTL_CONFIG_GIC_V3 2
329#define XEN_DOMCTL_CONFIG_TEE_NONE 0
330#define XEN_DOMCTL_CONFIG_TEE_OPTEE 1
331#define XEN_DOMCTL_CONFIG_TEE_FFA 2
333#define XEN_DOMCTL_CONFIG_ARM_SCI_NONE 0
334#define XEN_DOMCTL_CONFIG_ARM_SCI_SCMI_SMC 1
375#if defined(__XEN__) || defined(__XEN_TOOLS__)
379#define PSR_THUMB (1U <<5)
380#define PSR_FIQ_MASK (1U <<6)
381#define PSR_IRQ_MASK (1U <<7)
382#define PSR_ABT_MASK (1U <<8)
383#define PSR_BIG_ENDIAN (1U << 9)
384#define PSR_DBG_MASK (1U << 9)
385#define PSR_IT_MASK (0x0600fc00U)
386#define PSR_JAZELLE (1U << 24)
387#define PSR_Z (1U << 30)
390#define PSR_MODE_USR 0x10U
391#define PSR_MODE_FIQ 0x11U
392#define PSR_MODE_IRQ 0x12U
393#define PSR_MODE_SVC 0x13U
394#define PSR_MODE_MON 0x16U
395#define PSR_MODE_ABT 0x17U
396#define PSR_MODE_HYP 0x1aU
397#define PSR_MODE_UND 0x1bU
398#define PSR_MODE_SYS 0x1fU
401#define PSR_MODE_BIT 0x10U
402#define PSR_MODE_EL3h 0x0dU
403#define PSR_MODE_EL3t 0x0cU
404#define PSR_MODE_EL2h 0x09U
405#define PSR_MODE_EL2t 0x08U
406#define PSR_MODE_EL1h 0x05U
407#define PSR_MODE_EL1t 0x04U
408#define PSR_MODE_EL0t 0x00U
418#define PSR_GUEST32_INIT (PSR_Z|PSR_ABT_MASK|PSR_FIQ_MASK|PSR_IRQ_MASK|PSR_MODE_SVC)
419#define PSR_GUEST64_INIT (PSR_ABT_MASK|PSR_FIQ_MASK|PSR_IRQ_MASK|PSR_MODE_EL1h)
421#define SCTLR_GUEST_INIT xen_mk_ullong(0x00c50078)
434#define GUEST_VIRTIO_MMIO_BASE xen_mk_ullong(0x02000000)
435#define GUEST_VIRTIO_MMIO_SIZE xen_mk_ullong(0x00100000)
443#define GUEST_GICD_BASE xen_mk_ullong(0x03001000)
444#define GUEST_GICD_SIZE xen_mk_ullong(0x00001000)
445#define GUEST_GICC_BASE xen_mk_ullong(0x03002000)
446#define GUEST_GICC_SIZE xen_mk_ullong(0x00002000)
449#define GUEST_GICV3_GICD_BASE xen_mk_ullong(0x03001000)
450#define GUEST_GICV3_GICD_SIZE xen_mk_ullong(0x00010000)
452#define GUEST_GICV3_RDIST_REGIONS 1
454#define GUEST_GICV3_GICR0_BASE xen_mk_ullong(0x03020000)
455#define GUEST_GICV3_GICR0_SIZE xen_mk_ullong(0x01000000)
461#define GUEST_VPCI_ECAM_BASE xen_mk_ullong(0x10000000)
462#define GUEST_VPCI_ECAM_SIZE xen_mk_ullong(0x10000000)
465#define GUEST_ACPI_BASE xen_mk_ullong(0x20000000)
466#define GUEST_ACPI_SIZE xen_mk_ullong(0x02000000)
469#define GUEST_PL011_BASE xen_mk_ullong(0x22000000)
470#define GUEST_PL011_SIZE xen_mk_ullong(0x00001000)
473#define GUEST_VPCI_ADDR_TYPE_MEM xen_mk_ullong(0x02000000)
474#define GUEST_VPCI_MEM_ADDR xen_mk_ullong(0x23000000)
475#define GUEST_VPCI_MEM_SIZE xen_mk_ullong(0x10000000)
481#define GUEST_GNTTAB_BASE xen_mk_ullong(0x38000000)
482#define GUEST_GNTTAB_SIZE xen_mk_ullong(0x01000000)
484#define GUEST_MAGIC_BASE xen_mk_ullong(0x39000000)
485#define GUEST_MAGIC_SIZE xen_mk_ullong(0x01000000)
487#define GUEST_RAM_BANKS 2
494#define GUEST_RAM0_BASE xen_mk_ullong(0x40000000)
495#define GUEST_RAM0_SIZE xen_mk_ullong(0xc0000000)
498#define GUEST_VPCI_ADDR_TYPE_PREFETCH_MEM xen_mk_ullong(0x43000000)
499#define GUEST_VPCI_PREFETCH_MEM_ADDR xen_mk_ullong(0x100000000)
500#define GUEST_VPCI_PREFETCH_MEM_SIZE xen_mk_ullong(0x100000000)
502#define GUEST_RAM1_BASE xen_mk_ullong(0x0200000000)
503#define GUEST_RAM1_SIZE xen_mk_ullong(0xfe00000000)
505#define GUEST_RAM_BASE GUEST_RAM0_BASE
507#define GUEST_RAM_MAX (GUEST_RAM0_SIZE + GUEST_RAM1_SIZE)
509#define GUEST_RAM_BANK_BASES { GUEST_RAM0_BASE, GUEST_RAM1_BASE }
510#define GUEST_RAM_BANK_SIZES { GUEST_RAM0_SIZE, GUEST_RAM1_SIZE }
513#define GUEST_MAX_VCPUS 128
517#define GUEST_TIMER_VIRT_PPI 27
518#define GUEST_TIMER_PHYS_S_PPI 29
519#define GUEST_TIMER_PHYS_NS_PPI 30
520#define GUEST_EVTCHN_PPI 31
522#define GUEST_VPL011_SPI 32
524#define GUEST_VIRTIO_MMIO_SPI_FIRST 33
525#define GUEST_VIRTIO_MMIO_SPI_LAST 43
537#define GUEST_FFA_NOTIF_PEND_INTR_ID 8
538#define GUEST_FFA_SCHEDULE_RECV_INTR_ID 9
541#define PSCI_cpu_suspend 0
542#define PSCI_cpu_off 1
544#define PSCI_migrate 3
struct arch_vcpu_info arch_vcpu_info_t
struct arch_shared_info arch_shared_info_t
struct xen_pmu_arch xen_pmu_arch_t
#define DEFINE_XEN_GUEST_HANDLE(name)
struct vcpu_guest_core_regs vcpu_guest_core_regs_t
struct vcpu_guest_context vcpu_guest_context_t
unsigned long long uint64_t
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define FILE_SECBOOT(_status)
Declare a file's UEFI Secure Boot permission status.
unsigned long xen_ulong_t
vcpu_guest_core_regs_t user_regs