Commit ee0b03fd85652ddd04d3499f03e6821732862308
1 parent
a902d886
Fix Sparc64 wrasr instructions
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3297 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
6 additions
and
0 deletions
target-sparc/translate.c
| @@ -2043,9 +2043,11 @@ static void disas_sparc_insn(DisasContext * dc) | @@ -2043,9 +2043,11 @@ static void disas_sparc_insn(DisasContext * dc) | ||
| 2043 | break; | 2043 | break; |
| 2044 | #else | 2044 | #else |
| 2045 | case 0x2: /* V9 wrccr */ | 2045 | case 0x2: /* V9 wrccr */ |
| 2046 | + gen_op_xor_T1_T0(); | ||
| 2046 | gen_op_wrccr(); | 2047 | gen_op_wrccr(); |
| 2047 | break; | 2048 | break; |
| 2048 | case 0x3: /* V9 wrasi */ | 2049 | case 0x3: /* V9 wrasi */ |
| 2050 | + gen_op_xor_T1_T0(); | ||
| 2049 | gen_op_movl_env_T0(offsetof(CPUSPARCState, asi)); | 2051 | gen_op_movl_env_T0(offsetof(CPUSPARCState, asi)); |
| 2050 | break; | 2052 | break; |
| 2051 | case 0x6: /* V9 wrfprs */ | 2053 | case 0x6: /* V9 wrfprs */ |
| @@ -2066,6 +2068,7 @@ static void disas_sparc_insn(DisasContext * dc) | @@ -2066,6 +2068,7 @@ static void disas_sparc_insn(DisasContext * dc) | ||
| 2066 | case 0x13: /* Graphics Status */ | 2068 | case 0x13: /* Graphics Status */ |
| 2067 | if (gen_trap_ifnofpu(dc)) | 2069 | if (gen_trap_ifnofpu(dc)) |
| 2068 | goto jmp_insn; | 2070 | goto jmp_insn; |
| 2071 | + gen_op_xor_T1_T0(); | ||
| 2069 | gen_op_movtl_env_T0(offsetof(CPUSPARCState, gsr)); | 2072 | gen_op_movtl_env_T0(offsetof(CPUSPARCState, gsr)); |
| 2070 | break; | 2073 | break; |
| 2071 | case 0x17: /* Tick compare */ | 2074 | case 0x17: /* Tick compare */ |
| @@ -2073,6 +2076,7 @@ static void disas_sparc_insn(DisasContext * dc) | @@ -2073,6 +2076,7 @@ static void disas_sparc_insn(DisasContext * dc) | ||
| 2073 | if (!supervisor(dc)) | 2076 | if (!supervisor(dc)) |
| 2074 | goto illegal_insn; | 2077 | goto illegal_insn; |
| 2075 | #endif | 2078 | #endif |
| 2079 | + gen_op_xor_T1_T0(); | ||
| 2076 | gen_op_movtl_env_T0(offsetof(CPUSPARCState, tick_cmpr)); | 2080 | gen_op_movtl_env_T0(offsetof(CPUSPARCState, tick_cmpr)); |
| 2077 | gen_op_wrtick_cmpr(); | 2081 | gen_op_wrtick_cmpr(); |
| 2078 | break; | 2082 | break; |
| @@ -2081,6 +2085,7 @@ static void disas_sparc_insn(DisasContext * dc) | @@ -2081,6 +2085,7 @@ static void disas_sparc_insn(DisasContext * dc) | ||
| 2081 | if (!supervisor(dc)) | 2085 | if (!supervisor(dc)) |
| 2082 | goto illegal_insn; | 2086 | goto illegal_insn; |
| 2083 | #endif | 2087 | #endif |
| 2088 | + gen_op_xor_T1_T0(); | ||
| 2084 | gen_op_wrstick(); | 2089 | gen_op_wrstick(); |
| 2085 | break; | 2090 | break; |
| 2086 | case 0x19: /* System tick compare */ | 2091 | case 0x19: /* System tick compare */ |
| @@ -2088,6 +2093,7 @@ static void disas_sparc_insn(DisasContext * dc) | @@ -2088,6 +2093,7 @@ static void disas_sparc_insn(DisasContext * dc) | ||
| 2088 | if (!supervisor(dc)) | 2093 | if (!supervisor(dc)) |
| 2089 | goto illegal_insn; | 2094 | goto illegal_insn; |
| 2090 | #endif | 2095 | #endif |
| 2096 | + gen_op_xor_T1_T0(); | ||
| 2091 | gen_op_movtl_env_T0(offsetof(CPUSPARCState, stick_cmpr)); | 2097 | gen_op_movtl_env_T0(offsetof(CPUSPARCState, stick_cmpr)); |
| 2092 | gen_op_wrstick_cmpr(); | 2098 | gen_op_wrstick_cmpr(); |
| 2093 | break; | 2099 | break; |