Statistics
| Branch: | Revision:

root / softmmu_exec.h @ 09f1bbcd

History | View | Annotate | Download (3.2 kB)

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