blob: b6e484918558b7587caebb48f1f029b93f685a14 [file] [log] [blame]
bellarda9049a02005-10-30 18:16:26 +00001/* Common softmmu definitions and inline routines. */
2
j_mayer6ebbf392007-10-14 07:07:08 +00003/* 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
bellarda9049a02005-10-30 18:16:26 +000011
12#define ACCESS_TYPE 0
j_mayer6ebbf392007-10-14 07:07:08 +000013#define MEMSUFFIX MMU_MODE0_SUFFIX
bellarda9049a02005-10-30 18:16:26 +000014#define DATA_SIZE 1
15#include "softmmu_header.h"
16
17#define DATA_SIZE 2
18#include "softmmu_header.h"
19
20#define DATA_SIZE 4
21#include "softmmu_header.h"
22
23#define DATA_SIZE 8
24#include "softmmu_header.h"
25#undef ACCESS_TYPE
26#undef MEMSUFFIX
27
28#define ACCESS_TYPE 1
j_mayer6ebbf392007-10-14 07:07:08 +000029#define MEMSUFFIX MMU_MODE1_SUFFIX
bellarda9049a02005-10-30 18:16:26 +000030#define DATA_SIZE 1
31#include "softmmu_header.h"
32
33#define DATA_SIZE 2
34#include "softmmu_header.h"
35
36#define DATA_SIZE 4
37#include "softmmu_header.h"
38
39#define DATA_SIZE 8
40#include "softmmu_header.h"
41#undef ACCESS_TYPE
42#undef MEMSUFFIX
43
j_mayer6ebbf392007-10-14 07:07:08 +000044#if (NB_MMU_MODES >= 3)
45
bellarda9049a02005-10-30 18:16:26 +000046#define ACCESS_TYPE 2
j_mayer6ebbf392007-10-14 07:07:08 +000047#define MEMSUFFIX MMU_MODE2_SUFFIX
48#define DATA_SIZE 1
49#include "softmmu_header.h"
50
51#define DATA_SIZE 2
52#include "softmmu_header.h"
53
54#define DATA_SIZE 4
55#include "softmmu_header.h"
56
57#define DATA_SIZE 8
58#include "softmmu_header.h"
59#undef ACCESS_TYPE
60#undef MEMSUFFIX
61
62#if (NB_MMU_MODES >= 4)
63
64#define ACCESS_TYPE 3
65#define MEMSUFFIX MMU_MODE3_SUFFIX
66#define DATA_SIZE 1
67#include "softmmu_header.h"
68
69#define DATA_SIZE 2
70#include "softmmu_header.h"
71
72#define DATA_SIZE 4
73#include "softmmu_header.h"
74
75#define DATA_SIZE 8
76#include "softmmu_header.h"
77#undef ACCESS_TYPE
78#undef MEMSUFFIX
79
80#if (NB_MMU_MODES > 4)
81#error "NB_MMU_MODES > 4 is not supported for now"
82#endif /* (NB_MMU_MODES > 4) */
83#endif /* (NB_MMU_MODES == 4) */
84#endif /* (NB_MMU_MODES >= 3) */
85
86/* these access are slower, they must be as rare as possible */
87#define ACCESS_TYPE (NB_MMU_MODES)
bellarda9049a02005-10-30 18:16:26 +000088#define MEMSUFFIX _data
89#define DATA_SIZE 1
90#include "softmmu_header.h"
91
92#define DATA_SIZE 2
93#include "softmmu_header.h"
94
95#define DATA_SIZE 4
96#include "softmmu_header.h"
97
98#define DATA_SIZE 8
99#include "softmmu_header.h"
100#undef ACCESS_TYPE
101#undef MEMSUFFIX
102
103#define ldub(p) ldub_data(p)
104#define ldsb(p) ldsb_data(p)
105#define lduw(p) lduw_data(p)
106#define ldsw(p) ldsw_data(p)
107#define ldl(p) ldl_data(p)
108#define ldq(p) ldq_data(p)
109
110#define stb(p, v) stb_data(p, v)
111#define stw(p, v) stw_data(p, v)
112#define stl(p, v) stl_data(p, v)
113#define stq(p, v) stq_data(p, v)