wok rev 16008

syslinux/iso2exe: keep 16M..48M for the kernel
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Mar 04 16:29:56 2014 +0000 (2014-03-04)
parents 4a4761329067
children 6c33dfc046bc
files syslinux/stuff/iso2exe/bootlinux.c
line diff
     1.1 --- a/syslinux/stuff/iso2exe/bootlinux.c	Tue Mar 04 13:27:14 2014 +0100
     1.2 +++ b/syslinux/stuff/iso2exe/bootlinux.c	Tue Mar 04 16:29:56 2014 +0000
     1.3 @@ -83,7 +83,7 @@
     1.4  		mov	ax, #0x8793
     1.5  		mov	[si+0x15], al
     1.6  		xchg	[si+0x1D], al
     1.7 -		mov	[si+0x1F], al	// bits 24..31
     1.8 +		xchg	[si+0x1F], al	// bits 24..31
     1.9  		int	0x15
    1.10  		add	sp, #0x30
    1.11  		popa
    1.12 @@ -121,16 +121,16 @@
    1.13  	switch (p->align) {
    1.14  	case 0:	// kernel
    1.15  		switch (dosversion()) {
    1.16 -		case 3: case 4: case 6: break;
    1.17 +		case 3: case 4: case 6: case 7: break;
    1.18  		default:
    1.19  			printf("DOS %d not supported.\nTrying anyway...\n",
    1.20  				versiondos);
    1.21  		}
    1.22  		p->align = PAGE_SIZE;
    1.23  		break;
    1.24 -	case PAGE_SIZE: // first initrd : skip mapping hole before 16M
    1.25 -		if (extendedramsizeinkb() > 24000U && p->base < 0x1000000)
    1.26 -			p->base = 0x1000000;
    1.27 +	case PAGE_SIZE: // first initrd : keep 16M..48M for the kernel
    1.28 +		if (extendedramsizeinkb() > 0xF000U && p->base < 0x3000000)
    1.29 +			p->base = 0x3000000;
    1.30  		initrd_addr = p->base;
    1.31  		p->align = 4;
    1.32  	}