diff --git a/.github/workflows/c-cpp.yml b/.github/workflows/c-cpp.yml index 277acdaee..4734f1bc4 100644 --- a/.github/workflows/c-cpp.yml +++ b/.github/workflows/c-cpp.yml @@ -14,6 +14,7 @@ on: jobs: build: + name: Build (DEV_BUILD=${{ matrix.dev-build }}, NEW_DYNAREC=${{ matrix.new-dynarec }}, X64=${{ matrix.target-arch.x64 }}) runs-on: windows-latest @@ -25,14 +26,29 @@ jobs: matrix: dev-build: ['y', 'n'] new-dynarec: ['y', 'n'] + target-arch: + - x64: 'n' + msystem: MINGW32 + prefix: mingw-w64-i686 + - x64: 'y' + msystem: MINGW64 + prefix: mingw-w64-x86_64 steps: - uses: msys2/setup-msys2@v2 with: update: true - msystem: MINGW32 - install: 'make mingw-w64-i686-toolchain mingw-w64-i686-openal mingw-w64-i686-freetype mingw-w64-i686-SDL2 mingw-w64-i686-zlib mingw-w64-i686-libpng mingw-w64-i686-libvncserver' + msystem: ${{ matrix.target-arch.msystem }} + install: >- + make + ${{ matrix.target-arch.prefix }}-toolchain + ${{ matrix.target-arch.prefix }}-openal + ${{ matrix.target-arch.prefix }}-freetype + ${{ matrix.target-arch.prefix }}-SDL2 + ${{ matrix.target-arch.prefix }}-zlib + ${{ matrix.target-arch.prefix }}-libpng + ${{ matrix.target-arch.prefix }}-libvncserver - uses: actions/checkout@v2 - name: make - run: make -fwin/makefile.mingw -j DEV_BUILD=${{ matrix.dev-build }} NEW_DYNAREC=${{ matrix.new-dynarec }} VNC=n + run: make -fwin/makefile.mingw -j DEV_BUILD=${{ matrix.dev-build }} NEW_DYNAREC=${{ matrix.new-dynarec }} X64=${{ matrix.target-arch.x64 }} VNC=n working-directory: ./src diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index 73f9524ad..f21c4822f 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -240,35 +240,22 @@ typedef struct { uint64_t fcr2, fcr3; } msr_t; -typedef union { - uint32_t l; - uint16_t w; -} cr0_t; - - typedef struct { x86reg regs[8]; uint8_t tag[8]; - int8_t ssegs, ismmx, - abrt, pad; - - uint16_t npxs, npxc, flags, eflags, - old_npxc, new_npxc; - - uint16_t MM_w4[8]; - - int _cycles, - flags_op, TOP; - - uint32_t flags_res, - flags_op1, flags_op2, - pc, oldpc, eaaddr, op32; - - cr0_t CR0; - x86seg *ea_seg; + uint32_t eaaddr; + + int flags_op; + uint32_t flags_res, + flags_op1, flags_op2; + + uint32_t pc, + oldpc, op32; + + int TOP; union { struct { @@ -279,10 +266,21 @@ typedef struct { int32_t rm_mod_reg_data; } rm_data; + int8_t ssegs, ismmx, + abrt, pad; + + int _cycles; + + uint16_t npxs, npxc; + double ST[8]; + uint16_t MM_w4[8]; + MMX_REG MM[8]; + uint16_t old_npxc, new_npxc; + #ifdef USE_NEW_DYNAREC uint32_t old_fp_control, new_fp_control; #if defined i386 || defined __i386 || defined __i386__ || defined _X86_ || defined _M_IX86 @@ -295,6 +293,13 @@ typedef struct { x86seg seg_cs, seg_ds, seg_es, seg_ss, seg_fs, seg_gs; + + union { + uint32_t l; + uint16_t w; + } CR0; + + uint16_t flags, eflags; } cpu_state_t; /*The cpu_state.flags below must match in both cpu_cur_status and block->status for a block diff --git a/src/include/86box/vid_svga.h b/src/include/86box/vid_svga.h index 081f11465..5bfdf5e69 100644 --- a/src/include/86box/vid_svga.h +++ b/src/include/86box/vid_svga.h @@ -124,7 +124,7 @@ typedef struct svga_t int override; void *p; - uint8_t crtc[128], gdcreg[64], attrregs[32], seqregs[64], + uint8_t crtc[256], gdcreg[64], attrregs[32], seqregs[64], egapal[16], *vram, *changedvram;