Clean up some warnings.
Make sure floppy_dbt structure is aliagned to 1 byte boundary.
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)
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;
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);
}
/* 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 */
}
// 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,
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);
}
#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"