[FREELDR]

Lower MAX_DISKREADBUFFER_SIZE to let INT 13h, AH=42h only read a maximum of 127 sectors (instead of 128 previously).
This fixes USB booting into the kernel on at least Dell Latitude D531 and Lenovo ThinkPad X61.

Now CORE-13184 remains (in a VM and on real hardware, probably related to the CDFS driver)

svn path=/trunk/; revision=75564
This commit is contained in:
Colin Finck
2017-08-16 10:44:15 +00:00
parent 87980a1275
commit a6222fc8f3
@@ -22,7 +22,12 @@
#define BIOSCALLBUFOFFSET HEX(0000) /* Buffer to store temporary data for any Int386() call */
#define BIOSCALLBUFSIZE PAGE_SIZE /* max is sizeof(VESA_SVGA_INFO) = 512 */
#define MAX_FREELDR_PE_SIZE (MEMORY_MARGIN - FREELDR_PE_BASE - PAGE_SIZE)
#define MAX_DISKREADBUFFER_SIZE HEX(10000)
/* MAX_DISKREADBUFFER_SIZE is later passed to INT 13h, AH=42h.
According to https://en.wikipedia.org/wiki/INT_13H#INT_13h_AH.3D42h:_Extended_Read_Sectors_From_Drive
some BIOSes can only read a maximum of 127 sectors. (0xFE00 / 512 = 127)
Confirmed when booting from USB on Dell Latitude D531 and Lenovo ThinkPad X61. */
#define MAX_DISKREADBUFFER_SIZE HEX(FE00)
/* These addresses specify the realmode "BSS section" layout */
#define BSS_RealModeEntry (BSS_START + 0)