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 >= 6) 104 105 #define ACCESS_TYPE 5 106 #define MEMSUFFIX MMU_MODE5_SUFFIX 107 #define DATA_SIZE 1 108 #include "softmmu_header.h" 109 110 #define DATA_SIZE 2 111 #include "softmmu_header.h" 112 113 #define DATA_SIZE 4 114 #include "softmmu_header.h" 115 116 #define DATA_SIZE 8 117 #include "softmmu_header.h" 118 #undef ACCESS_TYPE 119 #undef MEMSUFFIX 120 #endif /* (NB_MMU_MODES >= 6) */ 121 122 #if (NB_MMU_MODES > 6) 123 #error "NB_MMU_MODES > 6 is not supported for now" 124 #endif /* (NB_MMU_MODES > 6) */ 125 126 /* these access are slower, they must be as rare as possible */ 127 #define ACCESS_TYPE (NB_MMU_MODES) 128 #define MEMSUFFIX _data 129 #define DATA_SIZE 1 130 #include "softmmu_header.h" 131 132 #define DATA_SIZE 2 133 #include "softmmu_header.h" 134 135 #define DATA_SIZE 4 136 #include "softmmu_header.h" 137 138 #define DATA_SIZE 8 139 #include "softmmu_header.h" 140 #undef ACCESS_TYPE 141 #undef MEMSUFFIX 142 143 #define ldub(p) ldub_data(p) 144 #define ldsb(p) ldsb_data(p) 145 #define lduw(p) lduw_data(p) 146 #define ldsw(p) ldsw_data(p) 147 #define ldl(p) ldl_data(p) 148 #define ldq(p) ldq_data(p) 149 150 #define stb(p, v) stb_data(p, v) 151 #define stw(p, v) stw_data(p, v) 152 #define stl(p, v) stl_data(p, v) 153 #define stq(p, v) stq_data(p, v) 154