wok-6.x annotate linld/stuff/src/LINLD.CPP @ rev 24584

Up tazlito (534)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Feb 27 21:20:06 2022 +0000 (2022-02-27)
parents 8db826af003e
children 048ed88bf832
rev   line source
pascal@19515 1 // This file is distributed under GPL
pascal@19515 2 //
pascal@19515 3 // LINLD main() lives here
pascal@19515 4
pascal@19515 5 #include "crtl.h"
pascal@19515 6 #include "common.h"
pascal@23996 7 #include "iso9660.h"
pascal@19515 8
pascal@23996 9 extern char bzimagestr[];
pascal@23996 10 const char* cmdstr[4] = {"auto",bzimagestr,NULL,NULL};
pascal@19515 11
pascal@19515 12 inline void syntax() {
pascal@19515 13 die("Syntax:" NL
pascal@24578 14 "LINLD [image=file] [initrd=files] [vga=mode] [root=num] [mem=topLoad] [cl=cmdline] "
pascal@24019 15 #ifdef ISO9660
pascal@24019 16 "[iso=file] "
pascal@24019 17 #endif
pascal@24019 18 "..." NL
pascal@24578 19 "\tvga mode: ask,extended,normal or dec/oct/hex number" NL
pascal@24578 20 "\t-b baseLoad" NL
pascal@24578 21 #ifdef MINRAM
pascal@24578 22 "\t-r minRAM" NL
pascal@24578 23 #endif
pascal@24067 24 #ifdef CPUTYPE
pascal@24584 25 "\t-c minCPU\tfamily*256+model" NL
pascal@24051 26 #endif
pascal@24019 27 #ifdef CPU64
pascal@24584 28 "\t-64\t\t64 bits cpu" NL
pascal@24019 29 #endif
pascal@24584 30 #ifdef WITH_XMM_ALLOC
pascal@24584 31 "\t-f\t\tskip XMMS alloc" NL
pascal@24584 32 #endif
pascal@24584 33 #ifdef QUICK_BOOT
pascal@24584 34 # ifdef VCPI
pascal@24584 35 "\t-v\t\tV86 mode" NL
pascal@24584 36 # endif
pascal@24584 37 "\t-q\t\tskip shutdown" NL
pascal@24584 38 #endif
pascal@24584 39 "Defaults:\t"
pascal@24584 40 "image=bzImage "
pascal@24584 41 "mem=256m "
pascal@24584 42 "cl=auto "
pascal@24584 43 "-b 1088k" NL
pascal@24584 44 "Use quotes \"cl=...\" for spaces in cmdline"
pascal@24584 45 ", cl=@filename to get it from a file"
pascal@19515 46 #if 1
pascal@19515 47 NL NL "Examples:" NL
pascal@23992 48 "\tLINLD "
pascal@24564 49 #ifdef MINRAM
pascal@24564 50 "-r 96m "
pascal@24564 51 #endif
pascal@24067 52 #ifdef CPUTYPE
pascal@24584 53 "-c 0x600 "
pascal@24067 54 #endif
pascal@24584 55 "initrd=rootfs.gz,mycfg.gz "
pascal@23890 56 "\"cl=root=/dev/null video=-32\""
pascal@24015 57 NL "\tLINLD memtest"
pascal@24584 58 NL "\tLINLD @linld.cmd"
pascal@19515 59 #endif
pascal@19515 60 );
pascal@19515 61 }
pascal@19515 62
pascal@19515 63 int main(int argc, char *argv[]) {
pascal@19571 64
pascal@19571 65 (void) argc;
pascal@19571 66
pascal@21569 67 ((u16*) &base_himem)[1] |= (_1m+_64k)>>16; // base_himem = _1m+_64k
pascal@19515 68 puts("LINLD v" VERSION_STR "+");
pascal@19515 69
pascal@19538 70 // Parse command line
pascal@23994 71 if (!*++argv) syntax();
pascal@23992 72 const char **clp = &cmdline;
pascal@23994 73 do {
pascal@24019 74 #ifdef CPU64
pascal@21984 75 if ((*(u16 *)*argv|2) == 0x362F) { // -64 /64
pascal@24051 76 if (cpuhaslm() == 0) exit();
pascal@21984 77 }
pascal@24019 78 #endif
pascal@24564 79 if (argstr(*argv,"cl|image|initrd" CMDSTR_EXTRA,clp) == (int) clp) continue;
pascal@24584 80 if (argnum(*argv,"root|vga|mem|-b|" CMDNUM_EXTRA
pascal@24584 81 #ifdef WITH_XMM_ALLOC
pascal@24584 82 "-f~"
pascal@24584 83 #endif
pascal@24067 84 ,&root_dev) >= (int) &base_himem) continue;
pascal@23992 85 if (fileexist(*argv) != -1) {
pascal@21984 86 kernel_name=*argv;
pascal@23992 87 continue;
pascal@23992 88 }
pascal@24022 89 *clp = (const char *) heap_top +1;
pascal@24022 90 strcatb((const char *) heap_top,*argv);
pascal@23994 91 } while (*++argv);
pascal@24564 92 #ifdef MINRAM
pascal@24578 93 if ((minram>>16) > (memtop()>>16)) exit();
pascal@24564 94 #endif
pascal@24067 95 #ifdef CPUTYPE
pascal@24067 96 if (mincpu > cputype) exit();
pascal@24067 97 #endif
pascal@24564 98
pascal@23992 99 puts(*clp);
pascal@24022 100 asm{
pascal@24022 101 xchg ax,bx
pascal@24022 102 mov bx,offset _heap_top
pascal@24022 103 cmp ax,[bx]
pascal@24022 104 jc skip
pascal@24022 105 mov [bx],ax
pascal@24022 106 }
pascal@24022 107 skip:
pascal@24019 108 #ifdef ISO9660
pascal@23996 109 if (isofile) setiso(isofile);
pascal@24019 110 #endif
pascal@23992 111 set_cmdline(*clp);
pascal@23992 112 load_kernel();
pascal@23992 113 load_initrd();
pascal@24022 114 //boot_kernel();
pascal@19515 115
pascal@19515 116 // Let compiler be happy
pascal@23996 117 return _AX;
pascal@19515 118 }