wok-current annotate linld/stuff/src/COMMON.H @ rev 22170

linld: clear heap in moverm
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Nov 08 10:47:52 2019 +0100 (2019-11-08)
parents d8f824013cf6
children 65ea21135647
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 const char *errmsg;
pascal@19515 48 u32 chunk_size;
pascal@19515 49 void (*next_chunk)(struct image_himem *);
pascal@19515 50 u16 state;
pascal@19538 51 u16 fd2close;
pascal@19899 52 } imgs[2];
pascal@19899 53 #define pm (imgs[0])
pascal@19899 54 #define initrd (imgs[1])
pascal@20538 55 #define pm2initrd(p) (p+1)
pascal@19515 56
pascal@19580 57 extern int skip_alloc;
pascal@19580 58 extern u32 base_himem;
pascal@21758 59 extern u32 far *initrd_desc;
pascal@19580 60
pascal@20538 61 extern _fastcall void memcpy_image(struct image_himem *m);
pascal@20538 62 extern _fastcall void storepage(u32 *dst);
pascal@19571 63 #ifdef LARGE_IMAGES
pascal@20538 64 extern _fastcall void reset_bufv(unsigned long *p);
pascal@19571 65 extern "C" unsigned long* prev_bufv();
pascal@19571 66 extern "C" unsigned long* next_bufv();
pascal@19571 67 #define next(p) p = next_bufv()
pascal@19571 68 #define prev(p) p = prev_bufv()
pascal@19571 69 #else
pascal@19571 70 #define reset_bufv(p)
pascal@19571 71 #define next(p) ++p
pascal@19571 72 #define prev(p) --p
pascal@19571 73 #endif
pascal@19515 74 extern char vcpi;
pascal@22170 75 extern char version_string[];
pascal@19515 76 extern const char* kernel_name;
pascal@19515 77 extern const char* initrd_name;
pascal@19515 78 extern const char* cmdline;
pascal@20528 79 extern u32 root_dev;
pascal@20528 80 extern u32 vid_mode;
pascal@19515 81 // External asm helpers
pascal@20538 82 extern _fastcall void xmm_alloc(struct image_himem *m);
pascal@19515 83 extern u32 topmem;
pascal@19515 84 extern "C" u32 memtop();
pascal@19515 85 extern "C" void enable_a20_or_die();
pascal@19515 86 extern "C" void vm2rm();
pascal@19515 87 extern "C" void hook_int15_88();
pascal@19515 88
pascal@19515 89 // C++ helpers
pascal@19515 90 #ifdef DEBUG
pascal@19515 91 extern "C" void hang();
pascal@19515 92 #endif
pascal@19515 93
pascal@19515 94 void load_image(struct image_himem *m);
pascal@21649 95 extern _fastcall void open_image(struct image_himem *m, const char *name);
pascal@20538 96 extern _fastcall int read_image(struct image_himem *m);
pascal@22170 97 void load_kernel();
pascal@19515 98 void load_initrd();
pascal@19903 99 extern "C" void boot_kernel();