Line 0
Link Here
|
|
|
1 |
--- coregrind/m_syswrap/syswrap-amd64-freebsd.c.orig 2015-01-26 16:17:32.000000000 -0400 |
2 |
+++ coregrind/m_syswrap/syswrap-amd64-freebsd.c 2015-08-31 09:51:17.506396000 -0300 |
3 |
@@ -691,6 +691,27 @@ |
4 |
SET_STATUS_Success2( tst->arch.vex.guest_FS_ZERO, tst->arch.vex.guest_RDX ); |
5 |
POST_MEM_WRITE( ARG2, sizeof(void *) ); |
6 |
break; |
7 |
+ case VKI_AMD64_GET_XFPUSTATE: |
8 |
+ { |
9 |
+ UChar fpuState[160]; |
10 |
+ struct vki_amd64_get_xfpustate *xfs = (struct vki_amd64_get_xfpustate *)ARG2; |
11 |
+ int fpuSaveLen; |
12 |
+ |
13 |
+ PRINT("sys_amd64_get_xfpustate ( %#lx, %d )", (long unsigned int)xfs->addr, xfs->len); |
14 |
+ tst = VG_(get_ThreadState)(tid); |
15 |
+ |
16 |
+ if (xfs->len <= sizeof(fpuState)) { |
17 |
+ amd64g_dirtyhelper_FXSAVE_ALL_EXCEPT_XMM( |
18 |
+ (VexGuestAMD64State *)&tst->arch.vex, |
19 |
+ (HWord)fpuState); |
20 |
+ VG_(memcpy)(xfs->addr, fpuState, xfs->len); |
21 |
+ POST_MEM_WRITE( xfs->addr, xfs->len ); |
22 |
+ SET_STATUS_Success ( 0 ); |
23 |
+ } else { |
24 |
+ SET_STATUS_Failure( VKI_EINVAL ); |
25 |
+ } |
26 |
+ } |
27 |
+ break; |
28 |
default: |
29 |
VG_(message) (Vg_UserMsg, "unhandled sysarch cmd %ld", ARG1); |
30 |
VG_(unimplemented) ("unhandled sysarch cmd"); |