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