|
From: <sv...@va...> - 2005-07-01 10:50:55
|
Author: sewardj
Date: 2005-07-01 11:50:50 +0100 (Fri, 01 Jul 2005)
New Revision: 1240
Log:
Track recent API change (introduction of VexArchInfo).
Modified:
trunk/switchback/switchback.c
Modified: trunk/switchback/switchback.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/switchback/switchback.c 2005-06-30 23:31:27 UTC (rev 1239)
+++ trunk/switchback/switchback.c 2005-07-01 10:50:50 UTC (rev 1240)
@@ -8,6 +8,11 @@
=20
Test file may not reference any other symbols.
=20
+NOTE: POWERPC: it is critical, when using this on ppc, to set
+CacheLineSize to the right value. Values we currently know of:
+
+ imac (G3): 32
+ G5 (ppc970): 128
*/
=20
#include <stdio.h>
@@ -35,18 +40,21 @@
# define VexArch VexArchX86
# define VexSubArch VexSubArchX86_sse1
# define GuestPC guest_EIP
+# define CacheLineSize 0/*irrelevant*/
#elif defined(__x86_64__)
# define VexGuestState VexGuestAMD64State
# define LibVEX_Guest_initialise LibVEX_GuestAMD64_initialise
# define VexArch VexArchAMD64
# define VexSubArch VexSubArch_NONE
# define GuestPC guest_RIP
+# define CacheLineSize 0/*irrelevant*/
#elif defined(__powerpc__)
# define VexGuestState VexGuestPPC32State
# define LibVEX_Guest_initialise LibVEX_GuestPPC32_initialise
# define VexArch VexArchPPC32
# define VexSubArch VexSubArchPPC32_noAV
# define GuestPC guest_CIA
+# define CacheLineSize 128
#else
# error "Unknown arch"
#endif
@@ -187,7 +195,7 @@
unsigned long startaddr =3D (unsigned long) ptr;
unsigned long endaddr =3D startaddr + nbytes;
unsigned long addr;
- unsigned long cls =3D 16; //VG_(cache_line_size);
+ unsigned long cls =3D CacheLineSize;
=20
startaddr &=3D ~(cls - 1);
for (addr =3D startaddr; addr < endaddr; addr +=3D cls)
@@ -529,6 +537,7 @@
void make_translation ( Addr64 guest_addr, Bool verbose )
{
VexTranslateResult tres;
+ VexArchInfo vai;
Int trans_used, i, ws_needed;
=20
if (trans_table_used >=3D N_TRANS_TABLE
@@ -542,10 +551,15 @@
assert(trans_table_used < N_TRANS_TABLE);
if (0)
printf("make translation %p\n", ULong_to_Ptr(guest_addr));
+
+ LibVEX_default_VexArchInfo(&vai);
+ vai.subarch =3D VexSubArch;
+ vai.ppc32_cache_line_szB =3D CacheLineSize;
+
tres
=3D LibVEX_Translate (=20
- VexArch, VexSubArch,
- VexArch, VexSubArch,
+ VexArch, &vai,
+ VexArch, &vai,
ULong_to_Ptr(guest_addr), guest_addr,
chase_into_not_ok,
&trans_table[trans_table_used],
|