From: Philippe E. <ph...@wa...> - 2003-04-27 00:49:12
|
Julian Seward wrote: > Hello. I'm trying to put together bug fixes for 1.9.6. > > Several people reported this panic: > > REPE then 0xF > > valgrind: the `impossible' happened: > Unhandled REPE case > > I'd like to fix it, since it seems to afflict quite a number > of people. However, reading my Intel P4 documentation I can't > figure out what instruction this is. > > So: does anyone have a smallish test case I can use to reproduce > this with? Or (not so good, but it would be a help) can anyone > tell me what the byte after the 0xF is? You can find out > by changing vg_to_ucode.c:4321 from > > VG_(printf)("REPE then 0x%x\n", (UInt)abyte); > > to > > VG_(printf)("REPE then 0x%x 0x%x\n", (UInt)abyte, > (UInt)getUChar(eip)); > > I prefer a test case tho, so I can test any fix I make. Sorry no test case. 0x66/0xF3/0xF2 prefix are valid first byte opcode for some sse/ss2e instruction e.g. F3 0F 58/r addss xmm1, xmm2/m32 they are listed in table Intel P4 documentation Doc P4 Volume 2 Table A-3 Two byte opcode map, in each cell some insn specify an additionnal opcode which is in fact the first byte of the instructions, if you already handle 0x66 0xF there is only a few new opcode else ... regards, Phil |