The function to map xen memory is not the same on every architecture.
On ARM, the mappings require to be cacheable and pmap_mapdev doesn't do that.
Replace every call of pmap_mapdev in xen code by xen_pmap
extern start_info_t *xen_start_info;
+#define xen_pmap(pa, size) pmap_mapdev((pa), (size))
+
#endif /* !__ASSEMBLY__ */
#endif /* _MACHINE_XEN_XEN_OS_H_ */
if (xen_hvm_domain()) {
xs.evtchn = hvm_get_parameter(HVM_PARAM_STORE_EVTCHN);
xs.gpfn = hvm_get_parameter(HVM_PARAM_STORE_PFN);
- xen_store = pmap_mapdev(xs.gpfn * PAGE_SIZE, PAGE_SIZE);
+ xen_store = xen_pmap(xs.gpfn * PAGE_SIZE, PAGE_SIZE);
xs.initialized = true;
} else if (xen_pv_domain()) {
if (HYPERVISOR_start_info->store_evtchn == 0) {
#define rdtscll(val) \
__asm__ __volatile__("rdtsc" : "=A" (val))
+#define xen_pmap(pa, size) pmap_mapdev((pa), (size))
+
#endif /* !__ASSEMBLY__ */
#endif /* _MACHINE_XEN_XEN_OS_H_ */