]> git.proxmox.com Git - qemu.git/blame - softmmu_exec.h
Version 1.0.1
[qemu.git] / softmmu_exec.h
CommitLineData
efbf29b6
BS
1/*
2 * Software MMU support
3 *
4 * Generate inline load/store functions for all MMU modes (typically
5 * at least _user and _kernel) as well as _data versions, for all data
6 * sizes.
7 *
8 * Used by target op helpers.
9 *
10 * MMU mode suffixes are defined in target cpu.h.
11 */
a9049a07 12
6ebbf390
JM
13/* XXX: find something cleaner.
14 * Furthermore, this is false for 64 bits targets
15 */
16#define ldul_user ldl_user
17#define ldul_kernel ldl_kernel
18#define ldul_hypv ldl_hypv
19#define ldul_executive ldl_executive
20#define ldul_supervisor ldl_supervisor
a9049a07 21
79383c9c
BS
22#include "softmmu_defs.h"
23
a9049a07 24#define ACCESS_TYPE 0
6ebbf390 25#define MEMSUFFIX MMU_MODE0_SUFFIX
a9049a07
FB
26#define DATA_SIZE 1
27#include "softmmu_header.h"
28
29#define DATA_SIZE 2
30#include "softmmu_header.h"
31
32#define DATA_SIZE 4
33#include "softmmu_header.h"
34
35#define DATA_SIZE 8
36#include "softmmu_header.h"
37#undef ACCESS_TYPE
38#undef MEMSUFFIX
39
40#define ACCESS_TYPE 1
6ebbf390 41#define MEMSUFFIX MMU_MODE1_SUFFIX
a9049a07
FB
42#define DATA_SIZE 1
43#include "softmmu_header.h"
44
45#define DATA_SIZE 2
46#include "softmmu_header.h"
47
48#define DATA_SIZE 4
49#include "softmmu_header.h"
50
51#define DATA_SIZE 8
52#include "softmmu_header.h"
53#undef ACCESS_TYPE
54#undef MEMSUFFIX
55
6ebbf390
JM
56#if (NB_MMU_MODES >= 3)
57
a9049a07 58#define ACCESS_TYPE 2
6ebbf390
JM
59#define MEMSUFFIX MMU_MODE2_SUFFIX
60#define DATA_SIZE 1
61#include "softmmu_header.h"
62
63#define DATA_SIZE 2
64#include "softmmu_header.h"
65
66#define DATA_SIZE 4
67#include "softmmu_header.h"
68
69#define DATA_SIZE 8
70#include "softmmu_header.h"
71#undef ACCESS_TYPE
72#undef MEMSUFFIX
e37e6ee6 73#endif /* (NB_MMU_MODES >= 3) */
6ebbf390
JM
74
75#if (NB_MMU_MODES >= 4)
76
77#define ACCESS_TYPE 3
78#define MEMSUFFIX MMU_MODE3_SUFFIX
79#define DATA_SIZE 1
80#include "softmmu_header.h"
81
82#define DATA_SIZE 2
83#include "softmmu_header.h"
84
85#define DATA_SIZE 4
86#include "softmmu_header.h"
87
88#define DATA_SIZE 8
89#include "softmmu_header.h"
90#undef ACCESS_TYPE
91#undef MEMSUFFIX
e37e6ee6 92#endif /* (NB_MMU_MODES >= 4) */
6ebbf390 93
e37e6ee6
AJ
94#if (NB_MMU_MODES >= 5)
95
96#define ACCESS_TYPE 4
97#define MEMSUFFIX MMU_MODE4_SUFFIX
98#define DATA_SIZE 1
99#include "softmmu_header.h"
100
101#define DATA_SIZE 2
102#include "softmmu_header.h"
103
104#define DATA_SIZE 4
105#include "softmmu_header.h"
106
107#define DATA_SIZE 8
108#include "softmmu_header.h"
109#undef ACCESS_TYPE
110#undef MEMSUFFIX
111#endif /* (NB_MMU_MODES >= 5) */
112
2065061e
IK
113#if (NB_MMU_MODES >= 6)
114
115#define ACCESS_TYPE 5
116#define MEMSUFFIX MMU_MODE5_SUFFIX
117#define DATA_SIZE 1
118#include "softmmu_header.h"
119
120#define DATA_SIZE 2
121#include "softmmu_header.h"
122
123#define DATA_SIZE 4
124#include "softmmu_header.h"
125
126#define DATA_SIZE 8
127#include "softmmu_header.h"
128#undef ACCESS_TYPE
129#undef MEMSUFFIX
130#endif /* (NB_MMU_MODES >= 6) */
131
132#if (NB_MMU_MODES > 6)
133#error "NB_MMU_MODES > 6 is not supported for now"
134#endif /* (NB_MMU_MODES > 6) */
6ebbf390
JM
135
136/* these access are slower, they must be as rare as possible */
137#define ACCESS_TYPE (NB_MMU_MODES)
a9049a07
FB
138#define MEMSUFFIX _data
139#define DATA_SIZE 1
140#include "softmmu_header.h"
141
142#define DATA_SIZE 2
143#include "softmmu_header.h"
144
145#define DATA_SIZE 4
146#include "softmmu_header.h"
147
148#define DATA_SIZE 8
149#include "softmmu_header.h"
150#undef ACCESS_TYPE
151#undef MEMSUFFIX
152
153#define ldub(p) ldub_data(p)
154#define ldsb(p) ldsb_data(p)
155#define lduw(p) lduw_data(p)
156#define ldsw(p) ldsw_data(p)
157#define ldl(p) ldl_data(p)
158#define ldq(p) ldq_data(p)
159
160#define stb(p, v) stb_data(p, v)
161#define stw(p, v) stw_data(p, v)
162#define stl(p, v) stl_data(p, v)
163#define stq(p, v) stq_data(p, v)