wok diff linld/stuff/src/LINLD.CPP @ rev 23992

linld: skip xmm_alloc
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Dec 12 10:41:29 2020 +0000 (2020-12-12)
parents 78bc4b109dd6
children 34d90fb03f57
line diff
     1.1 --- a/linld/stuff/src/LINLD.CPP	Sat Jul 25 08:45:16 2020 +0000
     1.2 +++ b/linld/stuff/src/LINLD.CPP	Sat Dec 12 10:41:29 2020 +0000
     1.3 @@ -24,7 +24,9 @@
     1.4      die("Syntax:" NL
     1.5          "LINLD [image=file] [initrd=files] [vga=mode] [root=num] [mem=max] [cl=cmdline]" NL
     1.6          "vga mode: ask,extended,normal or dec/oct/hex number" NL
     1.7 +#ifdef WITH_XMM_ALLOC
     1.8          "-f force" NL
     1.9 +#endif
    1.10          "-64 for cpu64 only" NL
    1.11          "Defaults:" NL
    1.12          "\timage=bzImage" NL
    1.13 @@ -36,7 +38,11 @@
    1.14          "Use cl=@filename to get it from a file"
    1.15  #if 1
    1.16          NL NL "Examples:" NL
    1.17 -	"\tLINLD -f -b 64m "
    1.18 +	"\tLINLD "
    1.19 +#ifdef WITH_XMM_ALLOC
    1.20 +	"-f "
    1.21 +#endif
    1.22 +	"-b 64m "
    1.23          "initrd=rootfs4.gz,rootfs3.gz,rootfs2.gz,rootfs1.gz "
    1.24  	"\"cl=root=/dev/null video=-32\""
    1.25  	NL NL "\tLINLD image=memtest"
    1.26 @@ -55,32 +61,34 @@
    1.27      // Parse command line
    1.28  #ifdef	USE_ARGSTR
    1.29      if (!argv[1]) syntax();
    1.30 +    const char **clp = &cmdline;
    1.31      for (;;) {
    1.32 -	const char **clp = &cmdline;
    1.33  	argv++;
    1.34 -	if (!*argv) goto boot;
    1.35 +	if (!*argv) break;
    1.36          if ((*(u16 *)*argv|2) == 0x362F) {	// -64 /64
    1.37  	    if (cpuhaslm() == 0) exit();
    1.38 +	    continue;
    1.39  	}
    1.40 +#ifdef WITH_XMM_ALLOC
    1.41          if ((*(u16 *)*argv|0x2002) == 0x662F) {	// -F /f
    1.42  	    skip_alloc--;
    1.43 +	    continue;
    1.44  	}
    1.45 -	else if (argstr(*argv,"cl|image|initrd",clp) != -1);
    1.46 -	else if (fileexist(*argv) != -1)
    1.47 +#endif
    1.48 +	if (argstr(*argv,"cl|image|initrd",clp) != -1 && **argv == 'c') continue;
    1.49 +	if (fileexist(*argv) != -1) {
    1.50              kernel_name=*argv;
    1.51 -	else if (argnum(*argv,"root|vga|mem|-b",&root_dev) != -1);
    1.52 -	else {
    1.53 -	    *clp = (const char *) buf_cmdline + 1;
    1.54 -	    do strcatb((const char *) buf_cmdline,*argv++); while (*argv);
    1.55 -	boot:
    1.56 -            puts(*clp);
    1.57 -	    set_cmdline(*clp);
    1.58 -	    load_kernel();
    1.59 -	    puts(version_string);
    1.60 -	    load_initrd();
    1.61 -	    boot_kernel();
    1.62 -        }
    1.63 +	    continue;
    1.64 +	}
    1.65 +	argnum(*argv,"root|vga|mem|-b",&root_dev);
    1.66 +	*clp = (const char *) buf_cmdline + 1;
    1.67 +	strcatb((const char *) buf_cmdline,*argv);
    1.68      }
    1.69 +    puts(*clp);
    1.70 +    set_cmdline(*clp);
    1.71 +    load_kernel();
    1.72 +    load_initrd();
    1.73 +    boot_kernel();
    1.74  #else
    1.75      if (!argv[1]) syntax();
    1.76      while (1) {
    1.77 @@ -104,9 +112,11 @@
    1.78          case 0x362F:	// -64 /64
    1.79  	    if (cpuhaslm() == 0) exit();
    1.80  	    goto next;
    1.81 +#ifdef WITH_XMM_ALLOC
    1.82  	case 0x662F:	// -F /f
    1.83  	    skip_alloc--;
    1.84  	    goto next;
    1.85 +#endif
    1.86  	case 0x622F:	// -B /b
    1.87  	    argv++;
    1.88  	    ((u16 *)&base_himem)[1] = (u16)(strtol(*argv)>>16);