1 /* Common softmmu definitions and inline routines. */ 2 3 /* XXX: find something cleaner. 4 * Furthermore, this is false for 64 bits targets 5 */ 6 #define ldul_user ldl_user 7 #define ldul_kernel ldl_kernel 8 #define ldul_hypv ldl_hypv 9 #define ldul_executive ldl_executive 10 #define ldul_supervisor ldl_supervisor 11 12 #include "softmmu_defs.h" 13 14 #define ACCESS_TYPE 0 15 #define MEMSUFFIX MMU_MODE0_SUFFIX 16 #define DATA_SIZE 1 17 #include "softmmu_header.h" 18 19 #define DATA_SIZE 2 20 #include "softmmu_header.h" 21 22 #define DATA_SIZE 4 23 #include "softmmu_header.h" 24 25 #define DATA_SIZE 8 26 #include "softmmu_header.h" 27 #undef ACCESS_TYPE 28 #undef MEMSUFFIX 29 30 #define ACCESS_TYPE 1 31 #define MEMSUFFIX MMU_MODE1_SUFFIX 32 #define DATA_SIZE 1 33 #include "softmmu_header.h" 34 35 #define DATA_SIZE 2 36 #include "softmmu_header.h" 37 38 #define DATA_SIZE 4 39 #include "softmmu_header.h" 40 41 #define DATA_SIZE 8 42 #include "softmmu_header.h" 43 #undef ACCESS_TYPE 44 #undef MEMSUFFIX 45 46 #if (NB_MMU_MODES >= 3) 47 48 #define ACCESS_TYPE 2 49 #define MEMSUFFIX MMU_MODE2_SUFFIX 50 #define DATA_SIZE 1 51 #include "softmmu_header.h" 52 53 #define DATA_SIZE 2 54 #include "softmmu_header.h" 55 56 #define DATA_SIZE 4 57 #include "softmmu_header.h" 58 59 #define DATA_SIZE 8 60 #include "softmmu_header.h" 61 #undef ACCESS_TYPE 62 #undef MEMSUFFIX 63 #endif /* (NB_MMU_MODES >= 3) */ 64 65 #if (NB_MMU_MODES >= 4) 66 67 #define ACCESS_TYPE 3 68 #define MEMSUFFIX MMU_MODE3_SUFFIX 69 #define DATA_SIZE 1 70 #include "softmmu_header.h" 71 72 #define DATA_SIZE 2 73 #include "softmmu_header.h" 74 75 #define DATA_SIZE 4 76 #include "softmmu_header.h" 77 78 #define DATA_SIZE 8 79 #include "softmmu_header.h" 80 #undef ACCESS_TYPE 81 #undef MEMSUFFIX 82 #endif /* (NB_MMU_MODES >= 4) */ 83 84 #if (NB_MMU_MODES >= 5) 85 86 #define ACCESS_TYPE 4 87 #define MEMSUFFIX MMU_MODE4_SUFFIX 88 #define DATA_SIZE 1 89 #include "softmmu_header.h" 90 91 #define DATA_SIZE 2 92 #include "softmmu_header.h" 93 94 #define DATA_SIZE 4 95 #include "softmmu_header.h" 96 97 #define DATA_SIZE 8 98 #include "softmmu_header.h" 99 #undef ACCESS_TYPE 100 #undef MEMSUFFIX 101 #endif /* (NB_MMU_MODES >= 5) */ 102 103 #if (NB_MMU_MODES > 5) 104 #error "NB_MMU_MODES > 5 is not supported for now" 105 #endif /* (NB_MMU_MODES > 5) */ 106 107 /* these access are slower, they must be as rare as possible */ 108 #define ACCESS_TYPE (NB_MMU_MODES) 109 #define MEMSUFFIX _data 110 #define DATA_SIZE 1 111 #include "softmmu_header.h" 112 113 #define DATA_SIZE 2 114 #include "softmmu_header.h" 115 116 #define DATA_SIZE 4 117 #include "softmmu_header.h" 118 119 #define DATA_SIZE 8 120 #include "softmmu_header.h" 121 #undef ACCESS_TYPE 122 #undef MEMSUFFIX 123 124 #define ldub(p) ldub_data(p) 125 #define ldsb(p) ldsb_data(p) 126 #define lduw(p) lduw_data(p) 127 #define ldsw(p) ldsw_data(p) 128 #define ldl(p) ldl_data(p) 129 #define ldq(p) ldq_data(p) 130 131 #define stb(p, v) stb_data(p, v) 132 #define stw(p, v) stw_data(p, v) 133 #define stl(p, v) stl_data(p, v) 134 #define stq(p, v) stq_data(p, v) 135