diff --git a/src/cdrom/cdrom.c b/src/cdrom/cdrom.c index 6991013..0ac9ac8 100644 --- a/src/cdrom/cdrom.c +++ b/src/cdrom/cdrom.c @@ -706,7 +706,7 @@ uint32_t cdrom_mode_sense(uint8_t id, uint8_t *buf, uint32_t pos, uint8_t type, void cdrom_update_request_length(uint8_t id, int len, int block_len) { - uint32_t bt; + int bt; cdrom[id].max_transfer_len = cdrom[id].request_length; /* For media access commands, make sure the requested DRQ length matches the block length. */ @@ -1088,7 +1088,7 @@ void cdrom_update_cdb(uint8_t *cdb, int lba_pos, int number_of_blocks) int cdrom_read_data(uint8_t id, int msf, int type, int flags, uint32_t *len) { int ret = 0; - int cdsize = 0; + uint32_t cdsize = 0; int i = 0; int temp_len = 0; @@ -1516,7 +1516,7 @@ void cdrom_set_buf_len(uint8_t id, int32_t *BufLen, uint32_t *src_len) if (*BufLen == -1) *BufLen = *src_len; else { - *BufLen = MIN(*src_len, *BufLen); + *BufLen = MIN((int)*src_len, *BufLen); *src_len = *BufLen; } cdrom_log("CD-ROM %i: Actual transfer length: %i\n", id, *BufLen); @@ -2363,7 +2363,7 @@ cdrom_readtoc_fallback: if (*BufLen == -1) *BufLen = len; else { - *BufLen = MIN(len, *BufLen); + *BufLen = MIN((int)len, *BufLen); len = *BufLen; } } @@ -3040,7 +3040,7 @@ void cdrom_write(uint8_t channel, uint32_t val, int length) } return; } else if (cdrom[id].packet_status == CDROM_PHASE_IDLE) { - if (cdrom[id].pos >= cdrom[id].cdb_len) { + if (cdrom[id].pos >= (uint32_t)cdrom[id].cdb_len) { cdrom[id].pos=0; cdrom[id].status = BUSY_STAT; cdrom[id].packet_status = CDROM_PHASE_COMMAND; diff --git a/src/cdrom/cdrom_dosbox.cpp b/src/cdrom/cdrom_dosbox.cpp index 9144b1c..44c090f 100644 --- a/src/cdrom/cdrom_dosbox.cpp +++ b/src/cdrom/cdrom_dosbox.cpp @@ -8,7 +8,7 @@ * * CD-ROM image file handling module. * - * Version: @(#)cdrom_dosbox.cpp 1.0.2 2018/03/07 + * Version: @(#)cdrom_dosbox.cpp 1.0.3 2018/03/09 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -87,7 +87,7 @@ CDROM_Interface_Image::BinaryFile::~BinaryFile() memset(fn, 0, sizeof(fn)); } -bool CDROM_Interface_Image::BinaryFile::read(Bit8u *buffer, uint64_t seek, uint64_t count) +bool CDROM_Interface_Image::BinaryFile::read(Bit8u *buffer, uint64_t seek, size_t count) { file = fopen64(fn, "rb"); if (file == NULL) return 0; @@ -218,7 +218,7 @@ int CDROM_Interface_Image::GetTrack(unsigned int sector) bool CDROM_Interface_Image::ReadSector(Bit8u *buffer, bool raw, unsigned long sector) { - uint64_t length; + size_t length; int track = GetTrack(sector) - 1; if (track < 0) return false; diff --git a/src/cdrom/cdrom_dosbox.h b/src/cdrom/cdrom_dosbox.h index ea4b69e..1c0f606 100644 --- a/src/cdrom/cdrom_dosbox.h +++ b/src/cdrom/cdrom_dosbox.h @@ -8,7 +8,7 @@ * * Definitions for the CD-ROM image file handling module. * - * Version: @(#)cdrom_dosbox.h 1.0.1 2018/02/14 + * Version: @(#)cdrom_dosbox.h 1.0.2 2018/03/09 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -69,12 +69,12 @@ typedef size_t PhysPt; #define CD_FPS 75 #define FRAMES_TO_MSF(f, M,S,F) { \ - int value = f; \ - *(F) = value%CD_FPS; \ + uint64_t value = f; \ + *(F) = (value%CD_FPS) & 0xff; \ value /= CD_FPS; \ - *(S) = value%60; \ + *(S) = (value%60) & 0xff; \ value /= 60; \ - *(M) = value; \ + *(M) = value & 0xff; \ } #define MSF_TO_FRAMES(M, S, F) ((M)*60*CD_FPS+(S)*CD_FPS+(F)) @@ -119,7 +119,7 @@ class CDROM_Interface_Image : public CDROM_Interface private: class TrackFile { public: - virtual bool read(Bit8u *buffer, uint64_t seek, uint64_t count) = 0; + virtual bool read(Bit8u *buffer, uint64_t seek, size_t count) = 0; virtual uint64_t getLength() = 0; virtual ~TrackFile() { }; }; @@ -128,7 +128,7 @@ private: public: BinaryFile(const char *filename, bool &error); ~BinaryFile(); - bool read(Bit8u *buffer, uint64_t seek, uint64_t count); + bool read(Bit8u *buffer, uint64_t seek, size_t count); uint64_t getLength(); private: BinaryFile(); @@ -144,7 +144,7 @@ private: uint64_t start; uint64_t length; uint64_t skip; - uint64_t sectorSize; + int sectorSize; bool mode2; TrackFile *file; }; diff --git a/src/cpu/386.c b/src/cpu/386.c index f2a9b1f..771757b 100644 --- a/src/cpu/386.c +++ b/src/cpu/386.c @@ -8,7 +8,7 @@ * * Implementation of the CPU. * - * Version: @(#)386.c 1.0.1 2018/02/14 + * Version: @(#)386.c 1.0.2 2018/03/09 * * Authors: Sarah Walker, * Miran Grca, @@ -263,14 +263,14 @@ void exec386(int cycs) uint8_t temp; uint32_t addr; int tempi; - int cycdiff; + int64_t cycdiff; int oldcyc; cycles+=cycs; /* output=3; */ while (cycles>0) { - int cycle_period = (timer_count >> TIMER_SHIFT) + 1; + int64_t cycle_period = (timer_count >> TIMER_SHIFT) + 1; x86_was_reset = 0; cycdiff=0; diff --git a/src/cpu/386_common.h b/src/cpu/386_common.h index 82d5125..1343057 100644 --- a/src/cpu/386_common.h +++ b/src/cpu/386_common.h @@ -8,7 +8,7 @@ * * Common 386 CPU code. * - * Version: @(#)386_common.h 1.0.1 2018/02/14 + * Version: @(#)386_common.h 1.0.2 2018/03/09 * * Authors: Sarah Walker, * Miran Grca, @@ -281,4 +281,4 @@ static __inline void seteaq(uint64_t v) #define rmdat rmdat32 #define fetchdat rmdat32 -void x86_int(int num); +void x86_int(uint32_t num); diff --git a/src/cpu/386_dynarec.c b/src/cpu/386_dynarec.c index aa2d40d..42b73b5 100644 --- a/src/cpu/386_dynarec.c +++ b/src/cpu/386_dynarec.c @@ -8,7 +8,7 @@ * * Implementation of the CPU's dynamic recompiler. * - * Version: @(#)386_dynarec.c 1.0.1 2018/02/14 + * Version: @(#)386_dynarec.c 1.0.2 2018/03/09 * * Authors: Sarah Walker, * Miran Grca, @@ -226,7 +226,7 @@ static __inline void fetch_ea_16_long(uint32_t rmdat) #include "x86_flags.h" -void x86_int(int num) +void x86_int(uint32_t num) { uint32_t addr; flags_rebuild(); @@ -279,7 +279,7 @@ void x86_int(int num) CPU_BLOCK_END(); } -void x86_int_sw(int num) +void x86_int_sw(uint32_t num) { uint32_t addr; flags_rebuild(); @@ -446,7 +446,7 @@ static void prefetch_flush() #define PREFETCH_FLUSH() prefetch_flush() -int checkio(int port) +int checkio(uint32_t port) { uint16_t t; uint8_t d; diff --git a/src/cpu/808x.c b/src/cpu/808x.c index d1bf5e8..e9cc36d 100644 --- a/src/cpu/808x.c +++ b/src/cpu/808x.c @@ -18,7 +18,7 @@ * 2 clocks - fetch opcode 1 2 clocks - execute * 2 clocks - fetch opcode 2 etc * - * Version: @(#)808x.c 1.0.1 2018/02/14 + * Version: @(#)808x.c 1.0.2 2018/03/09 * * Authors: Sarah Walker, * Miran Grca, @@ -1230,7 +1230,7 @@ void execx86(int cycs) break; case 0x14: /*ADC AL,#8*/ tempw=FETCH(); - setadc8(AL,tempw); + setadc8(AL,tempw & 0xff); AL+=tempw+tempc; cycles-=4; break; @@ -2968,7 +2968,7 @@ void execx86(int cycs) if (temp) { tempw2=tempw%temp; - AH=tempw2; + AH=tempw2 & 0xff; tempw/=temp; AL=tempw&0xFF; } diff --git a/src/cpu/codegen_timing_pentium.c b/src/cpu/codegen_timing_pentium.c index ad1f48c..098beca 100644 --- a/src/cpu/codegen_timing_pentium.c +++ b/src/cpu/codegen_timing_pentium.c @@ -20,7 +20,7 @@ * - PMMX decode queue * - MMX latencies * - * Version: @(#)codegen_timing_pentium.c 1.0.1 2018/02/14 + * Version: @(#)codegen_timing_pentium.c 1.0.2 2018/03/09 * * Authors: Sarah Walker, * Miran Grca, @@ -859,7 +859,7 @@ static inline int COUNT(uint64_t timings, uint64_t deps, int op_32) fatal("Illegal COUNT %016llx\n", timings); - return timings; + return timings & 0xffffffff; } static int codegen_fpu_latencies(uint64_t deps, int reg) diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index 17910f0..54c88f7 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -8,7 +8,7 @@ * * CPU type handler. * - * Version: @(#)cpu.h 1.0.3 2018/03/05 + * Version: @(#)cpu.h 1.0.4 2018/03/09 * * Authors: Sarah Walker, * leilei, @@ -447,7 +447,7 @@ extern void cpu_CPUID(void); extern void cpu_RDMSR(void); extern void cpu_WRMSR(void); -extern int checkio(int port); +extern int checkio(uint32_t port); extern void codegen_block_end(void); extern void codegen_reset(void); extern void cpu_set_edx(void); @@ -467,7 +467,7 @@ extern void resetx86(void); extern void refreshread(void); extern void resetreadlookup(void); extern void softresetx86(void); -extern void x86_int_sw(int num); +extern void x86_int_sw(uint32_t num); extern int x86_int_sw_rm(int num); extern void x86gpf(char *s, uint16_t error); extern void x86np(char *s, uint16_t error); diff --git a/src/cpu/x86seg.c b/src/cpu/x86seg.c index f530413..09e7b53 100644 --- a/src/cpu/x86seg.c +++ b/src/cpu/x86seg.c @@ -8,7 +8,7 @@ * * x86 CPU segment emulation. * - * Version: @(#)x86seg.c 1.0.1 2018/02/14 + * Version: @(#)x86seg.c 1.0.2 2018/03/09 * * Authors: Sarah Walker, * Miran Grca, @@ -282,14 +282,14 @@ static void check_seg_valid(x86seg *s) if (s->seg & 4) { - if ((s->seg & ~7) >= ldt.limit) + if ((s->seg & ~7U) >= ldt.limit) { valid = 0; } } else { - if ((s->seg & ~7) >= gdt.limit) + if ((s->seg & ~7U) >= gdt.limit) { valid = 0; } diff --git a/src/cpu/x87_ops.h b/src/cpu/x87_ops.h index 870b3ac..a6a48c0 100644 --- a/src/cpu/x87_ops.h +++ b/src/cpu/x87_ops.h @@ -8,7 +8,7 @@ * * x87 FPU instructions core. * - * Version: @(#)x87_ops.h 1.0.2 2018/02/21 + * Version: @(#)x87_ops.h 1.0.4 2018/03/09 * * Authors: Sarah Walker, * leilei, @@ -214,7 +214,7 @@ static __inline void x87_st80(double d) test.begin = (((int16_t)sign80)<<15)| (int16_t)exp80final; test.eind.ll = mant80final; - writememl(easeg,cpu_state.eaaddr,test.eind.ll); + writememl(easeg,cpu_state.eaaddr,test.eind.ll & 0xffffffff); writememl(easeg,cpu_state.eaaddr+4,test.eind.ll>>32); writememw(easeg,cpu_state.eaaddr+8,test.begin); } @@ -266,7 +266,7 @@ static __inline void x87_stmmx(MMX_REG r) static __inline uint16_t x87_compare(double a, double b) { #if defined i386 || defined __i386 || defined __i386__ || defined _X86_ || defined _WIN32 - uint32_t out; + uint32_t result; if (!is386) { @@ -282,7 +282,7 @@ static __inline uint16_t x87_compare(double a, double b) "fclex\n" "fcompp\n" "fnstsw %0\n" - : "=m" (out) + : "=m" (result) : "m" (a), "m" (a) ); #else @@ -293,11 +293,11 @@ static __inline uint16_t x87_compare(double a, double b) fld a fclex fcompp - fnstsw out + fnstsw result } #endif - return out & (C0|C2|C3); + return result & (C0|C2|C3); } } @@ -312,7 +312,7 @@ static __inline uint16_t x87_compare(double a, double b) "fclex\n" "fcompp\n" "fnstsw %0\n" - : "=m" (out) + : "=m" (result) : "m" (a), "m" (b) ); #else @@ -323,11 +323,11 @@ static __inline uint16_t x87_compare(double a, double b) fld a fclex fcompp - fnstsw out + fnstsw result } #endif - return out & (C0|C2|C3); + return result & (C0|C2|C3); #else /* Generic C version is known to give incorrect results in some * situations, eg comparison of infinity (Unreal) */ @@ -337,31 +337,31 @@ static __inline uint16_t x87_compare(double a, double b) { if (((a == INFINITY) || (a == -INFINITY)) && ((b == INFINITY) || (b == -INFINITY))) { - out |= C3; - return out; + result |= C3; + return result; } if (a == b) - out |= C3; + result |= C3; else if (a < b) - out |= C0; + result |= C0; } else { if (a == b) - out |= C3; + result |= C3; else if (a < b) - out |= C0; + result |= C0; } - return out; + return result; #endif } static __inline uint16_t x87_ucompare(double a, double b) { #if defined i386 || defined __i386 || defined __i386__ || defined _X86_ || defined _WIN32 - uint32_t out; + uint32_t result; #ifndef _MSC_VER /* Memory barrier, to force GCC to write to the input parameters @@ -374,7 +374,7 @@ static __inline uint16_t x87_ucompare(double a, double b) "fclex\n" "fucompp\n" "fnstsw %0\n" - : "=m" (out) + : "=m" (result) : "m" (a), "m" (b) ); #else @@ -385,22 +385,22 @@ static __inline uint16_t x87_ucompare(double a, double b) fld a fclex fcompp - fnstsw out + fnstsw result } #endif - return out & (C0|C2|C3); + return result & (C0|C2|C3); #else /* Generic C version is known to give incorrect results in some * situations, eg comparison of infinity (Unreal) */ - uint32_t out = 0; + uint32_t result = 0; if (a == b) - out |= C3; + result |= C3; else if (a < b) - out |= C0; + result |= C0; - return out; + return result; #endif }