mirror of https://github.com/mgba-emu/mgba.git
All: MSVS2015 fixes (via zeromus)
This commit is contained in:
parent
bbcf40e0e7
commit
12505766e1
|
@ -91,7 +91,7 @@ struct ARMDebugger {
|
||||||
bool (*setSoftwareBreakpoint)(struct ARMDebugger*, uint32_t address, enum ExecutionMode mode, uint32_t* opcode);
|
bool (*setSoftwareBreakpoint)(struct ARMDebugger*, uint32_t address, enum ExecutionMode mode, uint32_t* opcode);
|
||||||
bool (*clearSoftwareBreakpoint)(struct ARMDebugger*, uint32_t address, enum ExecutionMode mode, uint32_t opcode);
|
bool (*clearSoftwareBreakpoint)(struct ARMDebugger*, uint32_t address, enum ExecutionMode mode, uint32_t opcode);
|
||||||
|
|
||||||
__attribute__((format (printf, 3, 4)))
|
ATTRIBUTE_FORMAT(printf, 3, 4)
|
||||||
void (*log)(struct ARMDebugger*, enum DebuggerLogLevel, const char* format, ...);
|
void (*log)(struct ARMDebugger*, enum DebuggerLogLevel, const char* format, ...);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -216,10 +216,10 @@ void GBAGetGameTitle(struct GBA* gba, char* out);
|
||||||
void GBAFrameStarted(struct GBA* gba);
|
void GBAFrameStarted(struct GBA* gba);
|
||||||
void GBAFrameEnded(struct GBA* gba);
|
void GBAFrameEnded(struct GBA* gba);
|
||||||
|
|
||||||
__attribute__((format (printf, 3, 4)))
|
ATTRIBUTE_FORMAT(printf,3,4)
|
||||||
void GBALog(struct GBA* gba, enum GBALogLevel level, const char* format, ...);
|
void GBALog(struct GBA* gba, enum GBALogLevel level, const char* format, ...);
|
||||||
|
|
||||||
__attribute__((format (printf, 3, 4)))
|
ATTRIBUTE_FORMAT(printf, 3, 4)
|
||||||
void GBADebuggerLogShim(struct ARMDebugger* debugger, enum DebuggerLogLevel level, const char* format, ...);
|
void GBADebuggerLogShim(struct ARMDebugger* debugger, enum DebuggerLogLevel level, const char* format, ...);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -74,6 +74,9 @@ DECL_BITS(RTCCommandData, Magic, 0, 4);
|
||||||
DECL_BITS(RTCCommandData, Command, 4, 3);
|
DECL_BITS(RTCCommandData, Command, 4, 3);
|
||||||
DECL_BIT(RTCCommandData, Reading, 7);
|
DECL_BIT(RTCCommandData, Reading, 7);
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma pack(push,1)
|
||||||
|
#endif
|
||||||
struct GBARTC {
|
struct GBARTC {
|
||||||
int bytesRemaining;
|
int bytesRemaining;
|
||||||
int transferStep;
|
int transferStep;
|
||||||
|
@ -83,7 +86,10 @@ struct GBARTC {
|
||||||
RTCCommandData command;
|
RTCCommandData command;
|
||||||
RTCControl control;
|
RTCControl control;
|
||||||
uint8_t time[7];
|
uint8_t time[7];
|
||||||
} __attribute__((packed));
|
} ATTRIBUTE_PACKED;
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#pragma pack(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
struct GBARumble {
|
struct GBARumble {
|
||||||
void (*setRumble)(struct GBARumble*, int enable);
|
void (*setRumble)(struct GBARumble*, int enable);
|
||||||
|
|
|
@ -118,7 +118,7 @@ static THREAD_ENTRY _GBAThreadRun(void* context) {
|
||||||
struct Patch patch;
|
struct Patch patch;
|
||||||
struct GBACheatDevice cheatDevice;
|
struct GBACheatDevice cheatDevice;
|
||||||
struct GBAThread* threadContext = context;
|
struct GBAThread* threadContext = context;
|
||||||
struct ARMComponent* components[GBA_COMPONENT_MAX] = {};
|
struct ARMComponent* components[GBA_COMPONENT_MAX] = {0};
|
||||||
struct GBARRContext* movie = 0;
|
struct GBARRContext* movie = 0;
|
||||||
int numComponents = GBA_COMPONENT_MAX;
|
int numComponents = GBA_COMPONENT_MAX;
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,24 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#ifdef _WIN64
|
||||||
|
typedef int64_t off_t;
|
||||||
|
typedef int64_t ssize_t;
|
||||||
|
#else
|
||||||
|
typedef int32_t off_t;
|
||||||
|
typedef int32_t ssize_t;
|
||||||
|
#endif
|
||||||
|
#define restrict __restrict
|
||||||
|
#define SSIZE_MAX ((ssize_t) SIZE_MAX)
|
||||||
|
#define strcasecmp _stricmp
|
||||||
|
#define strncasecmp _strnicmp
|
||||||
|
#define ftruncate _chsize
|
||||||
|
#else
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
|
||||||
|
@ -67,29 +83,44 @@
|
||||||
#define CLEAR_BITS(SRC, START, END) ((SRC) & ~MAKE_MASK(START, END))
|
#define CLEAR_BITS(SRC, START, END) ((SRC) & ~MAKE_MASK(START, END))
|
||||||
#define FILL_BITS(SRC, START, END) ((SRC) | MAKE_MASK(START, END))
|
#define FILL_BITS(SRC, START, END) ((SRC) | MAKE_MASK(START, END))
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define ATTRIBUTE_UNUSED
|
||||||
|
#define ATTRIBUTE_FORMAT(X, Y, Z)
|
||||||
|
#define ATTRIBUTE_PACKED
|
||||||
|
#else
|
||||||
|
#define ATTRIBUTE_UNUSED __attribute__((unused))
|
||||||
|
#define ATTRIBUTE_FORMAT(X, Y, Z) __attribute__((format(X, Y, Z)))
|
||||||
|
#define ATTRIBUTE_PACKED __attribute__((packed))
|
||||||
|
#endif
|
||||||
|
|
||||||
#define DECL_BITFIELD(NAME, TYPE) typedef TYPE NAME
|
#define DECL_BITFIELD(NAME, TYPE) typedef TYPE NAME
|
||||||
|
|
||||||
#define DECL_BITS(TYPE, FIELD, START, SIZE) \
|
#define DECL_BITS(TYPE, FIELD, START, SIZE) \
|
||||||
__attribute__((unused)) static inline TYPE TYPE ## Is ## FIELD (TYPE src) { \
|
ATTRIBUTE_UNUSED static inline TYPE TYPE ## Is ## FIELD (TYPE src) { \
|
||||||
return CHECK_BITS(src, (START), (START) + (SIZE)); \
|
return CHECK_BITS(src, (START), (START) + (SIZE)); \
|
||||||
} \
|
} \
|
||||||
__attribute__((unused)) static inline TYPE TYPE ## Get ## FIELD (TYPE src) { \
|
ATTRIBUTE_UNUSED static inline TYPE TYPE ## Get ## FIELD (TYPE src) { \
|
||||||
return EXT_BITS(src, (START), (START) + (SIZE)); \
|
return EXT_BITS(src, (START), (START) + (SIZE)); \
|
||||||
} \
|
} \
|
||||||
__attribute__((unused)) static inline TYPE TYPE ## Clear ## FIELD (TYPE src) { \
|
ATTRIBUTE_UNUSED static inline TYPE TYPE ## Clear ## FIELD (TYPE src) { \
|
||||||
return CLEAR_BITS(src, (START), (START) + (SIZE)); \
|
return CLEAR_BITS(src, (START), (START) + (SIZE)); \
|
||||||
} \
|
} \
|
||||||
__attribute__((unused)) static inline TYPE TYPE ## Fill ## FIELD (TYPE src) { \
|
ATTRIBUTE_UNUSED static inline TYPE TYPE ## Fill ## FIELD (TYPE src) { \
|
||||||
return FILL_BITS(src, (START), (START) + (SIZE)); \
|
return FILL_BITS(src, (START), (START) + (SIZE)); \
|
||||||
} \
|
} \
|
||||||
__attribute__((unused)) static inline TYPE TYPE ## Set ## FIELD (TYPE src, TYPE bits) { \
|
ATTRIBUTE_UNUSED static inline TYPE TYPE ## Set ## FIELD (TYPE src, TYPE bits) { \
|
||||||
return INS_BITS(src, (START), (START) + (SIZE), bits); \
|
return INS_BITS(src, (START), (START) + (SIZE), bits); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DECL_BIT(TYPE, FIELD, BIT) DECL_BITS(TYPE, FIELD, BIT, 1)
|
#define DECL_BIT(TYPE, FIELD, BIT) DECL_BITS(TYPE, FIELD, BIT, 1)
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
#define LIKELY(X) __builtin_expect(!!(X), 1)
|
#define LIKELY(X) __builtin_expect(!!(X), 1)
|
||||||
#define UNLIKELY(X) __builtin_expect(!!(X), 0)
|
#define UNLIKELY(X) __builtin_expect(!!(X), 0)
|
||||||
|
#else
|
||||||
|
#define LIKELY(X) (!!(X))
|
||||||
|
#define UNLIKELY(X) (!!(X))
|
||||||
|
#endif
|
||||||
|
|
||||||
#define ROR(I, ROTATE) ((((uint32_t) (I)) >> ROTATE) | ((uint32_t) (I) << ((-ROTATE) & 31)))
|
#define ROR(I, ROTATE) ((((uint32_t) (I)) >> ROTATE) | ((uint32_t) (I) << ((-ROTATE) & 31)))
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ ssize_t _vfmRead(struct VFile* vf, void* buffer, size_t size) {
|
||||||
size = vfm->size - vfm->offset;
|
size = vfm->size - vfm->offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(buffer, vfm->mem + vfm->offset, size);
|
memcpy(buffer, (void*) ((uintptr_t) vfm->mem + vfm->offset), size);
|
||||||
vfm->offset += size;
|
vfm->offset += size;
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ ssize_t _vfmWrite(struct VFile* vf, const void* buffer, size_t size) {
|
||||||
size = vfm->size - vfm->offset;
|
size = vfm->size - vfm->offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(vfm->mem + vfm->offset, buffer, size);
|
memcpy((void*) ((uintptr_t) vfm->mem + vfm->offset), buffer, size);
|
||||||
vfm->offset += size;
|
vfm->offset += size;
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue