diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 66fe70821..93a6f4d4c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -66,7 +66,7 @@ if(VNC) if(LibVNCServer_FOUND) add_compile_definitions(USE_VNC) add_library(vnc OBJECT vnc.c vnc_keymap.c) - target_link_libraries(86Box vnc LibVNCServer::vncserver) + target_link_libraries(86Box vnc LibVNCServer::vncserver) if(WIN32) target_link_libraries(86Box ws2_32) endif() diff --git a/src/codegen/codegen_ops.c b/src/codegen/codegen_ops.c index a81eef67e..c8e258e78 100644 --- a/src/codegen/codegen_ops.c +++ b/src/codegen/codegen_ops.c @@ -12,6 +12,7 @@ #include "x86_flags.h" #include "x86seg_common.h" #include "x86seg.h" +#include "x87_sf.h" #include "x87.h" #include "386_common.h" #include "cpu.h" diff --git a/src/codegen/codegen_x86-64.c b/src/codegen/codegen_x86-64.c index 421f20026..958872162 100644 --- a/src/codegen/codegen_x86-64.c +++ b/src/codegen/codegen_x86-64.c @@ -13,6 +13,7 @@ # include "x86_ops.h" # include "x86seg_common.h" # include "x86seg.h" +# include "x87_sf.h" # include "x87.h" # include <86box/mem.h> # include <86box/plat_unused.h> diff --git a/src/codegen/codegen_x86.c b/src/codegen/codegen_x86.c index 456f93ae9..74c209001 100644 --- a/src/codegen/codegen_x86.c +++ b/src/codegen/codegen_x86.c @@ -51,6 +51,7 @@ # include "x86_ops.h" # include "x86seg_common.h" # include "x86seg.h" +# include "x87_sf.h" # include "x87.h" /*ex*/ # include <86box/nmi.h> diff --git a/src/codegen_new/codegen_backend_arm64_uops.c b/src/codegen_new/codegen_backend_arm64_uops.c index 421292c7e..deaf53c20 100644 --- a/src/codegen_new/codegen_backend_arm64_uops.c +++ b/src/codegen_new/codegen_backend_arm64_uops.c @@ -9,6 +9,7 @@ # include "x86.h" # include "x86seg_common.h" # include "x86seg.h" +# include "x87_sf.h" # include "x87.h" # include "386_common.h" # include "codegen.h" diff --git a/src/codegen_new/codegen_backend_arm_uops.c b/src/codegen_new/codegen_backend_arm_uops.c index 04b61255b..d8c223884 100644 --- a/src/codegen_new/codegen_backend_arm_uops.c +++ b/src/codegen_new/codegen_backend_arm_uops.c @@ -10,6 +10,7 @@ # include "x86.h" # include "x86seg_common.h" # include "x86seg.h" +# include "x87_sf.h" # include "x87.h" # include "386_common.h" # include "codegen.h" diff --git a/src/codegen_new/codegen_backend_x86-64_uops.c b/src/codegen_new/codegen_backend_x86-64_uops.c index 1b82f9fca..46af68e75 100644 --- a/src/codegen_new/codegen_backend_x86-64_uops.c +++ b/src/codegen_new/codegen_backend_x86-64_uops.c @@ -9,6 +9,7 @@ # include "x86.h" # include "x86seg_common.h" # include "x86seg.h" +# include "x87_sf.h" # include "x87.h" # include "386_common.h" # include "codegen.h" diff --git a/src/codegen_new/codegen_backend_x86_uops.c b/src/codegen_new/codegen_backend_x86_uops.c index 91f2c7ec3..cd79b9b47 100644 --- a/src/codegen_new/codegen_backend_x86_uops.c +++ b/src/codegen_new/codegen_backend_x86_uops.c @@ -10,6 +10,7 @@ # include "x86_ops.h" # include "x86seg_common.h" # include "x86seg.h" +# include "x87_sf.h" # include "386_common.h" # include "codegen.h" # include "codegen_allocator.h" diff --git a/src/codegen_new/codegen_block.c b/src/codegen_new/codegen_block.c index ee0a030ba..a8ea0e06e 100644 --- a/src/codegen_new/codegen_block.c +++ b/src/codegen_new/codegen_block.c @@ -12,6 +12,7 @@ #include "x86_ops.h" #include "x86seg_common.h" #include "x86seg.h" +#include "x87_sf.h" #include "x87.h" #include "386_common.h" diff --git a/src/codegen_new/codegen_ops_fpu_arith.c b/src/codegen_new/codegen_ops_fpu_arith.c index 15a6399e6..a7b5290f4 100644 --- a/src/codegen_new/codegen_ops_fpu_arith.c +++ b/src/codegen_new/codegen_ops_fpu_arith.c @@ -9,6 +9,7 @@ #include "x86seg_common.h" #include "x86seg.h" #include "386_common.h" +#include "x87_sf.h" #include "x87.h" #include "codegen.h" #include "codegen_accumulate.h" diff --git a/src/codegen_new/codegen_ops_fpu_constant.c b/src/codegen_new/codegen_ops_fpu_constant.c index 862845868..a91d675c5 100644 --- a/src/codegen_new/codegen_ops_fpu_constant.c +++ b/src/codegen_new/codegen_ops_fpu_constant.c @@ -9,6 +9,7 @@ #include "x86seg_common.h" #include "x86seg.h" #include "386_common.h" +#include "x87_sf.h" #include "x87.h" #include "codegen.h" #include "codegen_accumulate.h" diff --git a/src/codegen_new/codegen_ops_fpu_loadstore.c b/src/codegen_new/codegen_ops_fpu_loadstore.c index 7635063e8..12babaf49 100644 --- a/src/codegen_new/codegen_ops_fpu_loadstore.c +++ b/src/codegen_new/codegen_ops_fpu_loadstore.c @@ -9,6 +9,7 @@ #include "x86seg_common.h" #include "x86seg.h" #include "386_common.h" +#include "x87_sf.h" #include "x87.h" #include "codegen.h" #include "codegen_accumulate.h" diff --git a/src/codegen_new/codegen_ops_fpu_misc.c b/src/codegen_new/codegen_ops_fpu_misc.c index 7865e0573..31b668488 100644 --- a/src/codegen_new/codegen_ops_fpu_misc.c +++ b/src/codegen_new/codegen_ops_fpu_misc.c @@ -9,6 +9,7 @@ #include "x86seg_common.h" #include "x86seg.h" #include "386_common.h" +#include "x87_sf.h" #include "x87.h" #include "codegen.h" #include "codegen_accumulate.h" diff --git a/src/cpu/386.c b/src/cpu/386.c index 5379dccf9..3e96911ba 100644 --- a/src/cpu/386.c +++ b/src/cpu/386.c @@ -15,6 +15,7 @@ #include "x86.h" #include "x86_ops.h" #include "x86seg_common.h" +#include "x87_sf.h" #include "x87.h" #include <86box/io.h> #include <86box/nmi.h> diff --git a/src/cpu/386_common.c b/src/cpu/386_common.c index 801b543c3..5e80ef4c3 100644 --- a/src/cpu/386_common.c +++ b/src/cpu/386_common.c @@ -14,6 +14,7 @@ #include <86box/timer.h> #include "x86.h" #include "x86seg_common.h" +#include "x87_sf.h" #include "x87.h" #include <86box/nmi.h> #include <86box/mem.h> diff --git a/src/cpu/386_dynarec.c b/src/cpu/386_dynarec.c index 77914a2a5..8e9403899 100644 --- a/src/cpu/386_dynarec.c +++ b/src/cpu/386_dynarec.c @@ -19,6 +19,7 @@ #include "x86_ops.h" #include "x86seg_common.h" #include "x86seg.h" +#include "x87_sf.h" #include "x87.h" #include <86box/io.h> #include <86box/mem.h> diff --git a/src/cpu/386_dynarec_ops.c b/src/cpu/386_dynarec_ops.c index 066b00dd6..c31b725b2 100644 --- a/src/cpu/386_dynarec_ops.c +++ b/src/cpu/386_dynarec_ops.c @@ -15,6 +15,7 @@ #include "x86_ops.h" #include "x86seg_common.h" #include "x86seg.h" +#include "x87_sf.h" #include "x87.h" #include "x86_flags.h" #include <86box/io.h> diff --git a/src/cpu/808x.c b/src/cpu/808x.c index 5b411dd66..6705563c0 100644 --- a/src/cpu/808x.c +++ b/src/cpu/808x.c @@ -785,6 +785,7 @@ seteaq(uint64_t val) complicates compiling. */ #define FPU_8087 #define tempc tempc_fpu +#include "x87_sf.h" #include "x87.h" #include "x87_ops.h" #undef tempc diff --git a/src/cpu/CMakeLists.txt b/src/cpu/CMakeLists.txt index fc5ba975f..a3677767d 100644 --- a/src/cpu/CMakeLists.txt +++ b/src/cpu/CMakeLists.txt @@ -23,12 +23,15 @@ endif() if(CYRIX_6X86) target_compile_definitions(cpu PRIVATE USE_CYRIX_6X86) + + add_library(ct686 OBJECT codegen_timing_686.c) + target_link_libraries(86Box ct686) endif() if(DYNAREC) target_sources(cpu PRIVATE 386_dynarec_ops.c) - add_library(cgt OBJECT codegen_timing_486.c codegen_timing_686.c + add_library(cgt OBJECT codegen_timing_486.c codegen_timing_common.c codegen_timing_k6.c codegen_timing_pentium.c codegen_timing_p6.c codegen_timing_winchip.c codegen_timing_winchip2.c) diff --git a/src/cpu/codegen_timing_486.c b/src/cpu/codegen_timing_486.c index e862b123e..548a9ec28 100644 --- a/src/cpu/codegen_timing_486.c +++ b/src/cpu/codegen_timing_486.c @@ -9,6 +9,7 @@ #include "x86.h" #include "x86_ops.h" +#include "x87_sf.h" #include "x87.h" #include "codegen.h" #include "codegen_ops.h" diff --git a/src/cpu/codegen_timing_686.c b/src/cpu/codegen_timing_686.c index a6800c5b2..6ea5ac543 100644 --- a/src/cpu/codegen_timing_686.c +++ b/src/cpu/codegen_timing_686.c @@ -19,6 +19,7 @@ #include "x86.h" #include "x86_ops.h" +#include "x87_sf.h" #include "x87.h" #include "codegen.h" #include "codegen_timing_common.h" diff --git a/src/cpu/codegen_timing_k6.c b/src/cpu/codegen_timing_k6.c index 4a9f23cd8..6a2871884 100644 --- a/src/cpu/codegen_timing_k6.c +++ b/src/cpu/codegen_timing_k6.c @@ -12,6 +12,7 @@ #include "x86.h" #include "x86_ops.h" #include "x86seg_common.h" +#include "x87_sf.h" #include "x87.h" #include "386_common.h" #include "codegen.h" diff --git a/src/cpu/codegen_timing_p6.c b/src/cpu/codegen_timing_p6.c index 2c087ae86..25c098ca4 100644 --- a/src/cpu/codegen_timing_p6.c +++ b/src/cpu/codegen_timing_p6.c @@ -13,6 +13,7 @@ #include "x86.h" #include "x86_ops.h" #include "x86seg_common.h" +#include "x87_sf.h" #include "x87.h" #include "386_common.h" #include "codegen.h" diff --git a/src/cpu/codegen_timing_pentium.c b/src/cpu/codegen_timing_pentium.c index 3951acc94..af344307f 100644 --- a/src/cpu/codegen_timing_pentium.c +++ b/src/cpu/codegen_timing_pentium.c @@ -21,6 +21,7 @@ #include "x86.h" #include "x86_ops.h" +#include "x87_sf.h" #include "x87.h" #include "codegen.h" #include "codegen_ops.h" diff --git a/src/cpu/codegen_timing_winchip.c b/src/cpu/codegen_timing_winchip.c index 11dd912b4..76ea8b954 100644 --- a/src/cpu/codegen_timing_winchip.c +++ b/src/cpu/codegen_timing_winchip.c @@ -9,6 +9,7 @@ #include "x86.h" #include "x86_ops.h" +#include "x87_sf.h" #include "x87.h" #include "codegen.h" #include "codegen_ops.h" diff --git a/src/cpu/codegen_timing_winchip2.c b/src/cpu/codegen_timing_winchip2.c index d4e32611e..ea206f068 100644 --- a/src/cpu/codegen_timing_winchip2.c +++ b/src/cpu/codegen_timing_winchip2.c @@ -18,6 +18,7 @@ #include "x86.h" #include "x86_ops.h" +#include "x87_sf.h" #include "x87.h" #include "codegen.h" #include "codegen_ops.h" diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c index b812a24f9..e1e0e913d 100644 --- a/src/cpu/cpu.c +++ b/src/cpu/cpu.c @@ -29,6 +29,7 @@ #define HAVE_STDARG_H #include <86box/86box.h> #include "cpu.h" +#include "x87_sf.h" #include <86box/device.h> #include <86box/machine.h> #include <86box/io.h> diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index ae5b4692a..9b154cd0d 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -21,8 +21,6 @@ #ifndef EMU_CPU_H #define EMU_CPU_H -#include "softfloat3e/softfloat.h" - enum { FPU_NONE, FPU_8087, @@ -406,22 +404,6 @@ typedef struct { uint32_t _smbase; } cpu_state_t; -typedef struct { - uint16_t cwd; - uint16_t swd; - uint16_t tag; - uint16_t foo; - uint32_t fip; - uint32_t fdp; - uint16_t fcs; - uint16_t fds; - floatx80 st_space[8]; - unsigned char tos; - unsigned char align1; - unsigned char align2; - unsigned char align3; -} fpu_state_t; - #define in_smm cpu_state._in_smm #define smi_line cpu_state._smi_line @@ -502,7 +484,6 @@ COMPILE_TIME_ASSERT(sizeof(cpu_state_t) <= 128) /* Global variables. */ extern cpu_state_t cpu_state; -extern fpu_state_t fpu_state; extern const cpu_family_t cpu_families[]; extern cpu_family_t *cpu_f; diff --git a/src/cpu/x86_ops_mmx.c b/src/cpu/x86_ops_mmx.c index 55fc987c2..2737ac8fa 100644 --- a/src/cpu/x86_ops_mmx.c +++ b/src/cpu/x86_ops_mmx.c @@ -13,6 +13,7 @@ #include "cpu.h" #include <86box/timer.h> #include "x86.h" +#include "x87_sf.h" #include "x87.h" #include <86box/nmi.h> #include <86box/mem.h> diff --git a/src/cpu/x87.c b/src/cpu/x87.c index 980431f15..2aafd44e6 100644 --- a/src/cpu/x87.c +++ b/src/cpu/x87.c @@ -14,6 +14,7 @@ #include "x86_flags.h" #include "x86_ops.h" #include "x86seg_common.h" +#include "x87_sf.h" #include "x87.h" #include "386_common.h" #include "softfloat3e/config.h" diff --git a/src/cpu/x87_sf.h b/src/cpu/x87_sf.h new file mode 100644 index 000000000..0388442bd --- /dev/null +++ b/src/cpu/x87_sf.h @@ -0,0 +1,40 @@ +/* + * 86Box A hypervisor and IBM PC system emulator that specializes in + * running old operating systems and software designed for IBM + * PC systems and compatibles from 1981 through fairly recent + * system designs based on the PCI bus. + * + * This file is part of the 86Box distribution. + * + * CPU type handler. + * + * + * + * Authors: Miran Grca, + * + * Copyright 2016-2024 Miran Grca. + */ +#ifndef EMU_X87_SF_H +#define EMU_X87_SF_H + +#include "softfloat3e/softfloat.h" + +typedef struct { + uint16_t cwd; + uint16_t swd; + uint16_t tag; + uint16_t foo; + uint32_t fip; + uint32_t fdp; + uint16_t fcs; + uint16_t fds; + floatx80 st_space[8]; + unsigned char tos; + unsigned char align1; + unsigned char align2; + unsigned char align3; +} fpu_state_t; + +extern fpu_state_t fpu_state; + +#endif /*EMU_X87_SF_H*/