Implement Process Priority Register as defined in the PowerPC 2.04 spec.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3282 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
d7e4b87e53
commit
c80f84e3c0
@ -295,6 +295,14 @@ void OPPROTO op_store_xer (void)
|
||||
RETURN();
|
||||
}
|
||||
|
||||
#if defined(TARGET_PPC64)
|
||||
void OPPROTO op_store_pri (void)
|
||||
{
|
||||
do_store_pri(PARAM1);
|
||||
RETURN();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
/* Segment registers load and store */
|
||||
void OPPROTO op_load_sr (void)
|
||||
|
@ -112,6 +112,14 @@ void do_store_xer (void)
|
||||
xer_bc = (T0 >> XER_BC) & 0x7F;
|
||||
}
|
||||
|
||||
#if defined(TARGET_PPC64)
|
||||
void do_store_pri (int prio)
|
||||
{
|
||||
env->spr[SPR_PPR] &= ~0x001C000000000000ULL;
|
||||
env->spr[SPR_PPR] |= ((uint64_t)prio & 0x7) << 50;
|
||||
}
|
||||
#endif
|
||||
|
||||
void do_load_fpscr (void)
|
||||
{
|
||||
/* The 32 MSB of the target fpr are undefined.
|
||||
|
@ -57,6 +57,9 @@ void do_load_cr (void);
|
||||
void do_store_cr (uint32_t mask);
|
||||
void do_load_xer (void);
|
||||
void do_store_xer (void);
|
||||
#if defined(TARGET_PPC64)
|
||||
void do_store_pri (int prio);
|
||||
#endif
|
||||
void do_load_fpscr (void);
|
||||
void do_store_fpscr (uint32_t mask);
|
||||
target_ulong ppc_load_dump_spr (int sprn);
|
||||
|
@ -1124,6 +1124,26 @@ GEN_HANDLER(or, 0x1F, 0x1C, 0x0D, 0x00000000, PPC_INTEGER)
|
||||
} else if (unlikely(Rc(ctx->opcode) != 0)) {
|
||||
gen_op_load_gpr_T0(rs);
|
||||
gen_set_Rc0(ctx);
|
||||
#if defined(TARGET_PPC64)
|
||||
} else {
|
||||
switch (rs) {
|
||||
case 1:
|
||||
/* Set process priority to low */
|
||||
gen_op_store_pri(2);
|
||||
break;
|
||||
case 6:
|
||||
/* Set process priority to medium-low */
|
||||
gen_op_store_pri(3);
|
||||
break;
|
||||
case 2:
|
||||
/* Set process priority to normal */
|
||||
gen_op_store_pri(4);
|
||||
break;
|
||||
default:
|
||||
/* nop */
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user