diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2012-09-16 13:12:21 +0200 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2012-09-21 19:53:16 +0200 |
commit | 1012740098d0307ce5d957ebbe9a7f020da7f574 (patch) | |
tree | f7be3fd3b6e8572b871bb6adf4e424b0b4bbe32c /target-sh4/helper.h | |
parent | ed22e6f30e7f8c723f9b1be30869b9c0368e3e4e (diff) | |
download | qemu-1012740098d0307ce5d957ebbe9a7f020da7f574.zip qemu-1012740098d0307ce5d957ebbe9a7f020da7f574.tar.gz qemu-1012740098d0307ce5d957ebbe9a7f020da7f574.tar.bz2 |
target-sh4: rework exceptions handling
Since commit fd4bab102 PC is restored in case of exception through code
retranslation. While it is clearly the thing to do in case it is not
not known if an helper is going to trigger an exception or not
(e.g. for load/store, FPU, etc.), it just make things slower when the
exception is already known at translation time.
Partially revert this commit and save PC in the TCG code. Set bstate to
BS_BRANCH to not generate TCG exit code. Micro-optimize the sleep
helper. Make all the exception helpers to call raise_exception and mark
it as noreturn.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'target-sh4/helper.h')
-rw-r--r-- | target-sh4/helper.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/target-sh4/helper.h b/target-sh4/helper.h index a00b7dd..6c1a47d 100644 --- a/target-sh4/helper.h +++ b/target-sh4/helper.h @@ -1,13 +1,13 @@ #include "def-helper.h" DEF_HELPER_1(ldtlb, void, env) -DEF_HELPER_1(raise_illegal_instruction, void, env) -DEF_HELPER_1(raise_slot_illegal_instruction, void, env) -DEF_HELPER_1(raise_fpu_disable, void, env) -DEF_HELPER_1(raise_slot_fpu_disable, void, env) -DEF_HELPER_1(debug, void, env) -DEF_HELPER_2(sleep, void, env, i32) -DEF_HELPER_2(trapa, void, env, i32) +DEF_HELPER_1(raise_illegal_instruction, noreturn, env) +DEF_HELPER_1(raise_slot_illegal_instruction, noreturn, env) +DEF_HELPER_1(raise_fpu_disable, noreturn, env) +DEF_HELPER_1(raise_slot_fpu_disable, noreturn, env) +DEF_HELPER_1(debug, noreturn, env) +DEF_HELPER_1(sleep, noreturn, env) +DEF_HELPER_2(trapa, noreturn, env, i32) DEF_HELPER_3(movcal, void, env, i32, i32) DEF_HELPER_1(discard_movcal_backup, void, env) |