diff -ruN ./VirtualBox-6.1.8{.orig,}/src/VBox/Devices/PC/BIOS/disk.c
|
old
|
new
|
|
| 140 | 140 | int edd_fill_dpt(dpt_t __far *dpt, bio_dsk_t __far *bios_dsk, uint8_t device) |
| 141 | 141 | { |
| 142 | 142 | uint16_t ebda_seg = read_word(0x0040,0x000E); |
| | 143 | uint16_t new_dpt_size; |
| 143 | 144 | |
| 144 | 145 | /* Check if buffer is large enough. */ |
| 145 | 146 | if (dpt->size < 0x1a) |
| … |
… |
|
| 149 | 150 | if (dpt->size >= 0x1a) { |
| 150 | 151 | uint64_t lba; |
| 151 | 152 | |
| 152 | | dpt->size = 0x1a; |
| | 153 | new_dpt_size = 0x1a; |
| 153 | 154 | dpt->blksize = bios_dsk->devices[device].blksize; |
| 154 | 155 | |
| 155 | 156 | if (bios_dsk->devices[device].device == DSK_DEVICE_CDROM) { |
| … |
… |
|
| 175 | 176 | uint8_t channel, irq, mode, checksum, i, xlation; |
| 176 | 177 | uint16_t iobase1, iobase2, options; |
| 177 | 178 | |
| 178 | | dpt->size = 0x1e; |
| | 179 | new_dpt_size = 0x1e; |
| 179 | 180 | dpt->dpte_segment = ebda_seg; |
| 180 | 181 | dpt->dpte_offset = (uint16_t)&EbdaData->bdisk.dpte; |
| 181 | 182 | |
| … |
… |
|
| 227 | 228 | iface = bios_dsk->channels[channel].iface; |
| 228 | 229 | iobase1 = bios_dsk->channels[channel].iobase1; |
| 229 | 230 | |
| 230 | | dpt->size = 0x42; |
| | 231 | new_dpt_size = 0x42; |
| 231 | 232 | dpt->key = 0xbedd; |
| 232 | 233 | dpt->dpi_length = 0x24; |
| 233 | 234 | dpt->reserved1 = 0; |
| … |
… |
|
| 269 | 270 | checksum = -checksum; |
| 270 | 271 | dpt->checksum = checksum; |
| 271 | 272 | } |
| | 273 | |
| | 274 | dpt->size = new_dpt_size; |
| 272 | 275 | return 0; |
| 273 | 276 | } |
| 274 | 277 | |