From: Julian Seward Date: Mon, 25 Oct 2004 15:33:26 +0000 (+0000) Subject: Improve naming scheme for library-visible fns (infrastructural improvement) X-Git-Tag: svn/VALGRIND_3_0_1^2~910 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=90556b5add2c560e76f565bddf0ef948a6cbbf62;p=thirdparty%2Fvalgrind.git Improve naming scheme for library-visible fns (infrastructural improvement) git-svn-id: svn://svn.valgrind.org/vex/trunk@424 --- diff --git a/VEX/priv/guest-x86/gdefs.h b/VEX/priv/guest-x86/gdefs.h index a1d84c9e06..db5a476fe1 100644 --- a/VEX/priv/guest-x86/gdefs.h +++ b/VEX/priv/guest-x86/gdefs.h @@ -36,6 +36,12 @@ extern IRExpr* x86guest_spechelper ( Char* function_name, IRExpr** args ); +/* Describes to the optimser which part of the guest state require + precise memory exceptions. This is logically part of the guest + state description. */ +extern +Bool guest_x86_state_requires_precise_mem_exns ( Int, Int ); + /*---------------------------------------------------------*/ /*--- Condition code stuff ---*/ diff --git a/VEX/priv/guest-x86/ghelpers.c b/VEX/priv/guest-x86/ghelpers.c index 0a4d9f2904..577241f394 100644 --- a/VEX/priv/guest-x86/ghelpers.c +++ b/VEX/priv/guest-x86/ghelpers.c @@ -1238,8 +1238,8 @@ typedef /* VISIBLE TO LIBVEX CLIENT */ -void x87_to_vex ( /*IN*/UChar* x87_state, - /*OUT*/VexGuestX86State* vex_state ) +void LibVEX_GuestX86_put_x87 ( /*IN*/UChar* x87_state, + /*OUT*/VexGuestX86State* vex_state ) { Int r; UInt tag; @@ -1277,8 +1277,8 @@ void x87_to_vex ( /*IN*/UChar* x87_state, /* VISIBLE TO LIBVEX CLIENT */ -void vex_to_x87 ( /*IN*/VexGuestX86State* vex_state, - /*OUT*/UChar* x87_state ) +void LibVEX_GuestX86_get_x87 ( /*IN*/VexGuestX86State* vex_state, + /*OUT*/UChar* x87_state ) { Int i, r; UInt tagw; @@ -1312,8 +1312,8 @@ void vex_to_x87 ( /*IN*/VexGuestX86State* vex_state, /* VISIBLE TO LIBVEX CLIENT */ -void eflags_to_vex ( UInt eflags_native, - /*OUT*/VexGuestX86State* vex_state ) +void LibVEX_GuestX86_put_eflags ( UInt eflags_native, + /*OUT*/VexGuestX86State* vex_state ) { vex_state->guest_DFLAG = (eflags_native & (1<<10)) ? 0xFFFFFFFF : 0x00000001; @@ -1330,7 +1330,7 @@ void eflags_to_vex ( UInt eflags_native, /* VISIBLE TO LIBVEX CLIENT */ -UInt vex_to_eflags ( /*IN*/VexGuestX86State* vex_state ) +UInt LibVEX_GuestX86_get_eflags ( /*IN*/VexGuestX86State* vex_state ) { UInt eflags = calculate_eflags_all( vex_state->guest_CC_OP, @@ -1346,19 +1346,42 @@ UInt vex_to_eflags ( /*IN*/VexGuestX86State* vex_state ) } /* VISIBLE TO LIBVEX CLIENT */ -void vex_initialise_x87 ( /* MOD*/VexGuestX86State* vex_state ) +void LibVEX_GuestX86_initialise ( /*OUT*/VexGuestX86State* vex_state ) { Int i; + + vex_state->guest_EAX = 0; + vex_state->guest_ECX = 0; + vex_state->guest_EDX = 0; + vex_state->guest_EBX = 0; + vex_state->guest_ESP = 0; + vex_state->guest_EBP = 0; + vex_state->guest_ESI = 0; + vex_state->guest_EDI = 0; + + vex_state->guest_CC_OP = CC_OP_COPY; + vex_state->guest_CC_SRC = 0; + vex_state->guest_CC_DST = 0; + vex_state->guest_DFLAG = 1; /* forwards */ + + vex_state->guest_EIP = 0; + + vex_state->guest_FTOP = 0; for (i = 0; i < 8; i++) { vex_state->guest_FPTAG[i] = 0; /* empty */ vex_state->guest_FPREG[i] = 0; /* IEEE754 64-bit zero */ } - vex_state->guest_FTOP = 0; - vex_state->guest_FC3210 = 0; - /* The default setting: all fp exceptions masked, rounding to nearest, precision to 64 bits */ vex_state->guest_FPUCW = 0x03F7; + vex_state->guest_FC3210 = 0; + + vex_state->guest_CS = 0; + vex_state->guest_DS = 0; + vex_state->guest_ES = 0; + vex_state->guest_FS = 0; + vex_state->guest_GS = 0; + vex_state->guest_SS = 0; } diff --git a/VEX/priv/main/vex_main.c b/VEX/priv/main/vex_main.c index 878224bac9..a9861463cc 100644 --- a/VEX/priv/main/vex_main.c +++ b/VEX/priv/main/vex_main.c @@ -7,7 +7,6 @@ /*---------------------------------------------------------------*/ #include "libvex.h" -#include "libvex_guest_x86.h" #include "main/vex_globals.h" #include "main/vex_util.h" diff --git a/VEX/pub/libvex_guest_x86.h b/VEX/pub/libvex_guest_x86.h index 72a03e4e5f..0afaf3ef8c 100644 --- a/VEX/pub/libvex_guest_x86.h +++ b/VEX/pub/libvex_guest_x86.h @@ -106,34 +106,33 @@ typedef VexGuestX86State; -/* This is logically part of the guest state description. */ -/* Not visible to library client. */ -extern Bool guest_x86_state_requires_precise_mem_exns ( Int, Int ); - - /*---------------------------------------------------------------*/ /*--- Utility functions for x86 guest stuff. ---*/ /*---------------------------------------------------------------*/ +/* ALL THE FOLLOWING ARE VISIBLE TO LIBRARY CLIENT */ -/* ALL THE FOLLOWING ARE VISIBLE TO LIBRARY CLIENT */ +/* Initialise all guest x86 state. The FPU is put in default mode. */ +extern +void LibVEX_GuestX86_initialise ( /*OUT*/VexGuestX86State* vex_state ); + /* Convert a saved x87 FPU image (as created by fsave) and write it into the supplied VexGuestX86State structure. The non-FP parts of said structure are left unchanged. */ extern -void x87_to_vex ( /*IN*/UChar* x87_state, - /*OUT*/VexGuestX86State* vex_state ); +void LibVEX_GuestX86_put_x87 ( /*IN*/UChar* x87_state, + /*OUT*/VexGuestX86State* vex_state ); /* Extract from the supplied VexGuestX86State structure, an x87 FPU image. */ extern -void vex_to_x87 ( /*IN*/VexGuestX86State* vex_state, - /*OUT*/UChar* x87_state ); +void LibVEX_GuestX86_get_x87 ( /*IN*/VexGuestX86State* vex_state, + /*OUT*/UChar* x87_state ); /* Given a 32-bit word containing native x86 %eflags values, set the @@ -141,17 +140,15 @@ void vex_to_x87 ( /*IN*/VexGuestX86State* vex_state, All other fields are left unchanged. */ extern -void eflags_to_vex ( UInt eflags_native, - /*OUT*/VexGuestX86State* vex_state ); +void LibVEX_GuestX86_put_eflags ( UInt eflags_native, + /*OUT*/VexGuestX86State* vex_state ); /* Extract from the supplied VexGuestX86State structure the corresponding native %eflags value. */ extern -UInt vex_to_eflags ( /*IN*/VexGuestX86State* vex_state ); +UInt LibVEX_GuestX86_get_eflags ( /*IN*/VexGuestX86State* vex_state ); -extern -void vex_initialise_x87 ( /* MOD*/VexGuestX86State* vex_state ); #endif /* ndef __LIBVEX_PUB_GUEST_X86_H */