| 20 | thread_local csh handle_big = 0; |
| 21 | |
| 22 | int DoesQualifyForLocalDisassembly(const uint8_t *data, bool bigendian) |
| 23 | { |
| 24 | uint32_t insword = *(uint32_t *)data; |
| 25 | int result = PPC_INS_INVALID; |
| 26 | uint32_t tmp = 0; |
| 27 | |
| 28 | if(bigendian == true) |
| 29 | { |
| 30 | insword = bswap32(insword); |
| 31 | } |
| 32 | |
| 33 | // 111111xxx00xxxxxxxxxx00001000000 <- fcmpo |
| 34 | tmp = insword & 0xFC6007FF; |
| 35 | if (tmp==0xFC000040) |
| 36 | result = PPC_INS_BN_FCMPO; |
| 37 | // 111100xxxxxxxxxxxxxxx00111010xxx <- xxpermr |
| 38 | if((insword & 0xFC0007F8) == 0xF00001D0) |
| 39 | result = PPC_INS_BN_XXPERMR; |
| 40 | |
| 41 | return result; |
| 42 | } |
| 43 | |
| 44 | void ppc_fcmpo(uint32_t insword, decomp_result *res) |
| 45 | { |