Commit 134d77a14b969edf77117f34d9859bb667f9c922

Authored by blueswir1
1 parent a3ffaf30

Convert exception ops to TCG


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4022 c046a42c-6fe2-441c-8c8c-71466251a162
target-sparc/cpu.h
... ... @@ -321,7 +321,6 @@ void cpu_set_cwp(CPUSPARCState *env1, int new_cwp);
321 321 #endif
322 322  
323 323 int cpu_sparc_signal_handler(int host_signum, void *pinfo, void *puc);
324   -void raise_exception(int tt);
325 324 void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
326 325 int is_asi);
327 326 void cpu_check_irqs(CPUSPARCState *env);
... ...
target-sparc/exec.h
... ... @@ -66,7 +66,6 @@ void do_fxtoq(void);
66 66 #endif
67 67 #endif
68 68 void do_interrupt(int intno);
69   -void raise_exception(int tt);
70 69 void memcpy32(target_ulong *dst, const target_ulong *src);
71 70 target_ulong mmu_probe(CPUState *env, target_ulong address, int mmulev);
72 71 void dump_mmu(CPUState *env);
... ...
target-sparc/helper.h
... ... @@ -72,3 +72,4 @@ void TCG_HELPER_PROTO helper_fcmpeq_fcc2(void);
72 72 void TCG_HELPER_PROTO helper_fcmpeq_fcc3(void);
73 73 #endif
74 74 #endif
  75 +void TCG_HELPER_PROTO raise_exception(int tt);
... ...
target-sparc/op.c
... ... @@ -857,22 +857,6 @@ void OPPROTO op_restore(void)
857 857 }
858 858 #endif
859 859  
860   -void OPPROTO op_exception(void)
861   -{
862   - env->exception_index = PARAM1;
863   - cpu_loop_exit();
864   - FORCE_RET();
865   -}
866   -
867   -void OPPROTO op_fpexception_im(void)
868   -{
869   - env->exception_index = TT_FP_EXCP;
870   - env->fsr &= ~FSR_FTT_MASK;
871   - env->fsr |= PARAM1;
872   - cpu_loop_exit();
873   - FORCE_RET();
874   -}
875   -
876 860 void OPPROTO op_eval_ba(void)
877 861 {
878 862 T2 = 1;
... ...
target-sparc/translate.c
... ... @@ -807,6 +807,24 @@ static inline void gen_op_fcmpeq(int fccno)
807 807  
808 808 #endif
809 809  
  810 +static inline void gen_op_exception(int exception)
  811 +{
  812 + TCGv r_except;
  813 +
  814 + r_except = tcg_temp_new(TCG_TYPE_I32);
  815 + tcg_gen_movi_i32(r_except, exception);
  816 + tcg_gen_helper_0_1(raise_exception, r_except);
  817 +}
  818 +
  819 +static inline void gen_op_fpexception_im(int fsr_flags)
  820 +{
  821 + tcg_gen_ld_tl(cpu_tmp0, cpu_env, offsetof(CPUSPARCState, fsr));
  822 + tcg_gen_andi_tl(cpu_tmp0, cpu_tmp0, ~FSR_FTT_MASK);
  823 + tcg_gen_ori_tl(cpu_tmp0, cpu_tmp0, fsr_flags);
  824 + tcg_gen_st_tl(cpu_tmp0, cpu_env, offsetof(CPUSPARCState, fsr));
  825 + gen_op_exception(TT_FP_EXCP);
  826 +}
  827 +
810 828 static int gen_trap_ifnofpu(DisasContext * dc)
811 829 {
812 830 #if !defined(CONFIG_USER_ONLY)
... ...