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 --- |