> 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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/