wok annotate linld/stuff/src/COMMON.H @ rev 24564
Add some current_version
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Fri Feb 25 18:06:36 2022 +0000 (2022-02-25) |
parents | ef1efd2c8811 |
children | be9fc3c4c575 |
rev | line source |
---|---|
pascal@24019 | 1 //#define WITH_XMM_ALLOC add himem.sys driver |
pascal@24034 | 2 //#define INT15_E820 add int15/eax=E820 driver |
pascal@24019 | 3 //#define LARGE_ZIMAGE may load system in high memory temporarily |
pascal@24034 | 4 #define CLEAN_ISO9660 remove ';1' or '.' trailers for non rockridge name |
pascal@24022 | 5 #define BASIC_ISO9660 non rockridge support |
pascal@24019 | 6 #define ROCKRIDGE iso 9660 posix name support |
pascal@24019 | 7 #define ISO9660 iso= support |
pascal@24019 | 8 #define QUICK_BOOT /q bypass shutdown hack, /v keeps v86 |
pascal@24019 | 9 #define ISOHOOK iso image dos boot helper |
pascal@24019 | 10 #define MOVE_SETUP spare few Kb in setup location for zImage system |
pascal@24019 | 11 #define NO386 8088 support |
pascal@24019 | 12 #define CPU64 /64 support |
pascal@24019 | 13 #define LONG_FILENAME look for Win95+ long file name too |
pascal@24019 | 14 #define SHUTDOWN disable int19 hooked drivers |
pascal@24019 | 15 #define VCPI v86 mode support with VCPI 4.0+ |
pascal@24019 | 16 #define LINUX001 linux 0.01 support |
pascal@24019 | 17 #define ELKS elks support |
pascal@24019 | 18 #define IPXE ipxe support |
pascal@24067 | 19 #define CPUTYPE detect cpu family and model |
pascal@24564 | 20 #define MINRAM detect RAM size |
pascal@24019 | 21 /* End of the optional features */ |
pascal@24019 | 22 |
pascal@24019 | 23 #ifdef ISOHOOK |
pascal@24019 | 24 #ifndef ROCKRIDGE |
pascal@24019 | 25 #define ROCKRIDGE |
pascal@24019 | 26 #endif |
pascal@24019 | 27 #ifndef CPU64 |
pascal@24019 | 28 #define CPU64 |
pascal@24019 | 29 #endif |
pascal@24019 | 30 #endif |
pascal@24034 | 31 #if defined(ROCKRIDGE) || defined(BASIC_ISO9660) || defined(CLEAN_ISO9660) |
pascal@24022 | 32 #ifndef ISO9660 |
pascal@24022 | 33 #define ISO9660 |
pascal@24022 | 34 #endif |
pascal@24022 | 35 #endif |
pascal@24019 | 36 |
pascal@19515 | 37 // This file is distributed under GPL |
pascal@19515 | 38 // |
pascal@19515 | 39 // Common defs not belonging to CRTL |
pascal@19515 | 40 |
pascal@24019 | 41 #if defined(__BORLANDC__) && !defined(NO386) |
pascal@24019 | 42 #pragma option -3 |
pascal@24019 | 43 asm{ |
pascal@24019 | 44 .386p |
pascal@24019 | 45 } |
pascal@24019 | 46 #endif |
pascal@24019 | 47 |
pascal@21757 | 48 #define NL "\n" |
pascal@19515 | 49 #define VERSION_STR "0.97" |
pascal@19515 | 50 |
pascal@19515 | 51 #if 0 // DEBUG |
pascal@19515 | 52 #undef NDEBUG |
pascal@19515 | 53 #define DEBUG |
pascal@19515 | 54 #define static |
pascal@19515 | 55 #else // not DEBUG |
pascal@19515 | 56 #define NDEBUG |
pascal@19515 | 57 #undef DEBUG |
pascal@19515 | 58 #endif |
pascal@19515 | 59 |
pascal@19515 | 60 typedef unsigned long u32; typedef signed long s32; |
pascal@19515 | 61 typedef unsigned short u16; typedef signed short s16; |
pascal@19515 | 62 typedef unsigned char u8; typedef signed char s8; |
pascal@19515 | 63 |
pascal@19515 | 64 const u16 _16k = 16*1024u; |
pascal@19515 | 65 const u16 _32k = 32*1024u; |
pascal@19515 | 66 const u32 _64k = 64*1024ul; |
pascal@19515 | 67 const u32 _1m = 1024ul*1024ul; |
pascal@19580 | 68 const u32 _32m = 32*1024ul*1024ul; |
pascal@19580 | 69 const u32 _64m = 64*1024ul*1024ul; |
pascal@19515 | 70 |
pascal@19515 | 71 const PAGE_BITS = 12; |
pascal@19515 | 72 const PAGE_SIZE = 1<<PAGE_BITS; |
pascal@19515 | 73 const PAGE_MASK = PAGE_SIZE-1; |
pascal@19515 | 74 |
pascal@19515 | 75 // WARNING! |
pascal@19515 | 76 // BC 3.1 bug: seg() will generate incorrect code if inlined! |
pascal@19515 | 77 // replaced by _dirty_ hack for now |
pascal@19515 | 78 // u16 seg(const void far* p) { return FP_SEG(p); } |
pascal@19515 | 79 inline u16 seg(const void far*) { return _DS; } |
pascal@19515 | 80 |
pascal@19515 | 81 inline u16 ofs(const void* p) { return FP_OFF(p); } |
pascal@19515 | 82 |
pascal@19515 | 83 extern struct image_himem { |
pascal@19515 | 84 int fd; |
pascal@19515 | 85 u32 fallback; |
pascal@19515 | 86 u32 size; |
pascal@19515 | 87 u32 remaining; |
pascal@19515 | 88 u32 buf; |
pascal@19515 | 89 u32 *bufv; |
pascal@19515 | 90 u32 chunk_size; |
pascal@19515 | 91 u16 state; |
pascal@19538 | 92 u16 fd2close; |
pascal@19899 | 93 } imgs[2]; |
pascal@19899 | 94 #define pm (imgs[0]) |
pascal@19899 | 95 #define initrd (imgs[1]) |
pascal@20538 | 96 #define pm2initrd(p) (p+1) |
pascal@19515 | 97 |
pascal@22288 | 98 extern u8 pm_low; |
pascal@23996 | 99 |
pascal@24022 | 100 extern u8 buf4k[4096]; |
pascal@24022 | 101 |
pascal@21758 | 102 extern u32 far *initrd_desc; |
pascal@24564 | 103 #ifdef ISO9660 |
pascal@24564 | 104 #define CMDSTR_EXTRA "|iso" |
pascal@24564 | 105 #else |
pascal@24564 | 106 #define CMDSTR_EXTRA "" |
pascal@24564 | 107 #endif |
pascal@23996 | 108 #define cmdline (cmdstr[0]) |
pascal@23996 | 109 #define kernel_name (cmdstr[1]) |
pascal@23996 | 110 #define initrd_name (cmdstr[2]) |
pascal@23996 | 111 #define isofile (cmdstr[3]) |
pascal@23996 | 112 extern const char* cmdstr[4]; |
pascal@23996 | 113 |
pascal@23996 | 114 #define root_dev (cmdnum[0]) |
pascal@23996 | 115 #define vid_mode (cmdnum[1]) // -3 = ask, -2 = Extended VGA, -1 = Normal VGA, n = as "n" was pressed |
pascal@23996 | 116 #define topmem (cmdnum[2]) |
pascal@23996 | 117 #define base_himem (cmdnum[3]) |
pascal@24564 | 118 #define CMDNUM 4 |
pascal@24564 | 119 #define CMDNUM_EXTRA "" |
pascal@24564 | 120 extern u32 cmdnum[CMDNUM |
pascal@24564 | 121 #ifdef MINRAM |
pascal@24564 | 122 #define minram (cmdnum[CMDNUM]) |
pascal@24564 | 123 #undef CMDNUM_EXTRA |
pascal@24564 | 124 #define CMDNUM_EXTRA "-r|" |
pascal@24564 | 125 #undef CMDNUM |
pascal@24564 | 126 #define CMDNUM 5 |
pascal@24564 | 127 +1 |
pascal@24564 | 128 #endif |
pascal@24067 | 129 #ifdef CPUTYPE |
pascal@24564 | 130 #define mincpu (* (short *) &cmdnum[CMDNUM]) |
pascal@24564 | 131 #undef CMDNUM |
pascal@24564 | 132 #undef CMDNUM_EXTRA |
pascal@24564 | 133 # ifdef MINRAM |
pascal@24564 | 134 #define CMDNUM_EXTRA "-r|-m|" |
pascal@24564 | 135 #define CMDNUM 6 |
pascal@24564 | 136 # else |
pascal@24564 | 137 #define CMDNUM_EXTRA "-m|" |
pascal@24564 | 138 #define CMDNUM 5 |
pascal@24564 | 139 # endif |
pascal@24067 | 140 +1 |
pascal@24067 | 141 #endif |
pascal@24013 | 142 #ifdef QUICK_BOOT |
pascal@24564 | 143 #undef CMDNUM |
pascal@24564 | 144 #undef CMDNUM_EXTRA |
pascal@24564 | 145 # ifdef MINRAM |
pascal@24564 | 146 # ifdef CPUTYPE |
pascal@24564 | 147 #define CMDNUM_EXTRA "-r|-m|-q~-v~" |
pascal@24564 | 148 #define CMDNUM 8 |
pascal@24564 | 149 # else |
pascal@24564 | 150 #define CMDNUM_EXTRA "-r|-q~-v~" |
pascal@24564 | 151 #define CMDNUM 7 |
pascal@24564 | 152 # endif |
pascal@24564 | 153 # else |
pascal@24564 | 154 # ifdef CPUTYPE |
pascal@24564 | 155 #define CMDNUM_EXTRA "-m|-q~-v~" |
pascal@24564 | 156 #define CMDNUM 7 |
pascal@24564 | 157 # else |
pascal@24564 | 158 #define CMDNUM_EXTRA "-q~-v~" |
pascal@24564 | 159 #define CMDNUM 6 |
pascal@24564 | 160 # endif |
pascal@24564 | 161 # endif |
pascal@24067 | 162 +2 |
pascal@24013 | 163 #endif |
pascal@24564 | 164 +1]; |
pascal@24564 | 165 #define skip_alloc (* (char *) &cmdnum[CMDNUM]) |
pascal@24564 | 166 #ifdef CPUTYPE |
pascal@24564 | 167 extern unsigned cputype; |
pascal@24564 | 168 #endif |
pascal@19580 | 169 |
pascal@24013 | 170 extern _fastcall void memcpy_image_kernel(); |
pascal@24013 | 171 extern _fastcall void memcpy_image_initrd(); |
pascal@20538 | 172 extern _fastcall void storepage(u32 *dst); |
pascal@20538 | 173 extern _fastcall void reset_bufv(unsigned long *p); |
pascal@19571 | 174 extern "C" unsigned long* prev_bufv(); |
pascal@19571 | 175 extern "C" unsigned long* next_bufv(); |
pascal@19571 | 176 #define next(p) p = next_bufv() |
pascal@19571 | 177 #define prev(p) p = prev_bufv() |
pascal@19515 | 178 extern char vcpi; |
pascal@22170 | 179 extern char version_string[]; |
pascal@19515 | 180 // External asm helpers |
pascal@23992 | 181 #ifdef WITH_XMM_ALLOC |
pascal@20538 | 182 extern _fastcall void xmm_alloc(struct image_himem *m); |
pascal@23992 | 183 #endif |
pascal@19515 | 184 extern "C" u32 memtop(); |
pascal@19515 | 185 extern "C" void enable_a20_or_die(); |
pascal@24013 | 186 extern "C" void far vm2rm(); |
pascal@19515 | 187 extern "C" void hook_int15_88(); |
pascal@19515 | 188 |
pascal@19515 | 189 // C++ helpers |
pascal@19515 | 190 #ifdef DEBUG |
pascal@19515 | 191 extern "C" void hang(); |
pascal@19515 | 192 #endif |
pascal@19515 | 193 |
pascal@19515 | 194 void load_image(struct image_himem *m); |
pascal@21649 | 195 extern _fastcall void open_image(struct image_himem *m, const char *name); |
pascal@20538 | 196 extern _fastcall int read_image(struct image_himem *m); |
pascal@22170 | 197 void load_kernel(); |
pascal@19515 | 198 void load_initrd(); |
pascal@19903 | 199 extern "C" void boot_kernel(); |