target-microblaze: impelemented swapx instructions
Implemented the swapb and swaph byte/halfword reversal instructions added to microblaze v8.30 Signed-off-by: Peter A. G. Crosthwaite <peter.crosthwaite@petalogix.com> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
This commit is contained in:
parent
76ee152a86
commit
ace2e4dad7
@ -743,7 +743,7 @@ static void dec_bit(DisasContext *dc)
|
|||||||
unsigned int op;
|
unsigned int op;
|
||||||
int mem_index = cpu_mmu_index(dc->env);
|
int mem_index = cpu_mmu_index(dc->env);
|
||||||
|
|
||||||
op = dc->ir & ((1 << 8) - 1);
|
op = dc->ir & ((1 << 9) - 1);
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case 0x21:
|
case 0x21:
|
||||||
/* src. */
|
/* src. */
|
||||||
@ -825,6 +825,16 @@ static void dec_bit(DisasContext *dc)
|
|||||||
gen_helper_clz(cpu_R[dc->rd], cpu_R[dc->ra]);
|
gen_helper_clz(cpu_R[dc->rd], cpu_R[dc->ra]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 0x1e0:
|
||||||
|
/* swapb */
|
||||||
|
LOG_DIS("swapb r%d r%d\n", dc->rd, dc->ra);
|
||||||
|
tcg_gen_bswap32_i32(cpu_R[dc->rd], cpu_R[dc->ra]);
|
||||||
|
break;
|
||||||
|
case 0x1e1:
|
||||||
|
/*swaph */
|
||||||
|
LOG_DIS("swaph r%d r%d\n", dc->rd, dc->ra);
|
||||||
|
tcg_gen_rotri_i32(cpu_R[dc->rd], cpu_R[dc->ra], 16);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
cpu_abort(dc->env, "unknown bit oc=%x op=%x rd=%d ra=%d rb=%d\n",
|
cpu_abort(dc->env, "unknown bit oc=%x op=%x rd=%d ra=%d rb=%d\n",
|
||||||
dc->pc, op, dc->rd, dc->ra, dc->rb);
|
dc->pc, op, dc->rd, dc->ra, dc->rb);
|
||||||
|
Loading…
Reference in New Issue
Block a user