aboutsummaryrefslogtreecommitdiff
path: root/target-mips/op_template.c
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-09-06 00:18:15 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-09-06 00:18:15 +0000
commitead9360e2fbcaae10a8ca3d8bfed885422205dca (patch)
treebbec65c2f895319d4192f9662919f74f51556f9a /target-mips/op_template.c
parent606b41e7020db7634fe90d069d2c019770c74b45 (diff)
Partial support for 34K multithreading, not functional yet.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3156 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-mips/op_template.c')
-rw-r--r--target-mips/op_template.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/target-mips/op_template.c b/target-mips/op_template.c
index 8236acc18e..41d954c1db 100644
--- a/target-mips/op_template.c
+++ b/target-mips/op_template.c
@@ -21,31 +21,44 @@
#if defined(REG)
void glue(op_load_gpr_T0_gpr, REG) (void)
{
- T0 = env->gpr[REG];
+ T0 = env->gpr[REG][env->current_tc];
RETURN();
}
void glue(op_store_T0_gpr_gpr, REG) (void)
{
- env->gpr[REG] = T0;
+ env->gpr[REG][env->current_tc] = T0;
RETURN();
}
void glue(op_load_gpr_T1_gpr, REG) (void)
{
- T1 = env->gpr[REG];
+ T1 = env->gpr[REG][env->current_tc];
RETURN();
}
void glue(op_store_T1_gpr_gpr, REG) (void)
{
- env->gpr[REG] = T1;
+ env->gpr[REG][env->current_tc] = T1;
RETURN();
}
void glue(op_load_gpr_T2_gpr, REG) (void)
{
- T2 = env->gpr[REG];
+ T2 = env->gpr[REG][env->current_tc];
+ RETURN();
+}
+
+
+void glue(op_load_srsgpr_T0_gpr, REG) (void)
+{
+ T0 = env->gpr[REG][(env->CP0_SRSCtl >> CP0SRSCtl_PSS) & 0xf];
+ RETURN();
+}
+
+void glue(op_store_T0_srsgpr_gpr, REG) (void)
+{
+ env->gpr[REG][(env->CP0_SRSCtl >> CP0SRSCtl_PSS) & 0xf] = T0;
RETURN();
}
#endif