25 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
26 |
* |
* |
27 |
* |
* |
28 |
* $Id: cpu_alpha_instr.c,v 1.11 2006/06/03 06:46:44 debug Exp $ |
* $Id: cpu_alpha_instr.c,v 1.14 2006/08/21 17:02:36 debug Exp $ |
29 |
* |
* |
30 |
* Alpha instructions. |
* Alpha instructions. |
31 |
* |
* |
65 |
alpha_palcode(cpu, ic->arg[0]); |
alpha_palcode(cpu, ic->arg[0]); |
66 |
|
|
67 |
if (!cpu->running) { |
if (!cpu->running) { |
|
cpu->running_translated = 0; |
|
68 |
cpu->n_translated_instrs --; |
cpu->n_translated_instrs --; |
69 |
cpu->cd.alpha.next_ic = ¬hing_call; |
cpu->cd.alpha.next_ic = ¬hing_call; |
70 |
} else if (cpu->pc != old_pc) { |
} else if (cpu->pc != old_pc) { |
597 |
|
|
598 |
|
|
599 |
/* |
/* |
600 |
|
* implver: Return CPU implver value. |
601 |
|
* |
602 |
|
* arg[0] = pointer to destination uint64_t |
603 |
|
*/ |
604 |
|
X(implver) |
605 |
|
{ |
606 |
|
reg(ic->arg[0]) = cpu->cd.alpha.cpu_type.implver; |
607 |
|
} |
608 |
|
|
609 |
|
|
610 |
|
/* |
611 |
* mull: Signed Multiply 32x32 => 32. |
* mull: Signed Multiply 32x32 => 32. |
612 |
* |
* |
613 |
* arg[0] = pointer to destination uint64_t |
* arg[0] = pointer to destination uint64_t |
889 |
} |
} |
890 |
ic->f = alpha_loadstore[ |
ic->f = alpha_loadstore[ |
891 |
loadstore_type + (imm==0? 4 : 0) + 8 * load |
loadstore_type + (imm==0? 4 : 0) + 8 * load |
892 |
+ (cpu->machine->dyntrans_alignment_check? 16:0) |
+ 16 * llsc]; |
|
+ 32 * llsc]; |
|
893 |
/* Load to the zero register is treated as a prefetch |
/* Load to the zero register is treated as a prefetch |
894 |
hint. It is ignored here. */ |
hint. It is ignored here. */ |
895 |
if (load && ra == ALPHA_ZERO) { |
if (load && ra == ALPHA_ZERO) { |
1004 |
case 0xc8: ic->f = instr(xornot_imm); break; |
case 0xc8: ic->f = instr(xornot_imm); break; |
1005 |
case 0xe4: ic->f = instr(cmovle_imm); break; |
case 0xe4: ic->f = instr(cmovle_imm); break; |
1006 |
case 0xe6: ic->f = instr(cmovgt_imm); break; |
case 0xe6: ic->f = instr(cmovgt_imm); break; |
1007 |
|
case 0xec: ic->f = instr(implver); break; |
1008 |
default:fatal("[ Alpha: unimplemented function 0x%03x for" |
default:fatal("[ Alpha: unimplemented function 0x%03x for" |
1009 |
" opcode 0x%02x ]\n", func, opcode); |
" opcode 0x%02x ]\n", func, opcode); |
1010 |
goto bad; |
goto bad; |