Set most code paths to have interrupts on when calling 16bit code.
This fixes at least one optionrom that needed irqs on.
struct bregs br;
memset(&br, 0, sizeof(br));
+ br.flags = F_IF;
br.code = SEGOFF(bootseg, bootip);
// Set the magic number in ax and the boot drive in dl.
br.dl = bootdrv;
// Read sector
struct bregs br;
memset(&br, 0, sizeof(br));
+ br.flags = F_IF;
br.dl = bootdrv;
br.es = bootseg;
br.ah = 2;
// Boot failed: invoke the boot recovery function
struct bregs br;
memset(&br, 0, sizeof(br));
+ br.flags = F_IF;
call16_int(0x18, &br);
}
struct bregs br;
memset(&br, 0, sizeof(br));
+ br.flags = F_IF;
br.ax = bdf;
br.bx = 0xffff;
br.dx = 0xffff;
dprintf(1, "Turning on vga console\n");
struct bregs br;
memset(&br, 0, sizeof(br));
+ br.flags = F_IF;
br.ax = 0x0003;
call16_int(0x10, &br);
return;
struct bregs br;
memset(&br, 0, sizeof(br));
+ br.flags = F_IF;
br.ah = 0x0e;
br.al = c;
call16_int(0x10, &br);
dprintf(3, "Jump to int19\n");
struct bregs br;
memset(&br, 0, sizeof(br));
+ br.flags = F_IF;
call16_int(0x19, &br);
}
// Call int 1587 to copy data.
struct bregs br;
memset(&br, 0, sizeof(br));
- br.flags = F_CF;
+ br.flags = F_CF|F_IF;
br.ah = 0x87;
br.es = GET_SEG(SS);
br.si = (u32)gdt;
{
struct bregs br;
memset(&br, 0, sizeof(br));
+ br.flags = F_IF;
br.ah = 0x86;
br.cx = usec >> 16;
br.dx = usec;
{
struct bregs br;
memset(&br, 0, sizeof(br));
+ br.flags = F_IF;
br.ah = 1;
call16_int(0x16, &br);
return !(br.flags & F_ZF);
{
struct bregs br;
memset(&br, 0, sizeof(br));
+ br.flags = F_IF;
call16_int(0x16, &br);
return br.ah;
}