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 64 #if (NB_MMU_MODES >= 4) 65 66 #define ACCESS_TYPE 3 67 #define MEMSUFFIX MMU_MODE3_SUFFIX 68 #define DATA_SIZE 1 69 #include "softmmu_header.h" 70 71 #define DATA_SIZE 2 72 #include "softmmu_header.h" 73 74 #define DATA_SIZE 4 75 #include "softmmu_header.h" 76 77 #define DATA_SIZE 8 78 #include "softmmu_header.h" 79 #undef ACCESS_TYPE 80 #undef MEMSUFFIX 81 82 #if (NB_MMU_MODES > 4) 83 #error "NB_MMU_MODES > 4 is not supported for now" 84 #endif /* (NB_MMU_MODES > 4) */ 85 #endif /* (NB_MMU_MODES == 4) */ 86 #endif /* (NB_MMU_MODES >= 3) */ 87 88 /* these access are slower, they must be as rare as possible */ 89 #define ACCESS_TYPE (NB_MMU_MODES) 90 #define MEMSUFFIX _data 91 #define DATA_SIZE 1 92 #include "softmmu_header.h" 93 94 #define DATA_SIZE 2 95 #include "softmmu_header.h" 96 97 #define DATA_SIZE 4 98 #include "softmmu_header.h" 99 100 #define DATA_SIZE 8 101 #include "softmmu_header.h" 102 #undef ACCESS_TYPE 103 #undef MEMSUFFIX 104 105 #define ldub(p) ldub_data(p) 106 #define ldsb(p) ldsb_data(p) 107 #define lduw(p) lduw_data(p) 108 #define ldsw(p) ldsw_data(p) 109 #define ldl(p) ldl_data(p) 110 #define ldq(p) ldq_data(p) 111 112 #define stb(p, v) stb_data(p, v) 113 #define stw(p, v) stw_data(p, v) 114 #define stl(p, v) stl_data(p, v) 115 #define stq(p, v) stq_data(p, v) 116