wok annotate linld/stuff/src/COMMON.H @ rev 24998

Up rp-pppoe (3.15)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon May 16 10:11:22 2022 +0000 (2022-05-16)
parents be9fc3c4c575
children
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@24584 134 #define CMDNUM_EXTRA "-r|-c|"
pascal@24564 135 #define CMDNUM 6
pascal@24564 136 # else
pascal@24584 137 #define CMDNUM_EXTRA "-c|"
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@24584 147 # ifdef VCPI
pascal@24584 148 #define CMDNUM_EXTRA "-r|-c|-q~-v~"
pascal@24564 149 #define CMDNUM 8
pascal@24584 150 # else
pascal@24584 151 #define CMDNUM_EXTRA "-r|-c|-q~"
pascal@24584 152 #define CMDNUM 7
pascal@24584 153 # endif
pascal@24564 154 # else
pascal@24584 155 # ifdef VCPI
pascal@24564 156 #define CMDNUM_EXTRA "-r|-q~-v~"
pascal@24564 157 #define CMDNUM 7
pascal@24584 158 # else
pascal@24584 159 #define CMDNUM_EXTRA "-r|-q~"
pascal@24584 160 #define CMDNUM 6
pascal@24584 161 # endif
pascal@24564 162 # endif
pascal@24564 163 # else
pascal@24564 164 # ifdef CPUTYPE
pascal@24584 165 # ifdef VCPI
pascal@24584 166 #define CMDNUM_EXTRA "-c|-q~-v~"
pascal@24564 167 #define CMDNUM 7
pascal@24584 168 # else
pascal@24584 169 #define CMDNUM_EXTRA "-c|-q~"
pascal@24584 170 #define CMDNUM 6
pascal@24584 171 # endif
pascal@24564 172 # else
pascal@24584 173 # ifdef VCPI
pascal@24564 174 #define CMDNUM_EXTRA "-q~-v~"
pascal@24564 175 #define CMDNUM 6
pascal@24584 176 # else
pascal@24584 177 #define CMDNUM_EXTRA "-q~"
pascal@24584 178 #define CMDNUM 5
pascal@24584 179 # endif
pascal@24564 180 # endif
pascal@24564 181 # endif
pascal@24584 182 # ifdef VCPI
pascal@24067 183 +2
pascal@24584 184 # else
pascal@24584 185 +1
pascal@24584 186 # endif
pascal@24013 187 #endif
pascal@24584 188 #ifdef WITH_XMM_ALLOC
pascal@24584 189 +1
pascal@24564 190 #define skip_alloc (* (char *) &cmdnum[CMDNUM])
pascal@24584 191 #endif
pascal@24584 192 ];
pascal@24564 193 #ifdef CPUTYPE
pascal@24564 194 extern unsigned cputype;
pascal@24564 195 #endif
pascal@19580 196
pascal@24013 197 extern _fastcall void memcpy_image_kernel();
pascal@24013 198 extern _fastcall void memcpy_image_initrd();
pascal@20538 199 extern _fastcall void storepage(u32 *dst);
pascal@20538 200 extern _fastcall void reset_bufv(unsigned long *p);
pascal@19571 201 extern "C" unsigned long* prev_bufv();
pascal@19571 202 extern "C" unsigned long* next_bufv();
pascal@19571 203 #define next(p) p = next_bufv()
pascal@19571 204 #define prev(p) p = prev_bufv()
pascal@19515 205 extern char vcpi;
pascal@22170 206 extern char version_string[];
pascal@19515 207 // External asm helpers
pascal@23992 208 #ifdef WITH_XMM_ALLOC
pascal@20538 209 extern _fastcall void xmm_alloc(struct image_himem *m);
pascal@23992 210 #endif
pascal@24579 211 extern "C" u32 topload();
pascal@19515 212 extern "C" u32 memtop();
pascal@19515 213 extern "C" void enable_a20_or_die();
pascal@24013 214 extern "C" void far vm2rm();
pascal@19515 215 extern "C" void hook_int15_88();
pascal@19515 216
pascal@19515 217 // C++ helpers
pascal@19515 218 #ifdef DEBUG
pascal@19515 219 extern "C" void hang();
pascal@19515 220 #endif
pascal@19515 221
pascal@19515 222 void load_image(struct image_himem *m);
pascal@21649 223 extern _fastcall void open_image(struct image_himem *m, const char *name);
pascal@20538 224 extern _fastcall int read_image(struct image_himem *m);
pascal@22170 225 void load_kernel();
pascal@19515 226 void load_initrd();
pascal@19903 227 extern "C" void boot_kernel();