--- nono/m680x0/m68030fpu.cpp 2026/04/29 17:04:28 1.1 +++ nono/m680x0/m68030fpu.cpp 2026/04/29 17:05:08 1.1.1.3 @@ -1,20 +1,20 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // -#include "header.h" #include "m68030core.h" #include "m68030bus.h" -#include "m68030excep.h" #include "m68030ea.h" +#include "m68030excep.h" #include "m68030fpu.h" static void fgen(m68kcpu *); static void fpu_op_fmovecr(m68kcpu *); // リセット用のレジスタ初期値 -struct fpframe initial_fpframe; +static struct fpframe initial_fpframe; // 初期化 void @@ -40,7 +40,7 @@ fpu_init(m68kcpu *cpu) // FPU をリセットする。 // MPU リセット時と、NULL フレームのリストア時に呼ばれる。 -void +static void fpu_reset(m68kcpu *cpu) { // 高速化のため、あらかじめ用意しておいたイメージをコピーする @@ -120,7 +120,7 @@ cea_fpu(m68kcpu *cpu, int bytes) } // メモリから 64ビット値を読み込む -void +static void m68030_read_64(m68kcpu *cpu, uint32 addr, uint32 *data) { data[0] = m68030_read_32(cpu, addr); @@ -128,7 +128,7 @@ m68030_read_64(m68kcpu *cpu, uint32 addr } // メモリから 96ビット値を読み込む -void +static void m68030_read_96(m68kcpu *cpu, uint32 addr, uint32 *data) { data[0] = m68030_read_32(cpu, addr); @@ -137,7 +137,7 @@ m68030_read_96(m68kcpu *cpu, uint32 addr } // 64ビット値(.D)をメモリに書き込む -void +static void m68030_write_64(m68kcpu *cpu, int32 addr, const uint32 *data) { m68030_write_32(cpu, addr, data[0]); @@ -145,7 +145,7 @@ m68030_write_64(m68kcpu *cpu, int32 addr } // 96ビット値(.D)をメモリに書き込む -void +static void m68030_write_96(m68kcpu *cpu, int32 addr, const uint32 *data) { m68030_write_32(cpu, addr, data[0]); @@ -153,9 +153,9 @@ m68030_write_96(m68kcpu *cpu, int32 addr m68030_write_32(cpu, addr + 8, data[2]); } -// ソースを読み込みます。 -// 不当命令パターンなら false を返します。 -// size_id は SIZE_* です。 +// ソースを読み込む。 +// 不当命令パターンなら false を返す。 +// size_id は SIZE_*。 static bool readSRC(m68kcpu *cpu, int size_id, struct fpn *fpn) { @@ -165,10 +165,10 @@ readSRC(m68kcpu *cpu, int size_id, struc uint32 data[3]; // 68881 本(p6-13) にはクロック数はこう書いてあるので - // Inst | src=FPn | memory source or dst operand format - // | | Int Sgl Dbl Ext Pakced - // ---- +---------- +------ ------- ------- ------- ------- - // FABS | 35 | 62 54 60 58 872 + // Inst | src=FPn | memory source or dst operand format + // | | Int Sgl Dbl Ext Pakced + // ---- +---------- +------ ------- ------- ------- ------- + // FABS | 35 | 62 54 60 58 872 // (差分) +27 +19 +25 +23 +837 // FADD | 51 | 80 72 78 76 888 // (差分) +29 +21 +27 +25 +837 @@ -292,7 +292,7 @@ fpu_op_illg(m68kcpu *cpu) } // FPU 不当命令 (2ワード目で確定) -void +static void fpu_op_illg2(m68kcpu *cpu) { cpulog(1, "FPU 不当命令 %04X %04X", RegIR, RegIR2); @@ -1342,7 +1342,7 @@ fpu_op_fsave(m68kcpu *cpu) case 4: // -(An) // これだけ処理が違うので、ここでやる m68030_save_reg_pd(cpu, rr); - for (int i = framelen; i >= 0; i--) { + for (int i = framelen - 1; i >= 0; i--) { RegA(rr) -= 4; m68030_write_32(cpu, RegA(rr), frame[i]); }