Annotation of nono/m680x0/m68030fpu.h, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.