43 #ifndef LS_IGNORE_OFFSET
47 unsigned char data[1];
50 unsigned char data[2];
53 unsigned char data[4];
56 unsigned char data[8];
58 uint64_t
addr = *((uint64_t *)
ic->arg[1]);
61 addr += (int32_t)
ic->arg[2];
70 fatal(
"store failed: TODO\n");
76 data_x += (
data[1] << 8);
78 data_x += (
data[2] << 16);
79 data_x += ((uint64_t)
data[3] << 24);
81 data_x = (int64_t)(int32_t)data_x;
84 data_x += ((uint64_t)
data[4] << 32);
85 data_x += ((uint64_t)
data[5] << 40);
86 data_x += ((uint64_t)
data[6] << 48);
87 data_x += ((uint64_t)
data[7] << 56);
91 *((uint64_t *)
ic->arg[0]) = data_x;
94 data_x = *((uint64_t *)
ic->arg[0]);
97 data[1] = data_x >> 8;
99 data[2] = data_x >> 16;
100 data[3] = data_x >> 24;
102 data[4] = data_x >> 32;
103 data[5] = data_x >> 40;
104 data[6] = data_x >> 48;
105 data[7] = data_x >> 56;
112 fatal(
"store failed: TODO\n");
118 *((uint64_t *)
ic->arg[0]) = 1;
127 static void LS_N(
struct cpu *
cpu,
struct alpha_instr_call *
ic)
130 uint64_t
addr = (*((uint64_t *)
ic->arg[1]))
132 + (int32_t)
ic->arg[2]
139 uint32_t x1, x2, x3, c;
147 l2 =
cpu->
cd.DYNTRANS_ARCH.l1_64[x1];
152 page = l3->host_load[x3];
154 page = l3->host_store[x3];
173 *((uint64_t *)
ic->arg[0]) = 0;
201 #ifdef HOST_BIG_ENDIAN
205 data_x += (
page[c+1] << 8);
207 data_x += (
page[c+2] << 16);
208 data_x += ((uint64_t)
page[c+3] << 24);
210 data_x += ((uint64_t)
page[c+4] << 32);
211 data_x += ((uint64_t)
page[c+5] << 40);
212 data_x += ((uint64_t)
page[c+6] << 48);
213 data_x += ((uint64_t)
page[c+7] << 56);
218 *((uint64_t *)
ic->arg[0]) = (int64_t)(int32_t)data_x;
220 *((uint64_t *)
ic->arg[0]) = data_x;
224 *((uint64_t *)
ic->arg[0]) =
page[c];
227 uint16_t d = *((uint16_t *) (
page + c));
228 *((uint64_t *)
ic->arg[0]) = d;
231 int32_t d = *((int32_t *) (
page + c));
232 *((uint64_t *)
ic->arg[0]) = (int64_t)d;
235 uint64_t d = *((uint64_t *) (
page + c));
236 *((uint64_t *)
ic->arg[0]) = d;
241 #ifdef HOST_BIG_ENDIAN
242 uint64_t data_x = *((uint64_t *)
ic->arg[0]);
245 page[c+1] = data_x >> 8;
247 page[c+2] = data_x >> 16;
248 page[c+3] = data_x >> 24;
250 page[c+4] = data_x >> 32;
251 page[c+5] = data_x >> 40;
252 page[c+6] = data_x >> 48;
253 page[c+7] = data_x >> 56;
260 page[c] = *((uint64_t *)
ic->arg[0]);
263 uint32_t d = *((uint64_t *)
ic->arg[0]);
264 *((uint16_t *) (
page + c)) = d;
267 uint32_t d = *((uint64_t *)
ic->arg[0]);
268 *((uint32_t *) (
page + c)) = d;
271 uint64_t d = *((uint64_t *)
ic->arg[0]);
272 *((uint64_t *) (
page + c)) = d;
278 *((uint64_t *)
ic->arg[0]) = 1;