Bug 395777

Summary: disInstr(arm): unhandled instruction: 0xE7F000F0 (wine, dlls/msvcp90/tests/misc.c)
Product: [Developer tools] valgrind Reporter: Austin English <austinenglish>
Component: generalAssignee: Julian Seward <jseward>
Status: REPORTED ---    
Severity: normal CC: peter.maydell
Priority: NOR    
Version First Reported In: 3.14 SVN   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Austin English 2018-06-23 02:04:42 UTC
As description states:
disInstr(arm): unhandled instruction: 0xE7F000F0
                 cond=14(0xE) 27:20=127(0x7F) 4:4=1 3:0=0(0x0)

found when running wine's unit tests, specifically dlls/msvcp90/tests/misc.c

(stretch)austin@localhost:~/src/valgrind$ /opt/valgrind/bin/valgrind --version -v
valgrind-3.14.0.GIT-90daa486e8-20180620
Comment 1 Austin English 2018-06-23 02:19:38 UTC
That seems to be 
#define FBT_BREAKPOINT		0xe7f000f0

according to https://github.com/F-Stack/f-stack/blob/master/freebsd/arm/include/trap.h

There's only a few more in that header, so it may be worth implementing all at the same time:
#define GDB_BREAKPOINT		0xe6000011
#define GDB5_BREAKPOINT		0xe7ffdefe
#define PTRACE_BREAKPOINT	0xe7fffff0
#define KERNEL_BREAKPOINT	0xe7ffffff
#define FBT_BREAKPOINT		0xe7f000f0
Comment 2 Peter Maydell 2018-06-23 16:16:43 UTC
The last four of those are all in 0xe7fxxxfx, which is the UDF always-undefined insn. The only "handling" needed here would be suppressing the warning (probably reasonable, since these undefined insns tend to get used by JITs and the like for various clever tricks). 0xe6000011 is a random not-yet-allocated encoding in the "parallel arithmetic" instruction class. Google claims it was "used by gdb 4.x"...