mirror of https://gitee.com/openkylin/qemu.git
target-microblaze: Implement MFSE EAR
Implement MFSE EAR to enable access to the upper part of EAR. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
This commit is contained in:
parent
d248e1beac
commit
a1b48e3a3a
target/microblaze
|
@ -459,7 +459,7 @@ static void dec_msr(DisasContext *dc)
|
|||
CPUState *cs = CPU(dc->cpu);
|
||||
TCGv_i32 t0, t1;
|
||||
unsigned int sr, rn;
|
||||
bool to, clrset;
|
||||
bool to, clrset, extended;
|
||||
|
||||
sr = extract32(dc->imm, 0, 14);
|
||||
to = extract32(dc->imm, 14, 1);
|
||||
|
@ -467,6 +467,9 @@ static void dec_msr(DisasContext *dc)
|
|||
dc->type_b = 1;
|
||||
if (to) {
|
||||
dc->cpustate_changed = 1;
|
||||
extended = extract32(dc->imm, 24, 1);
|
||||
} else {
|
||||
extended = extract32(dc->imm, 19, 1);
|
||||
}
|
||||
|
||||
/* msrclr and msrset. */
|
||||
|
@ -559,6 +562,10 @@ static void dec_msr(DisasContext *dc)
|
|||
msr_read(dc, cpu_R[dc->rd]);
|
||||
break;
|
||||
case SR_EAR:
|
||||
if (extended) {
|
||||
tcg_gen_extrh_i64_i32(cpu_R[dc->rd], cpu_SR[sr]);
|
||||
break;
|
||||
}
|
||||
case SR_ESR:
|
||||
case SR_FSR:
|
||||
case SR_BTR:
|
||||
|
|
Loading…
Reference in New Issue