On 23 January 2017 at 02:17, Richard Henderson <r...@twiddle.net> wrote: > This is just about the minimum required to enable compilation > without actually executing any instructions. This contains the > HPPACPU structure and the required callbacks, the gdbstub, the > basic translation loop, and a translate_one function that always > results in an illegal instruction. > > Signed-off-by: Richard Henderson <r...@twiddle.net>
> --- /dev/null > +++ b/target/hppa/gdbstub.c > @@ -0,0 +1,111 @@ > +/* > + * HPPA gdb server stub > +int hppa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) > +{ > + HPPACPU *cpu = HPPA_CPU(cs); > + CPUHPPAState *env = &cpu->env; > + target_ulong val = ldtul_p(mem_buf); > + > + switch (n) { > + case 0: > + cpu_hppa_put_psw(env, val); > + break; > + case 1 ... 31: > + env->gr[n] = val; > + break; > + case 32: > + env->sar = val; > + break; > + case 33: > + env->iaoq_f = val; > + break; > + case 35: > + env->iaoq_b = val; Is this a missing "break;" or a missing "/* fall through */" ? (spotted by Coverity, CID 1369420.) > + case 59: > + env->cr26 = val; > + break; > + case 60: > + env->cr27 = val; > + break; > + case 64: > + env->fr[0] = deposit64(env->fr[0], 32, 32, val); > + cpu_hppa_loaded_fr0(env); > + break; > + case 65 ... 127: > + { > + uint64_t *fr = &env->fr[(n - 64) / 2]; > + *fr = deposit64(*fr, val, (n & 1 ? 0 : 32), 32); > + } > + break; > + default: > + if (n >= 128) { > + return 0; > + } > + break; > + } > + return sizeof(target_ulong); > +}) thanks -- PMM