SHADOW_INTERNAL_NAME(sh_guest_get_eff_l1e, GUEST_LEVELS)
(struct vcpu *v, unsigned long va, void *eff_l1e);
-extern mfn_t
-SHADOW_INTERNAL_NAME(sh_make_monitor_table, GUEST_LEVELS)
- (struct vcpu *v);
-extern void
-SHADOW_INTERNAL_NAME(sh_destroy_monitor_table, GUEST_LEVELS)
- (struct vcpu *v, mfn_t mmfn);
-
extern const struct paging_mode
SHADOW_INTERNAL_NAME(sh_paging_mode, GUEST_LEVELS);
* Macro for dealing with the naming of the internal names of the
* shadow code's external entry points.
*/
-#define SHADOW_INTERNAL_NAME_HIDDEN(name, guest_levels) \
- name ## __guest_ ## guest_levels
+#define SHADOW_INTERNAL_NAME_(name, kind, value) \
+ name ## __ ## kind ## _ ## value
#define SHADOW_INTERNAL_NAME(name, guest_levels) \
- SHADOW_INTERNAL_NAME_HIDDEN(name, guest_levels)
+ SHADOW_INTERNAL_NAME_(name, guest, guest_levels)
+#define SHADOW_SH_NAME(name, shadow_levels) \
+ SHADOW_INTERNAL_NAME_(name, sh, shadow_levels)
#define GUEST_LEVELS 2
#include "multi.h"
/* sh_make_monitor_table depends only on the number of shadow levels */
#define sh_make_monitor_table \
- SHADOW_INTERNAL_NAME(sh_make_monitor_table, SHADOW_PAGING_LEVELS)
+ SHADOW_SH_NAME(sh_make_monitor_table, SHADOW_PAGING_LEVELS)
#define sh_destroy_monitor_table \
- SHADOW_INTERNAL_NAME(sh_destroy_monitor_table, SHADOW_PAGING_LEVELS)
+ SHADOW_SH_NAME(sh_destroy_monitor_table, SHADOW_PAGING_LEVELS)
+
+mfn_t sh_make_monitor_table(struct vcpu *v);
+void sh_destroy_monitor_table(struct vcpu *v, mfn_t mmfn);
#if SHADOW_PAGING_LEVELS == 3
#define MFN_FITS_IN_HVM_CR3(_MFN) !(mfn_x(_MFN) >> 20)