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