From: Tom Hughes Date: Mon, 16 May 2005 07:31:57 +0000 (+0000) Subject: Fill in the amd64 case for regaddr_from_tst. X-Git-Tag: svn/VALGRIND_3_0_0~582 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0cee6603ab9c2f32ff98d1d1b4aced6abd155891;p=thirdparty%2Fvalgrind.git Fill in the amd64 case for regaddr_from_tst. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3736 --- diff --git a/coregrind/vg_symtab2.c b/coregrind/vg_symtab2.c index 34e2870601..ab9dcecef0 100644 --- a/coregrind/vg_symtab2.c +++ b/coregrind/vg_symtab2.c @@ -2270,7 +2270,28 @@ static Addr regaddr_from_tst(Int regno, ThreadArchState *arch) default: return 0; } #elif defined(VGA_amd64) -# error AMD64 not done yet +/* This is the Intel register encoding -- integer regs. */ +# define R_STACK_PTR 7 +# define R_FRAME_PTR 6 + switch (regno) { + case 0: return (Addr) & arch->vex.guest_RAX; + case 1: return (Addr) & arch->vex.guest_RDX; + case 2: return (Addr) & arch->vex.guest_RCX; + case 3: return (Addr) & arch->vex.guest_RBX; + case 4: return (Addr) & arch->vex.guest_RSI; + case 5: return (Addr) & arch->vex.guest_RDI; + case R_FRAME_PTR: return (Addr) & arch->vex.guest_RBP; + case R_STACK_PTR: return (Addr) & arch->vex.guest_RSP; + case 8: return (Addr) & arch->vex.guest_R8; + case 9: return (Addr) & arch->vex.guest_R9; + case 10: return (Addr) & arch->vex.guest_R10; + case 11: return (Addr) & arch->vex.guest_R11; + case 12: return (Addr) & arch->vex.guest_R12; + case 13: return (Addr) & arch->vex.guest_R13; + case 14: return (Addr) & arch->vex.guest_R14; + case 15: return (Addr) & arch->vex.guest_R15; + default: return 0; + } #else # error Unknown platform #endif