translate.c (800af0aae1cfa456701c5fa1ef273ce47585179c) translate.c (930f1865cc654b637ffe1207fa5b44bf0a156279)
1/*
2 SPARC translation
3
4 Copyright (C) 2003 Thomas M. Ogrisegg <tom@fnord.at>
5 Copyright (C) 2003-2005 Fabrice Bellard
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public

--- 5640 unchanged lines hidden (view full) ---

5649 case DISAS_NEXT:
5650 case DISAS_TOO_MANY:
5651 if (((dc->pc | dc->npc) & 3) == 0) {
5652 /* static PC and NPC: we can use direct chaining */
5653 gen_goto_tb(dc, 0, dc->pc, dc->npc);
5654 break;
5655 }
5656
1/*
2 SPARC translation
3
4 Copyright (C) 2003 Thomas M. Ogrisegg <tom@fnord.at>
5 Copyright (C) 2003-2005 Fabrice Bellard
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public

--- 5640 unchanged lines hidden (view full) ---

5649 case DISAS_NEXT:
5650 case DISAS_TOO_MANY:
5651 if (((dc->pc | dc->npc) & 3) == 0) {
5652 /* static PC and NPC: we can use direct chaining */
5653 gen_goto_tb(dc, 0, dc->pc, dc->npc);
5654 break;
5655 }
5656
5657 may_lookup = true;
5657 if (dc->pc & 3) {
5658 switch (dc->pc) {
5659 case DYNAMIC_PC_LOOKUP:
5658 if (dc->pc & 3) {
5659 switch (dc->pc) {
5660 case DYNAMIC_PC_LOOKUP:
5660 may_lookup = true;
5661 break;
5662 case DYNAMIC_PC:
5663 may_lookup = false;
5664 break;
5665 default:
5666 g_assert_not_reached();
5667 }
5668 } else {
5669 tcg_gen_movi_tl(cpu_pc, dc->pc);
5661 break;
5662 case DYNAMIC_PC:
5663 may_lookup = false;
5664 break;
5665 default:
5666 g_assert_not_reached();
5667 }
5668 } else {
5669 tcg_gen_movi_tl(cpu_pc, dc->pc);
5670 may_lookup = true;
5671 }
5672
5670 }
5671
5673 save_npc(dc);
5672 if (dc->npc & 3) {
5673 switch (dc->npc) {
5674 case JUMP_PC:
5675 gen_generic_branch(dc);
5676 break;
5677 case DYNAMIC_PC:
5678 may_lookup = false;
5679 break;
5680 case DYNAMIC_PC_LOOKUP:
5681 break;
5682 default:
5683 g_assert_not_reached();
5684 }
5685 } else {
5686 tcg_gen_movi_tl(cpu_npc, dc->npc);
5687 }
5674 if (may_lookup) {
5675 tcg_gen_lookup_and_goto_ptr();
5676 } else {
5677 tcg_gen_exit_tb(NULL, 0);
5678 }
5679 break;
5680
5681 case DISAS_NORETURN:

--- 146 unchanged lines hidden ---
5688 if (may_lookup) {
5689 tcg_gen_lookup_and_goto_ptr();
5690 } else {
5691 tcg_gen_exit_tb(NULL, 0);
5692 }
5693 break;
5694
5695 case DISAS_NORETURN:

--- 146 unchanged lines hidden ---