Some fixes for compiling for WIN64 with MSVC.

- Added check in config.h whether or not Bochs is configured and compiled for
  the same target platform (WIN32 / WIN64).
- Fixed some warnings that occur in the MSVC WIN64 case.
This commit is contained in:
Volker Ruppert 2021-07-12 19:05:25 +00:00
parent 61f24a0727
commit e34d017f60
8 changed files with 27 additions and 16 deletions

View File

@ -128,7 +128,7 @@ static Bit64s bx_param_handler(bx_param_c *param, bool set, Bit64s val)
val = get_floppy_type_from_image(SIM->get_param_string("path", base)->getptr());
SIM->get_param_enum("type", base)->set(val);
} else if (!SIM->get_init_done() && (val != BX_FLOPPY_NONE)) {
device = get_floppy_devtype_from_type(val);
device = get_floppy_devtype_from_type((int)val);
SIM->get_param_enum("devtype", base)->set(device);
}
}
@ -2361,7 +2361,7 @@ int bx_split_option_list(const char *msg, const char *rawopt, char **argv, int m
strcpy(tmpstr, ptr);
ptr2 = tmpstr;
while (isspace(*ptr2)) ptr2++;
i = strlen(ptr2) - 1;
i = (int)strlen(ptr2) - 1;
while ((i >= 0) && isspace(ptr2[i])) {
ptr2[i] = 0;
i--;
@ -3029,7 +3029,7 @@ static int parse_line_formatted(const char *context, int num_params, char *param
&tm_time.tm_hour, &tm_time.tm_min, &tm_time.tm_sec, &year);
if ((n == 7) && (year >= 1980) && (strstr(months, mon) != NULL)) {
tm_time.tm_year = year - 1900;
tm_time.tm_mon = 12 - (strlen(strstr(months, mon)) / 4);
tm_time.tm_mon = 12 - ((int)strlen(strstr(months, mon)) / 4);
SIM->get_param_num(BXPN_CLOCK_TIME0)->set(mktime(&tm_time));
} else {
PARSE_ERR(("%s: time0 string format malformed.", context));

View File

@ -85,6 +85,15 @@
#define BX_SHOW_IPS 0
#define MSVC_TARGET 0
#if defined(_MSC_VER) && defined(MSVC_TARGET)
#if defined(_M_X64) && (MSVC_TARGET != 64)
#error Bochs not configured for MSVC WIN64
#elif !defined(_M_X64) && (MSVC_TARGET != 32)
#error Bochs not configured for MSVC WIN32
#endif
#endif
#if (BX_SHOW_IPS) && (defined(__MINGW32__) || defined(_MSC_VER))
#define SIGALRM 14
#endif

View File

@ -48,9 +48,11 @@ case "$target" in
case "$target" in
x86_64*)
MSVC_TARGET=64
AC_DEFINE(MSVC_TARGET, 64)
;;
*)
MSVC_TARGET=32
AC_DEFINE(MSVC_TARGET, 32)
;;
esac
;;

View File

@ -1503,7 +1503,7 @@ void bx_e1000_c::rx_frame(const void *buf, unsigned buf_size)
if (copy_size > BX_E1000_THIS s.rxbuf_size) {
copy_size = BX_E1000_THIS s.rxbuf_size;
}
DEV_MEM_WRITE_PHYSICAL_DMA(le64_to_cpu(desc.buffer_addr), copy_size,
DEV_MEM_WRITE_PHYSICAL_DMA(le64_to_cpu(desc.buffer_addr), (unsigned)copy_size,
(Bit8u *)buf + desc_offset + vlan_offset);
}
desc_offset += desc_size;

View File

@ -267,7 +267,7 @@ void bx_pci_ide_c::timer()
}
if (BX_PIDE_THIS s.bmdma[channel].cmd_rwcon) {
BX_DEBUG(("READ DMA to addr=0x%08x, size=0x%08x", prd.addr, size));
count = size - (BX_PIDE_THIS s.bmdma[channel].buffer_top - BX_PIDE_THIS s.bmdma[channel].buffer_idx);
count = (int)(size - (BX_PIDE_THIS s.bmdma[channel].buffer_top - BX_PIDE_THIS s.bmdma[channel].buffer_idx));
while (count > 0) {
sector_size = count;
if (DEV_hd_bmdma_read_sector(channel, BX_PIDE_THIS s.bmdma[channel].buffer_top, &sector_size)) {
@ -288,7 +288,7 @@ void bx_pci_ide_c::timer()
BX_DEBUG(("WRITE DMA from addr=0x%08x, size=0x%08x", prd.addr, size));
DEV_MEM_READ_PHYSICAL_DMA(prd.addr, size, BX_PIDE_THIS s.bmdma[channel].buffer_top);
BX_PIDE_THIS s.bmdma[channel].buffer_top += size;
count = BX_PIDE_THIS s.bmdma[channel].buffer_top - BX_PIDE_THIS s.bmdma[channel].buffer_idx;
count = (int)(BX_PIDE_THIS s.bmdma[channel].buffer_top - BX_PIDE_THIS s.bmdma[channel].buffer_idx);
while (count > 511) {
if (DEV_hd_bmdma_write_sector(channel, BX_PIDE_THIS s.bmdma[channel].buffer_idx)) {
BX_PIDE_THIS s.bmdma[channel].buffer_idx += 512;
@ -309,7 +309,7 @@ void bx_pci_ide_c::timer()
DEV_hd_bmdma_complete(channel);
} else {
// To avoid buffer overflow reset buffer pointers and copy data if necessary
count = BX_PIDE_THIS s.bmdma[channel].buffer_top - BX_PIDE_THIS s.bmdma[channel].buffer_idx;
count = (int)(BX_PIDE_THIS s.bmdma[channel].buffer_top - BX_PIDE_THIS s.bmdma[channel].buffer_idx);
if (count > 0) {
memmove(BX_PIDE_THIS s.bmdma[channel].buffer, BX_PIDE_THIS s.bmdma[channel].buffer_idx, count);
}

View File

@ -1551,7 +1551,7 @@ void bx_serial_c::rx_timer(void)
SOCKET socketid = BX_SER_THIS s[port].socket_id;
if (socketid >= 0) {
FD_SET(socketid, &fds);
if (select(socketid+1, &fds, NULL, NULL, &tval) == 1) {
if (select((int)(socketid+1), &fds, NULL, NULL, &tval) == 1) {
ssize_t bytes = (ssize_t)
::recv(socketid, (char*) &chbuf, 1, 0);
if (bytes > 0) {

View File

@ -282,7 +282,7 @@ void scsi_device_t::restore_requests(const char *path)
do {
ret = fgets(line, sizeof(line)-1, fp);
line[sizeof(line) - 1] = '\0';
int len = strlen(line);
size_t len = strlen(line);
if ((len > 0) && (line[len-1] < ' '))
line[len-1] = '\0';
i = 0;
@ -628,8 +628,8 @@ Bit32s scsi_device_t::scsi_send_command(Bit32u tag, Bit8u *buf, int lun, bool as
case 0x83:
{
// Device identification page, mandatory
int max_len = 255 - 8;
int id_len = strlen(DEVICE_NAME);
size_t max_len = 255 - 8;
size_t id_len = strlen(DEVICE_NAME);
if (id_len > max_len)
id_len = max_len;
@ -643,15 +643,15 @@ Bit32s scsi_device_t::scsi_send_command(Bit32u tag, Bit8u *buf, int lun, bool as
outbuf[r->buf_len++] = 0x83; // this page
outbuf[r->buf_len++] = 0x00;
outbuf[r->buf_len++] = 3 + id_len;
outbuf[r->buf_len++] = 3 + (Bit8u)id_len;
outbuf[r->buf_len++] = 0x2; // ASCII
outbuf[r->buf_len++] = 0; // not officially assigned
outbuf[r->buf_len++] = 0; // reserved
outbuf[r->buf_len++] = id_len; // length of data following
outbuf[r->buf_len++] = (Bit8u)id_len; // length of data following
memcpy(&outbuf[r->buf_len], DEVICE_NAME, id_len);
r->buf_len += id_len;
r->buf_len += (int)id_len;
}
break;
@ -769,7 +769,7 @@ Bit32s scsi_device_t::scsi_send_command(Bit32u tag, Bit8u *buf, int lun, bool as
p[21] = (16 * 176) & 0xff;
p += 22;
}
r->buf_len = p - outbuf;
r->buf_len = (int)(p - outbuf);
outbuf[0] = r->buf_len - 4;
if (r->buf_len > (int)len)
r->buf_len = len;

View File

@ -611,7 +611,7 @@ int usb_device_c::set_usb_string(Bit8u *buf, const char *str)
*q++ = str[i];
*q++ = 0;
}
return q - buf;
return (int)(q - buf);
}
#endif // BX_SUPPORT_PCI && BX_SUPPORT_PCIUSB