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

linld: add quick boot switch
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Feb 18 08:56:43 2021 +0000 (2021-02-18)
parents 5c1ce90eb1d6
children 61df94a0fa43
rev   line source
pascal@19515 1 // This file is distributed under GPL
pascal@19515 2 //
pascal@19515 3 // Common defs not belonging to CRTL
pascal@19515 4
pascal@21757 5 #define NL "\n"
pascal@19515 6 #define VERSION_STR "0.97"
pascal@19515 7
pascal@19515 8 #if 0 // DEBUG
pascal@19515 9 #undef NDEBUG
pascal@19515 10 #define DEBUG
pascal@19515 11 #define static
pascal@19515 12 #else // not DEBUG
pascal@19515 13 #define NDEBUG
pascal@19515 14 #undef DEBUG
pascal@19515 15 #endif
pascal@19515 16
pascal@19515 17 typedef unsigned long u32; typedef signed long s32;
pascal@19515 18 typedef unsigned short u16; typedef signed short s16;
pascal@19515 19 typedef unsigned char u8; typedef signed char s8;
pascal@19515 20
pascal@19515 21 const u16 _16k = 16*1024u;
pascal@19515 22 const u16 _32k = 32*1024u;
pascal@19515 23 const u32 _64k = 64*1024ul;
pascal@19515 24 const u32 _1m = 1024ul*1024ul;
pascal@19580 25 const u32 _32m = 32*1024ul*1024ul;
pascal@19580 26 const u32 _64m = 64*1024ul*1024ul;
pascal@19515 27
pascal@19515 28 const PAGE_BITS = 12;
pascal@19515 29 const PAGE_SIZE = 1<<PAGE_BITS;
pascal@19515 30 const PAGE_MASK = PAGE_SIZE-1;
pascal@19515 31
pascal@19515 32 // WARNING!
pascal@19515 33 // BC 3.1 bug: seg() will generate incorrect code if inlined!
pascal@19515 34 // replaced by _dirty_ hack for now
pascal@19515 35 // u16 seg(const void far* p) { return FP_SEG(p); }
pascal@19515 36 inline u16 seg(const void far*) { return _DS; }
pascal@19515 37
pascal@19515 38 inline u16 ofs(const void* p) { return FP_OFF(p); }
pascal@19515 39
pascal@19515 40 extern struct image_himem {
pascal@19515 41 int fd;
pascal@19515 42 u32 fallback;
pascal@19515 43 u32 size;
pascal@19515 44 u32 remaining;
pascal@19515 45 u32 buf;
pascal@19515 46 u32 *bufv;
pascal@19515 47 u32 chunk_size;
pascal@19515 48 u16 state;
pascal@19538 49 u16 fd2close;
pascal@19899 50 } imgs[2];
pascal@19899 51 #define pm (imgs[0])
pascal@19899 52 #define initrd (imgs[1])
pascal@20538 53 #define pm2initrd(p) (p+1)
pascal@19515 54
pascal@22288 55 extern u8 pm_low;
pascal@23996 56
pascal@21758 57 extern u32 far *initrd_desc;
pascal@23996 58 #define cmdline (cmdstr[0])
pascal@23996 59 #define kernel_name (cmdstr[1])
pascal@23996 60 #define initrd_name (cmdstr[2])
pascal@23996 61 #define isofile (cmdstr[3])
pascal@23996 62 extern const char* cmdstr[4];
pascal@23996 63
pascal@23996 64 #define root_dev (cmdnum[0])
pascal@23996 65 #define vid_mode (cmdnum[1]) // -3 = ask, -2 = Extended VGA, -1 = Normal VGA, n = as "n" was pressed
pascal@23996 66 #define topmem (cmdnum[2])
pascal@23996 67 #define base_himem (cmdnum[3])
pascal@23999 68 #define skip_alloc (* (char *) &cmdnum[4])
pascal@24013 69 #ifdef QUICK_BOOT
pascal@24013 70 extern u32 cmdnum[7];
pascal@24013 71 #else
pascal@23999 72 extern u32 cmdnum[5];
pascal@24013 73 #endif
pascal@19580 74
pascal@24013 75 extern _fastcall void memcpy_image_kernel();
pascal@24013 76 extern _fastcall void memcpy_image_initrd();
pascal@20538 77 extern _fastcall void storepage(u32 *dst);
pascal@20538 78 extern _fastcall void reset_bufv(unsigned long *p);
pascal@19571 79 extern "C" unsigned long* prev_bufv();
pascal@19571 80 extern "C" unsigned long* next_bufv();
pascal@19571 81 #define next(p) p = next_bufv()
pascal@19571 82 #define prev(p) p = prev_bufv()
pascal@19515 83 extern char vcpi;
pascal@22170 84 extern char version_string[];
pascal@19515 85 // External asm helpers
pascal@23992 86 #ifdef WITH_XMM_ALLOC
pascal@20538 87 extern _fastcall void xmm_alloc(struct image_himem *m);
pascal@23992 88 #endif
pascal@19515 89 extern "C" u32 memtop();
pascal@19515 90 extern "C" void enable_a20_or_die();
pascal@24013 91 extern "C" void far vm2rm();
pascal@19515 92 extern "C" void hook_int15_88();
pascal@19515 93
pascal@19515 94 // C++ helpers
pascal@19515 95 #ifdef DEBUG
pascal@19515 96 extern "C" void hang();
pascal@19515 97 #endif
pascal@19515 98
pascal@19515 99 void load_image(struct image_himem *m);
pascal@21649 100 extern _fastcall void open_image(struct image_himem *m, const char *name);
pascal@20538 101 extern _fastcall int read_image(struct image_himem *m);
pascal@22170 102 void load_kernel();
pascal@19515 103 void load_initrd();
pascal@19903 104 extern "C" void boot_kernel();