18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Common softmmu definitions and inline routines.  */
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* XXX: find something cleaner.
48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Furthermore, this is false for 64 bits targets
58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ldul_user       ldl_user
78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ldul_kernel     ldl_kernel
88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ldul_hypv       ldl_hypv
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ldul_executive  ldl_executive
108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ldul_supervisor ldl_supervisor
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_defs.h"
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ACCESS_TYPE 0
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MEMSUFFIX MMU_MODE0_SUFFIX
168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 1
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 2
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 4
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 8
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef ACCESS_TYPE
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef MEMSUFFIX
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ACCESS_TYPE 1
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MEMSUFFIX MMU_MODE1_SUFFIX
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 1
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 2
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 4
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 8
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef ACCESS_TYPE
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef MEMSUFFIX
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if (NB_MMU_MODES >= 3)
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ACCESS_TYPE 2
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MEMSUFFIX MMU_MODE2_SUFFIX
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 1
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 2
548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 4
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 8
608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef ACCESS_TYPE
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef MEMSUFFIX
635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif /* (NB_MMU_MODES >= 3) */
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if (NB_MMU_MODES >= 4)
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ACCESS_TYPE 3
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MEMSUFFIX MMU_MODE3_SUFFIX
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 1
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 2
738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 4
768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 8
798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef ACCESS_TYPE
818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef MEMSUFFIX
825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif /* (NB_MMU_MODES >= 4) */
838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#if (NB_MMU_MODES >= 5)
855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define ACCESS_TYPE 4
875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MEMSUFFIX MMU_MODE4_SUFFIX
885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DATA_SIZE 1
895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "softmmu_header.h"
905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DATA_SIZE 2
925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "softmmu_header.h"
935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DATA_SIZE 4
955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "softmmu_header.h"
965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define DATA_SIZE 8
985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "softmmu_header.h"
995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#undef ACCESS_TYPE
1005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#undef MEMSUFFIX
1015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif /* (NB_MMU_MODES >= 5) */
1025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1031275f06d57fc62754e3b1abd4748e943ded966e5David Turner#if (NB_MMU_MODES >= 6)
1041275f06d57fc62754e3b1abd4748e943ded966e5David Turner
1051275f06d57fc62754e3b1abd4748e943ded966e5David Turner#define ACCESS_TYPE 5
1061275f06d57fc62754e3b1abd4748e943ded966e5David Turner#define MEMSUFFIX MMU_MODE5_SUFFIX
1071275f06d57fc62754e3b1abd4748e943ded966e5David Turner#define DATA_SIZE 1
1081275f06d57fc62754e3b1abd4748e943ded966e5David Turner#include "softmmu_header.h"
1091275f06d57fc62754e3b1abd4748e943ded966e5David Turner
1101275f06d57fc62754e3b1abd4748e943ded966e5David Turner#define DATA_SIZE 2
1111275f06d57fc62754e3b1abd4748e943ded966e5David Turner#include "softmmu_header.h"
1121275f06d57fc62754e3b1abd4748e943ded966e5David Turner
1131275f06d57fc62754e3b1abd4748e943ded966e5David Turner#define DATA_SIZE 4
1141275f06d57fc62754e3b1abd4748e943ded966e5David Turner#include "softmmu_header.h"
1151275f06d57fc62754e3b1abd4748e943ded966e5David Turner
1161275f06d57fc62754e3b1abd4748e943ded966e5David Turner#define DATA_SIZE 8
1171275f06d57fc62754e3b1abd4748e943ded966e5David Turner#include "softmmu_header.h"
1181275f06d57fc62754e3b1abd4748e943ded966e5David Turner#undef ACCESS_TYPE
1191275f06d57fc62754e3b1abd4748e943ded966e5David Turner#undef MEMSUFFIX
1201275f06d57fc62754e3b1abd4748e943ded966e5David Turner#endif /* (NB_MMU_MODES >= 6) */
1211275f06d57fc62754e3b1abd4748e943ded966e5David Turner
1221275f06d57fc62754e3b1abd4748e943ded966e5David Turner#if (NB_MMU_MODES > 6)
1231275f06d57fc62754e3b1abd4748e943ded966e5David Turner#error "NB_MMU_MODES > 6 is not supported for now"
1241275f06d57fc62754e3b1abd4748e943ded966e5David Turner#endif /* (NB_MMU_MODES > 6) */
1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* these access are slower, they must be as rare as possible */
1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ACCESS_TYPE (NB_MMU_MODES)
1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define MEMSUFFIX _data
1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 1
1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 2
1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 4
1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define DATA_SIZE 8
1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "softmmu_header.h"
1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef ACCESS_TYPE
1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef MEMSUFFIX
1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ldub(p) ldub_data(p)
1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ldsb(p) ldsb_data(p)
1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define lduw(p) lduw_data(p)
1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ldsw(p) ldsw_data(p)
1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ldl(p) ldl_data(p)
1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define ldq(p) ldq_data(p)
1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define stb(p, v) stb_data(p, v)
1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define stw(p, v) stw_data(p, v)
1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define stl(p, v) stl_data(p, v)
1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define stq(p, v) stq_data(p, v)
154