Lines Matching +full:0 +full:x13
47 #define BIOS_RES_BUFFER_ADDR 0x7000
50 #define STARTING_DRVNUM 0x80
51 #define FP_OFF(fp) (((uintptr_t)(fp)) & 0xFFFF)
52 #define FP_SEG(fp) ((((uintptr_t)(fp)) >> 16) & 0xFFFF)
55 int biosdebug = 0;
63 biosdev_data_t biosdev_info[BIOSDEV_NUM]; /* from 0x80 to 0x87 */
78 int got_devparams = 0; in startup_bios_disk()
79 int got_first_block = 0; in startup_bios_disk()
89 if (dobiosdev == 0) in startup_bios_disk()
92 for (drivenum = 0x80; drivenum < (0x80 + BIOSDEV_NUM); drivenum++) { in startup_bios_disk()
110 got_devparams = 0; in startup_bios_disk()
112 if ((got_first_block = read_firstblock(drivenum)) == 0) { in startup_bios_disk()
118 (void) sprintf((char *)name, "biosdev-0x%x", drivenum); in startup_bios_disk()
122 (uchar_t *)&biosdev_info[drivenum - 0x80], in startup_bios_disk()
131 struct bop_regs rp = {0}; in bios_check_extension_present()
134 rp.eax.word.ax = 0x4100; in bios_check_extension_present()
135 rp.ebx.word.bx = 0x55AA; in bios_check_extension_present()
139 BOP_DOINT(bootops, 0x13, &rp); in bios_check_extension_present()
141 if (((rp.eflags & PS_C) != 0) || (rp.ebx.word.bx != 0xAA55)) { in bios_check_extension_present()
144 return (0); in bios_check_extension_present()
147 if ((rp.ecx.word.cx & 0x7) == 0) { in bios_check_extension_present()
150 return (0); in bios_check_extension_present()
159 struct bop_regs rp = {0}; in get_dev_params()
174 for (i = 0; i < sizeof (*bufp); i++) in get_dev_params()
175 ((uchar_t *)bufp)[i] = 0; in get_dev_params()
178 rp.eax.word.ax = 0x4800; in get_dev_params()
184 BOP_DOINT(bootops, 0x13, &rp); in get_dev_params()
186 if ((rp.eflags & PS_C) != 0) { in get_dev_params()
189 return (0); in get_dev_params()
192 index = drivenum - 0x80; in get_dev_params()
202 for (i = 0; i < sizeof (*bufp); i++) in get_dev_params()
211 struct bop_regs rp = {0}; in drive_present()
213 rp.eax.byte.ah = 0x8; /* get params */ in drive_present()
216 BOP_DOINT(bootops, 0x13, &rp); in drive_present()
218 if (((rp.eflags & PS_C) != 0) || rp.eax.byte.ah != 0) { in drive_present()
221 return (0); in drive_present()
231 struct bop_regs rp = {0}; in reset_disk()
234 rp.eax.byte.ah = 0x0; /* reset disk */ in reset_disk()
237 BOP_DOINT(bootops, 0x13, &rp); in reset_disk()
241 if (((rp.eflags & PS_C) != 0) || status != 0) in reset_disk()
251 struct bop_regs rp = {0}; in read_firstblock()
261 rp.eax.byte.ah = 0x2; /* Read disk */ in read_firstblock()
263 rp.ecx.byte.ch = 0; /* cyl & 0xff */ in read_firstblock()
264 rp.ecx.byte.cl = 1; /* cyl >> 2 & 0xc0 (sector number) */ in read_firstblock()
265 rp.edx.byte.dh = 0; /* head */ in read_firstblock()
272 BOP_DOINT(bootops, 0x13, &rp); in read_firstblock()
275 if (((rp.eflags & PS_C) != 0) || status != 0) { in read_firstblock()
277 return (0); in read_firstblock()
280 dprintf(("drivenum %x uid at 0x1b8 is %x\n", drivenum, in read_firstblock()
281 *(uint32_t *)(bufp +0x1b8))); in read_firstblock()
283 index = drivenum - 0x80; in read_firstblock()
286 for (i = 0; i < 512; i++) in read_firstblock()
295 struct bop_regs rp = {0}; in is_eltorito()
308 for (i = 0; i < sizeof (*bufp); i++) in is_eltorito()
309 ((uchar_t *)bufp)[i] = 0; in is_eltorito()
312 rp.eax.word.ax = 0x4b01; in is_eltorito()
318 BOP_DOINT(bootops, 0x13, &rp); in is_eltorito()
320 if ((rp.eflags & PS_C) != 0 || bufp->drivenum != drivenum) { in is_eltorito()
321 dprintf(("fn 0x4b01 FAILED on drive " in is_eltorito()
324 return (0); in is_eltorito()