19c17d615SPaolo Bonzini /*
29c17d615SPaolo Bonzini * Copyright (C) 2011 Citrix Ltd.
39c17d615SPaolo Bonzini *
49c17d615SPaolo Bonzini * This work is licensed under the terms of the GNU GPL, version 2. See
59c17d615SPaolo Bonzini * the COPYING file in the top-level directory.
69c17d615SPaolo Bonzini *
79c17d615SPaolo Bonzini */
89c17d615SPaolo Bonzini
99c17d615SPaolo Bonzini #ifndef XEN_MAPCACHE_H
109c17d615SPaolo Bonzini #define XEN_MAPCACHE_H
119c17d615SPaolo Bonzini
12*ec150c7eSMarkus Armbruster #include "exec/cpu-common.h"
13*ec150c7eSMarkus Armbruster
1404a8f72eSIgor Druzhinin typedef hwaddr (*phys_offset_to_gaddr_t)(hwaddr phys_offset,
1504a8f72eSIgor Druzhinin ram_addr_t size);
169c17d615SPaolo Bonzini #ifdef CONFIG_XEN
179c17d615SPaolo Bonzini
189c17d615SPaolo Bonzini void xen_map_cache_init(phys_offset_to_gaddr_t f,
199c17d615SPaolo Bonzini void *opaque);
209c17d615SPaolo Bonzini uint8_t *xen_map_cache(hwaddr phys_addr, hwaddr size,
211ff7c598SStefano Stabellini uint8_t lock, bool dma);
229c17d615SPaolo Bonzini ram_addr_t xen_ram_addr_from_mapcache(void *ptr);
239c17d615SPaolo Bonzini void xen_invalidate_map_cache_entry(uint8_t *buffer);
249c17d615SPaolo Bonzini void xen_invalidate_map_cache(void);
255ba3d756SIgor Druzhinin uint8_t *xen_replace_cache_entry(hwaddr old_phys_addr,
265ba3d756SIgor Druzhinin hwaddr new_phys_addr,
275ba3d756SIgor Druzhinin hwaddr size);
289c17d615SPaolo Bonzini #else
299c17d615SPaolo Bonzini
xen_map_cache_init(phys_offset_to_gaddr_t f,void * opaque)309c17d615SPaolo Bonzini static inline void xen_map_cache_init(phys_offset_to_gaddr_t f,
319c17d615SPaolo Bonzini void *opaque)
329c17d615SPaolo Bonzini {
339c17d615SPaolo Bonzini }
349c17d615SPaolo Bonzini
xen_map_cache(hwaddr phys_addr,hwaddr size,uint8_t lock,bool dma)359c17d615SPaolo Bonzini static inline uint8_t *xen_map_cache(hwaddr phys_addr,
369c17d615SPaolo Bonzini hwaddr size,
371ff7c598SStefano Stabellini uint8_t lock,
381ff7c598SStefano Stabellini bool dma)
399c17d615SPaolo Bonzini {
409c17d615SPaolo Bonzini abort();
419c17d615SPaolo Bonzini }
429c17d615SPaolo Bonzini
xen_ram_addr_from_mapcache(void * ptr)439c17d615SPaolo Bonzini static inline ram_addr_t xen_ram_addr_from_mapcache(void *ptr)
449c17d615SPaolo Bonzini {
459c17d615SPaolo Bonzini abort();
469c17d615SPaolo Bonzini }
479c17d615SPaolo Bonzini
xen_invalidate_map_cache_entry(uint8_t * buffer)489c17d615SPaolo Bonzini static inline void xen_invalidate_map_cache_entry(uint8_t *buffer)
499c17d615SPaolo Bonzini {
509c17d615SPaolo Bonzini }
519c17d615SPaolo Bonzini
xen_invalidate_map_cache(void)529c17d615SPaolo Bonzini static inline void xen_invalidate_map_cache(void)
539c17d615SPaolo Bonzini {
549c17d615SPaolo Bonzini }
559c17d615SPaolo Bonzini
xen_replace_cache_entry(hwaddr old_phys_addr,hwaddr new_phys_addr,hwaddr size)565ba3d756SIgor Druzhinin static inline uint8_t *xen_replace_cache_entry(hwaddr old_phys_addr,
575ba3d756SIgor Druzhinin hwaddr new_phys_addr,
585ba3d756SIgor Druzhinin hwaddr size)
595ba3d756SIgor Druzhinin {
605ba3d756SIgor Druzhinin abort();
615ba3d756SIgor Druzhinin }
625ba3d756SIgor Druzhinin
639c17d615SPaolo Bonzini #endif
649c17d615SPaolo Bonzini
65175de524SMarkus Armbruster #endif /* XEN_MAPCACHE_H */
66