> Implement instr_is_load_store_2_06() to detect whether a given instruction > is one of the fixed-point or floating-point load/store instructions in the > POWER Instruction Set Architecture v2.06. ... > +int instr_is_load_store_2_06(const unsigned int *instr) > +{ > + unsigned int op, upper, lower; > + > + op = instr_opcode(*instr); > + > + if ((op >= 32 && op <= 58) || (op == 61 || op == 62)) > + return true; > + > + if (op != 31) > + return false; > + > + upper = op >> 5; > + lower = op & 0x1f; > + > + /* Short circuit as many misses as we can */ > + if (lower < 3 || lower > 23) > + return false; > + > + if (lower == 3) { > + if (upper >= 16) > + return true; > + > + return false; > + } > + > + if (lower == 7 || lower == 12) > + return true; > + > + if (lower >= 20) /* && lower <= 23 (implicit) */ > + return true; > + > + return false; > +}
I can't help feeling the code could do with some comments about which actual instructions are selected where. David _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev