@@ -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;
|
||||
|
||||
@@ -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, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -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;
|
||||
|
||||
@@ -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, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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, <tommowalker@tommowalker.co.uk>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -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;
|
||||
|
||||
@@ -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, <tommowalker@tommowalker.co.uk>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -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);
|
||||
|
||||
@@ -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, <tommowalker@tommowalker.co.uk>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -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;
|
||||
|
||||
@@ -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, <tommowalker@tommowalker.co.uk>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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, <tommowalker@tommowalker.co.uk>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -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)
|
||||
|
||||
@@ -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, <tommowalker@tommowalker.co.uk>
|
||||
* 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);
|
||||
|
||||
@@ -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, <http://pcem-emulator.co.uk/>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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, <tommowalker@tommowalker.co.uk>
|
||||
* 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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user