mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/arm32: mpu: Stubs to build MPU for arm32
Add stubs to enable compilation. is_xen_heap_page() and is_xen_heap_mfn() are not implemented for arm32 MPU. Thus, introduce the stubs for these functions in asm/mpu/mm.h and move the original code to asm/mmu/mm.h (as it is used for arm32 MMU based system). Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com> Reviewed-by: Michal Orzel <michal.orzel@amd.com> Tested-by: Luca Fancellu <luca.fancellu@arm.com>
This commit is contained in:
1 parent
76e9dd7cdc
commit
62a4858dd5
8 files changed
+106
-8
No files matched your search
@@ -1 +1,3 @@
|
||||
obj-y += head.o
|
||||
obj-y += p2m.o
|
||||
obj-y += smpboot.o
|
||||
@@ -0,0 +1,19 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <asm/p2m.h>
|
||||
#include <xen/bug.h>
|
||||
#include <xen/init.h>
|
||||
|
||||
void __init setup_virt_paging(void)
|
||||
{
|
||||
BUG_ON("unimplemented");
|
||||
}
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* mode: C
|
||||
* c-file-style: "BSD"
|
||||
* c-basic-offset: 4
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*/
|
||||
@@ -0,0 +1,26 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <xen/bug.h>
|
||||
#include <xen/errno.h>
|
||||
#include <xen/mm.h>
|
||||
#include <xen/stdbool.h>
|
||||
|
||||
int prepare_secondary_mm(int cpu)
|
||||
{
|
||||
BUG_ON("unimplemented");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
void update_boot_mapping(bool enable)
|
||||
{
|
||||
BUG_ON("unimplemented");
|
||||
}
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* mode: C
|
||||
* c-file-style: "BSD"
|
||||
* c-basic-offset: 4
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*/
|
||||
@@ -170,14 +170,7 @@ struct page_info
|
||||
#define _PGC_need_scrub _PGC_allocated
|
||||
#define PGC_need_scrub PGC_allocated
|
||||
|
||||
#ifdef CONFIG_ARM_32
|
||||
#define is_xen_heap_page(page) is_xen_heap_mfn(page_to_mfn(page))
|
||||
#define is_xen_heap_mfn(mfn) ({ \
|
||||
unsigned long mfn_ = mfn_x(mfn); \
|
||||
(mfn_ >= mfn_x(directmap_mfn_start) && \
|
||||
mfn_ < mfn_x(directmap_mfn_end)); \
|
||||
})
|
||||
#else
|
||||
#ifdef CONFIG_ARM_64
|
||||
#define is_xen_heap_page(page) ((page)->count_info & PGC_xen_heap)
|
||||
#define is_xen_heap_mfn(mfn) \
|
||||
(mfn_valid(mfn) && is_xen_heap_page(mfn_to_page(mfn)))
|
||||
|
||||
@@ -27,6 +27,13 @@ extern unsigned long directmap_base_pdx;
|
||||
})
|
||||
|
||||
#ifdef CONFIG_ARM_32
|
||||
#define is_xen_heap_page(page) is_xen_heap_mfn(page_to_mfn(page))
|
||||
#define is_xen_heap_mfn(mfn) ({ \
|
||||
unsigned long mfn_ = mfn_x(mfn); \
|
||||
(mfn_ >= mfn_x(directmap_mfn_start) && \
|
||||
mfn_ < mfn_x(directmap_mfn_end)); \
|
||||
})
|
||||
|
||||
/**
|
||||
* Find the virtual address corresponding to a machine address
|
||||
*
|
||||
|
||||
@@ -13,6 +13,11 @@ extern struct page_info *frame_table;
|
||||
|
||||
#define virt_to_maddr(va) ((paddr_t)((vaddr_t)(va) & PADDR_MASK))
|
||||
|
||||
#ifdef CONFIG_ARM_32
|
||||
#define is_xen_heap_page(page) ({ BUG_ON("unimplemented"); false; })
|
||||
#define is_xen_heap_mfn(mfn) ({ BUG_ON("unimplemented"); false; })
|
||||
#endif
|
||||
|
||||
/* On MPU systems there is no translation, ma == va. */
|
||||
static inline void *maddr_to_virt(paddr_t ma)
|
||||
{
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
obj-$(CONFIG_ARM_32) += domain-page.o
|
||||
obj-y += mm.o
|
||||
obj-y += p2m.o
|
||||
obj-y += setup.init.o
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
|
||||
#include <xen/bug.h>
|
||||
#include <xen/domain_page.h>
|
||||
#include <xen/mm-frame.h>
|
||||
#include <xen/types.h>
|
||||
|
||||
void *map_domain_page_global(mfn_t mfn)
|
||||
{
|
||||
BUG_ON("unimplemented");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Map a page of domheap memory */
|
||||
void *map_domain_page(mfn_t mfn)
|
||||
{
|
||||
BUG_ON("unimplemented");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Release a mapping taken with map_domain_page() */
|
||||
void unmap_domain_page(const void *ptr)
|
||||
{
|
||||
BUG_ON("unimplemented");
|
||||
}
|
||||
|
||||
mfn_t domain_page_map_to_mfn(const void *ptr)
|
||||
{
|
||||
BUG_ON("unimplemented");
|
||||
return INVALID_MFN;
|
||||
}
|
||||
|
||||
void unmap_domain_page_global(const void *va)
|
||||
{
|
||||
BUG_ON("unimplemented");
|
||||
}
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
* mode: C
|
||||
* c-file-style: "BSD"
|
||||
* c-basic-offset: 4
|
||||
* indent-tabs-mode: nil
|
||||
* End:
|
||||
*/
|
||||