Compile fixes for gcc 4.3.
Clean up some warnings.
Make sure floppy_dbt structure is aliagned to 1 byte boundary.
diff --git a/src/ata.c b/src/ata.c
index 9280f46..ecda021 100644
--- a/src/ata.c
+++ b/src/ata.c
@@ -39,7 +39,7 @@
for (;;) {
u8 status = inb(base+ATA_CB_STAT);
time++;
- u8 result;
+ u8 result = 0;
if (when_done == BSY)
result = status & ATA_CB_STAT_BSY;
else if (when_done == NOT_BSY)
@@ -50,8 +50,6 @@
result = !(status & ATA_CB_STAT_BSY) && !(status & ATA_CB_STAT_DRQ);
else if (when_done == NOT_BSY_RDY)
result = !(status & ATA_CB_STAT_BSY) && (status & ATA_CB_STAT_RDY);
- else if (when_done == TIMEOUT)
- result = 0;
if (result)
return status;
diff --git a/src/cdrom.c b/src/cdrom.c
index 24a9f1f..2921b44 100644
--- a/src/cdrom.c
+++ b/src/cdrom.c
@@ -209,7 +209,7 @@
regs->bl = media * 2;
regs->es = SEG_BIOS;
- regs->di = (u16)&diskette_param_table2;
+ regs->di = (u32)&diskette_param_table2;
disk_ret(regs, DISK_RET_SUCCESS);
}
diff --git a/src/floppy.c b/src/floppy.c
index fc5e43f..bb8cd27 100644
--- a/src/floppy.c
+++ b/src/floppy.c
@@ -669,7 +669,7 @@
/* set es & di to point to 11 byte diskette param table in ROM */
regs->es = SEG_BIOS;
- regs->di = (u16)&diskette_param_table2;
+ regs->di = (u32)&diskette_param_table2;
/* disk status not changed upon success */
}
diff --git a/src/floppy_dbt.c b/src/floppy_dbt.c
index 4c83f69..987568b 100644
--- a/src/floppy_dbt.c
+++ b/src/floppy_dbt.c
@@ -9,7 +9,7 @@
// Since no provisions are made for multiple drive types, most
// values in this table are ignored. I set parameters for 1.44M
// floppy here
-struct floppy_dbt_s diskette_param_table VISIBLE16 = {
+struct floppy_dbt_s diskette_param_table __attribute__((aligned (1))) VISIBLE16 = {
.specify1 = 0xAF,
.specify2 = 0x02, // head load time 0000001, DMA used
.shutoff_ticks = 0x25,
diff --git a/src/system.c b/src/system.c
index c01813d..1db679b 100644
--- a/src/system.c
+++ b/src/system.c
@@ -238,7 +238,7 @@
handle_15c0(struct bregs *regs)
{
regs->es = SEG_BIOS;
- regs->bx = (u16)&BIOS_CONFIG_TABLE;
+ regs->bx = (u32)&BIOS_CONFIG_TABLE;
set_code_success(regs);
}
diff --git a/src/util.h b/src/util.h
index e304a0b..10d1835 100644
--- a/src/util.h
+++ b/src/util.h
@@ -90,7 +90,7 @@
#ifdef MODE16
#define call16_int(nr, callregs) do { \
extern void irq_trampoline_ ##nr (); \
- __call16_int((callregs), (u16)&irq_trampoline_ ##nr ); \
+ __call16_int((callregs), (u32)&irq_trampoline_ ##nr ); \
} while (0)
#else
#include "../out/rom16.offset.auto.h"