wok rev 24014

linld: add quick boot switch (again)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Feb 19 18:33:17 2021 +0000 (2021-02-19)
parents bc4b94310a29
children 14ca5e18cfd9
files linld/stuff/src/CRTL.ASM linld/stuff/src/LINLD.CPP linld/stuff/src/MEMCPY32.ASM linld/stuff/src/VCPI.ASM linld/stuff/src/XMM.ASM
line diff
     1.1 --- a/linld/stuff/src/CRTL.ASM	Thu Feb 18 08:56:43 2021 +0000
     1.2 +++ b/linld/stuff/src/CRTL.ASM	Fri Feb 19 18:33:17 2021 +0000
     1.3 @@ -371,43 +371,38 @@
     1.4  		push	si di
     1.5  		xchg	ax,di			; vars => di
     1.6  		dec	bx
     1.7 -@@testalt:
     1.8  		sub	di,dx
     1.9  @@loop:
    1.10  		mov	si,cx			; s
    1.11  		add	di,dx
    1.12  @@match:
    1.13 -		inc	bx			; keywords++
    1.14  		lodsb				; *s++
    1.15  		or	al,20h			; locase
    1.16 +		cmp	al,'/'			; 2f
    1.17 +		jne	@@notopt
    1.18 +		mov	al,'-'
    1.19 +@@notopt:
    1.20 +		inc	bx			; keywords++
    1.21  		cmp	al,[bx]
    1.22  		je	@@match
    1.23 -		cmp	al,'/'			; 2f
    1.24 +		cmp	[byte bx],dh
    1.25 +		je	@@lastal
    1.26 +		cmp	[byte bx],'|'
    1.27 +		je	@@testal
    1.28 +		jl	@@notsw			; } ~ <del>
    1.29 +		cmp	al,20h			; EOS or 20h
    1.30 +		jne	@@loop			; assume [bx] = '|'
    1.31 +@@notsw:
    1.32 +		mov	ax,-1
    1.33  		jne	@@notopt
    1.34 -		cmp	[byte bx],'-'
    1.35 -		je	@@match
    1.36 -@@notopt:
    1.37 -		cmp	[byte bx],'|'
    1.38 -		je	@@test
    1.39 -		cmp	[byte bx],dh
    1.40 -		je	@@test
    1.41 -		mov	al,-1
    1.42 -		inc	bx
    1.43 -		jmp	@@notopt
    1.44 -@@test:
    1.45 -		or	al,al			; 1st loop ?
    1.46 -		jns	@@testal
    1.47 -		cmp	[byte bx],dh
    1.48 -		jne	@@loop
    1.49 +		jmp	@@setnum
    1.50  @@testal:
    1.51 -		cmp	al,'*'
    1.52 -		je	@@setnum
    1.53 -		cmp	al,'='
    1.54 -		;je	@@found
    1.55 -		;cmp	al,0			; eos, si=next argv
    1.56 +		inc	ax
    1.57 +		jz	@@loop
    1.58 +@@lastal:
    1.59 +		cmp	al,'='+1
    1.60  		xchg	ax,cx			; return s if failure
    1.61  		jne	@@nokeyword
    1.62 -@@found:
    1.63  		dec	dx
    1.64  		dec	dx
    1.65  		je	@@done
     2.1 --- a/linld/stuff/src/LINLD.CPP	Thu Feb 18 08:56:43 2021 +0000
     2.2 +++ b/linld/stuff/src/LINLD.CPP	Fri Feb 19 18:33:17 2021 +0000
     2.3 @@ -56,9 +56,9 @@
     2.4  	}
     2.5  	if (argstr(*argv,"cl|image|initrd|iso",clp) == (int) clp) continue;
     2.6  #ifdef QUICK_BOOT
     2.7 -	if (argnum(*argv,"root|vga|mem|-b|-f*|-q*|-v*",&root_dev) >= (int) &base_himem) continue;
     2.8 +	if (argnum(*argv,"root|vga|mem|-b|-f~-q~-v~",&root_dev) >= (int) &base_himem) continue;
     2.9  #else
    2.10 -	if (argnum(*argv,"root|vga|mem|-b|-f*",&root_dev) >= (int) &base_himem) continue;
    2.11 +	if (argnum(*argv,"root|vga|mem|-b|-f~",&root_dev) >= (int) &base_himem) continue;
    2.12  #endif
    2.13  	if (fileexist(*argv) != -1) {
    2.14              kernel_name=*argv;
     3.1 --- a/linld/stuff/src/MEMCPY32.ASM	Thu Feb 18 08:56:43 2021 +0000
     3.2 +++ b/linld/stuff/src/MEMCPY32.ASM	Fri Feb 19 18:33:17 2021 +0000
     3.3 @@ -153,14 +153,6 @@
     3.4                  call    near vcpi_pm_copy_routine ; Call pm copy routine via vcpi pm
     3.5  		jmp	@@done
     3.6  @@real_mode:
     3.7 -                cmp     esi,edi
     3.8 -                jae     @@do_copy
     3.9 -                add     esi,ecx         ;src<dst: we must do
    3.10 -                add     edi,ecx         ;  copy backwards to avoid
    3.11 -                std                     ;  overwrite bug
    3.12 -                db      67h     	;address width override for esi/edi
    3.13 -		cmpsb			;  dec esi/edi
    3.14 -@@do_copy:
    3.15                  cli
    3.16  oldGDTR		=	(pword srcseg)	; don't need src seg/ofs anymore
    3.17                  sgdt    [oldGDTR]
    3.18 @@ -177,6 +169,14 @@
    3.19                  pop     ds              ;base=0, lim = 4gb
    3.20                  push    ds              ;
    3.21                  pop     es              ;
    3.22 +                cmp     esi,edi
    3.23 +                jae     @@do_copy
    3.24 +                add     esi,ecx         ;src<dst: we must do
    3.25 +                add     edi,ecx         ;  copy backwards to avoid
    3.26 +                std                     ;  overwrite bug
    3.27 +                db      67h		;address width override for esi/edi
    3.28 +		cmpsb			;  dec esi/edi
    3.29 +@@do_copy:
    3.30                  ;db      66h     ;operand width override for ecx
    3.31                  db      67h     ;address width override for esi/edi
    3.32              rep movsb
     4.1 --- a/linld/stuff/src/VCPI.ASM	Thu Feb 18 08:56:43 2021 +0000
     4.2 +++ b/linld/stuff/src/VCPI.ASM	Fri Feb 19 18:33:17 2021 +0000
     4.3 @@ -341,16 +341,16 @@
     4.4  
     4.5                  assume  cs:DGROUP,ds:DGROUP
     4.6                  push	ds
     4.7 +		extrn	sssp:dword
     4.8 +		mov	bx,offset sssp
     4.9 +                mov     [bx],sp
    4.10 +                ;mov     [bx+2],ss
    4.11                  ifdef   QUICK_BOOT
    4.12  		extrn	_cmdnum:dword
    4.13  v86boot	=	(byte _cmdnum+24)
    4.14 -		cmp	[v86boot],0
    4.15 +		test	[v86boot],bh
    4.16  		jnz	@vm2rm_ret
    4.17  		endif
    4.18 -		mov	bx,offset sssp
    4.19 -                mov     [bx],sp
    4.20 -                ;mov     [bx+2],ss
    4.21 -		extrn	sssp:dword
    4.22                  ifdef NO386
    4.23  		extrn	_vcpi:byte
    4.24  		test	[_vcpi],bh
     5.1 --- a/linld/stuff/src/XMM.ASM	Thu Feb 18 08:56:43 2021 +0000
     5.2 +++ b/linld/stuff/src/XMM.ASM	Fri Feb 19 18:33:17 2021 +0000
     5.3 @@ -64,7 +64,7 @@
     5.4  LARGE_XMM_ALLOC	=	1
     5.5  		ifdef	LARGE_XMM_ALLOC
     5.6                  mov     ch,89h          ;allocate blk of EDX kilobytes
     5.7 -		test	[skip_alloc],ch	; 89h & ('*'=2Ah) = 08h
     5.8 +		test	[skip_alloc],ch
     5.9  		jne	@@err
    5.10  		extrn	_cpu386:byte
    5.11  		test	[_cpu386],ch