Revision d63001d1 target-ppc/op_helper_mem.h
b/target-ppc/op_helper_mem.h | ||
---|---|---|
252 | 252 |
* do the load "by hand". |
253 | 253 |
*/ |
254 | 254 |
tmp = glue(ldl, MEMSUFFIX)((uint32_t)T0); |
255 |
T0 &= ~(ICACHE_LINE_SIZE - 1); |
|
256 |
tb_invalidate_page_range((uint32_t)T0, (uint32_t)(T0 + ICACHE_LINE_SIZE)); |
|
255 |
T0 &= ~(env->icache_line_size - 1); |
|
256 |
tb_invalidate_page_range((uint32_t)T0, |
|
257 |
(uint32_t)(T0 + env->icache_line_size)); |
|
257 | 258 |
} |
258 | 259 |
|
259 | 260 |
#if defined(TARGET_PPC64) |
... | ... | |
266 | 267 |
* do the load "by hand". |
267 | 268 |
*/ |
268 | 269 |
tmp = glue(ldq, MEMSUFFIX)((uint64_t)T0); |
269 |
T0 &= ~(ICACHE_LINE_SIZE - 1); |
|
270 |
tb_invalidate_page_range((uint64_t)T0, (uint64_t)(T0 + ICACHE_LINE_SIZE)); |
|
270 |
T0 &= ~(env->icache_line_size - 1); |
|
271 |
tb_invalidate_page_range((uint64_t)T0, |
|
272 |
(uint64_t)(T0 + env->icache_line_size)); |
|
273 |
} |
|
274 |
#endif |
|
275 |
|
|
276 |
void glue(do_dcbz, MEMSUFFIX) (void) |
|
277 |
{ |
|
278 |
int dcache_line_size = env->dcache_line_size; |
|
279 |
|
|
280 |
/* XXX: should be 970 specific (?) */ |
|
281 |
if (((env->spr[SPR_970_HID5] >> 7) & 0x3) == 1) |
|
282 |
dcache_line_size = 32; |
|
283 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x00), 0); |
|
284 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x04), 0); |
|
285 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x08), 0); |
|
286 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x0C), 0); |
|
287 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x10), 0); |
|
288 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x14), 0); |
|
289 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x18), 0); |
|
290 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x1C), 0); |
|
291 |
if (dcache_line_size >= 64) { |
|
292 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x20UL), 0); |
|
293 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x24UL), 0); |
|
294 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x28UL), 0); |
|
295 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x2CUL), 0); |
|
296 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x30UL), 0); |
|
297 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x34UL), 0); |
|
298 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x38UL), 0); |
|
299 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x3CUL), 0); |
|
300 |
if (dcache_line_size >= 128) { |
|
301 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x40UL), 0); |
|
302 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x44UL), 0); |
|
303 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x48UL), 0); |
|
304 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x4CUL), 0); |
|
305 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x50UL), 0); |
|
306 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x54UL), 0); |
|
307 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x58UL), 0); |
|
308 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x5CUL), 0); |
|
309 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x60UL), 0); |
|
310 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x64UL), 0); |
|
311 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x68UL), 0); |
|
312 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x6CUL), 0); |
|
313 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x70UL), 0); |
|
314 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x74UL), 0); |
|
315 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x78UL), 0); |
|
316 |
glue(stl, MEMSUFFIX)((uint32_t)(T0 + 0x7CUL), 0); |
|
317 |
} |
|
318 |
} |
|
319 |
} |
|
320 |
|
|
321 |
#if defined(TARGET_PPC64) |
|
322 |
void glue(do_dcbz_64, MEMSUFFIX) (void) |
|
323 |
{ |
|
324 |
int dcache_line_size = env->dcache_line_size; |
|
325 |
|
|
326 |
/* XXX: should be 970 specific (?) */ |
|
327 |
if (((env->spr[SPR_970_HID5] >> 7) & 0x3) == 1) |
|
328 |
dcache_line_size = 32; |
|
329 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x00), 0); |
|
330 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x04), 0); |
|
331 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x08), 0); |
|
332 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x0C), 0); |
|
333 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x10), 0); |
|
334 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x14), 0); |
|
335 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x18), 0); |
|
336 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x1C), 0); |
|
337 |
if (dcache_line_size >= 64) { |
|
338 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x20UL), 0); |
|
339 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x24UL), 0); |
|
340 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x28UL), 0); |
|
341 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x2CUL), 0); |
|
342 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x30UL), 0); |
|
343 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x34UL), 0); |
|
344 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x38UL), 0); |
|
345 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x3CUL), 0); |
|
346 |
if (dcache_line_size >= 128) { |
|
347 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x40UL), 0); |
|
348 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x44UL), 0); |
|
349 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x48UL), 0); |
|
350 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x4CUL), 0); |
|
351 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x50UL), 0); |
|
352 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x54UL), 0); |
|
353 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x58UL), 0); |
|
354 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x5CUL), 0); |
|
355 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x60UL), 0); |
|
356 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x64UL), 0); |
|
357 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x68UL), 0); |
|
358 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x6CUL), 0); |
|
359 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x70UL), 0); |
|
360 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x74UL), 0); |
|
361 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x78UL), 0); |
|
362 |
glue(stl, MEMSUFFIX)((uint64_t)(T0 + 0x7CUL), 0); |
|
363 |
} |
|
364 |
} |
|
271 | 365 |
} |
272 | 366 |
#endif |
273 | 367 |
|
Also available in: Unified diff