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

linld: add cpu detection
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Jul 05 15:05:16 2021 +0000 (2021-07-05)
parents 324b3fa82b76
children c11594098e34
line diff
     1.1 --- a/linld/stuff/src/LINLD.CPP	Mon May 24 11:24:29 2021 +0000
     1.2 +++ b/linld/stuff/src/LINLD.CPP	Mon Jul 05 15:05:16 2021 +0000
     1.3 @@ -8,11 +8,6 @@
     1.4  
     1.5  extern char bzimagestr[];
     1.6  const char* cmdstr[4] = {"auto",bzimagestr,NULL,NULL};
     1.7 -#ifdef QUICK_BOOT
     1.8 -extern u32 cmdnum[7];
     1.9 -#else
    1.10 -extern u32 cmdnum[5];
    1.11 -#endif
    1.12  
    1.13  inline void syntax() {
    1.14      die("Syntax:" NL
    1.15 @@ -22,8 +17,8 @@
    1.16  #endif
    1.17  	"..." NL
    1.18          "vga mode: ask,extended,normal or dec/oct/hex number" NL
    1.19 -#ifdef CPU32
    1.20 -        "-32 for 386+" NL
    1.21 +#ifdef CPUTYPE
    1.22 +        "-m mincpu	family*256+model" NL
    1.23  #endif
    1.24  #ifdef CPU64
    1.25          "-64 for cpu64 only" NL
    1.26 @@ -40,6 +35,9 @@
    1.27          NL NL "Examples:" NL
    1.28  	"\tLINLD "
    1.29  	"-b 64m "
    1.30 +#ifdef CPUTYPE
    1.31 +	"-m 0x600 "
    1.32 +#endif
    1.33          "initrd=rootfs4.gz,rootfs3.gz,rootfs2.gz,rootfs1.gz "
    1.34  	"\"cl=root=/dev/null video=-32\""
    1.35  	NL "\tLINLD memtest"
    1.36 @@ -58,12 +56,6 @@
    1.37      if (!*++argv) syntax();
    1.38      const char **clp = &cmdline;
    1.39      do {
    1.40 -#ifdef CPU32
    1.41 -        if ((*(u16 *)*argv|2) == 0x332F) {	// -32 /32
    1.42 -	    extrn char cpu386;
    1.43 -	    if (cpu386 == 0) exit();
    1.44 -	}
    1.45 -#endif
    1.46  #ifdef CPU64
    1.47          if ((*(u16 *)*argv|2) == 0x362F) {	// -64 /64
    1.48  	    if (cpuhaslm() == 0) exit();
    1.49 @@ -74,11 +66,15 @@
    1.50  #else
    1.51  	if (argstr(*argv,"cl|image|initrd",clp) == (int) clp) continue;
    1.52  #endif
    1.53 +	if (argnum(*argv,"root|vga|mem|-b|"
    1.54 +#ifdef CPUTYPE
    1.55 +		"-m|"
    1.56 +#endif
    1.57 +		"-f~"
    1.58  #ifdef QUICK_BOOT
    1.59 -	if (argnum(*argv,"root|vga|mem|-b|-f~-q~-v~",&root_dev) >= (int) &base_himem) continue;
    1.60 -#else
    1.61 -	if (argnum(*argv,"root|vga|mem|-b|-f~",&root_dev) >= (int) &base_himem) continue;
    1.62 +		"-q~-v~"
    1.63  #endif
    1.64 +		,&root_dev) >= (int) &base_himem) continue;
    1.65  	if (fileexist(*argv) != -1) {
    1.66              kernel_name=*argv;
    1.67  	    continue;
    1.68 @@ -86,6 +82,9 @@
    1.69  	*clp = (const char *) heap_top +1;
    1.70  	strcatb((const char *) heap_top,*argv);
    1.71      } while (*++argv);
    1.72 +#ifdef CPUTYPE
    1.73 +    if (mincpu > cputype) exit();
    1.74 +#endif
    1.75      puts(*clp);
    1.76      asm{
    1.77  	xchg	ax,bx