|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2018 [email protected] ! 4: // ! 5: ! 6: #pragma once ! 7: ! 8: #define SIZE_L (0) ! 9: #define SIZE_S (1) ! 10: #define SIZE_X (2) ! 11: #define SIZE_P (3) ! 12: #define SIZE_W (4) ! 13: #define SIZE_D (5) ! 14: #define SIZE_B (6) ! 15: ! 16: // FPU 命令の FSAVE/FRESTORE 以外のグループ全員で実行開始時に必要な処理 ! 17: static inline void ! 18: fpu_op_start(m68kcpu *cpu) ! 19: { ! 20: struct fpemu *fe = &cpu->fe; ! 21: ! 22: cpu->fpu_dirty = true; ! 23: ! 24: // 現在の FPCR/FPSR を fe 構造体にコピー。 ! 25: // ! 26: // fe->fe_{fpcr,fpsr} のほうはこの fpe 用の内部ワークなので破壊してよい。 ! 27: // 命令実行の結果、FPSR レジスタの値を更新する際は fpu_upd_fpsr() を ! 28: // 呼ぶこと。これを使わず独自に更新する場合は fe->fe_fpframe->fpf_fpsr ! 29: // (こっちがレジスタ値) と fe->fe_fpsr (FPE 用) を同時に更新すること。 ! 30: // FPCR のほうは FMOVE-to-FPCR 命令以外で変更されることはないはず。 ! 31: fe->fe_fpcr = RegFPCR; ! 32: fe->fe_fpsr = RegFPSR; ! 33: } ! 34: ! 35: extern void fpu_init(m68kcpu *cpu); ! 36: ! 37: extern void fpu_op_fgen_reg(m68kcpu *cpu); ! 38: extern void fpu_op_fgen_mem(m68kcpu *cpu); ! 39: extern void fpu_op_fmove_b_mem(m68kcpu *cpu); ! 40: extern void fpu_op_fmove_w_mem(m68kcpu *cpu); ! 41: extern void fpu_op_fmove_l_mem(m68kcpu *cpu); ! 42: extern void fpu_op_fmove_s_mem(m68kcpu *cpu); ! 43: extern void fpu_op_fmove_d_mem(m68kcpu *cpu); ! 44: extern void fpu_op_fmove_x_mem(m68kcpu *cpu); ! 45: extern void fpu_op_fmove_p_mem(m68kcpu *cpu); ! 46: extern void fpu_op_fmove_ea2ctl(m68kcpu *cpu); ! 47: extern void fpu_op_fmovem_ea2ctl(m68kcpu *cpu); ! 48: extern void fpu_op_fmove_ctl2ea(m68kcpu *cpu); ! 49: extern void fpu_op_fmovem_ctl2ea(m68kcpu *cpu); ! 50: extern void fpu_op_fmovem_ea2reg(m68kcpu *cpu); ! 51: extern void fpu_op_fmovem_reg2ea(m68kcpu *cpu); ! 52: extern void fpu_op_fscc(m68kcpu *cpu); ! 53: extern void fpu_op_fdbcc(m68kcpu *cpu); ! 54: extern void fpu_op_ftrapcc_w(m68kcpu *cpu); ! 55: extern void fpu_op_ftrapcc_l(m68kcpu *cpu); ! 56: extern void fpu_op_ftrapcc(m68kcpu *cpu); ! 57: extern void fpu_op_fbcc_w(m68kcpu *cpu); ! 58: extern void fpu_op_fbcc_l(m68kcpu *cpu); ! 59: extern void fpu_op_fsave(m68kcpu *cpu); ! 60: extern void fpu_op_frestore(m68kcpu *cpu); ! 61: extern void fpu_op_illg(m68kcpu *cpu);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.