wok view linld/stuff/src/COMMON.H @ rev 20528

linld: pascal convention calls
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Nov 09 16:37:55 2018 +0100 (2018-11-09)
parents a5b6457fb890
children 65366955881f
line source
1 // This file is distributed under GPL
2 //
3 // Common defs not belonging to CRTL
5 #define NL "\r\n"
6 #define VERSION_STR "0.97"
8 #if 0 // DEBUG
9 #undef NDEBUG
10 #define DEBUG
11 #define static
12 #else // not DEBUG
13 #define NDEBUG
14 #undef DEBUG
15 #endif
17 typedef unsigned long u32; typedef signed long s32;
18 typedef unsigned short u16; typedef signed short s16;
19 typedef unsigned char u8; typedef signed char s8;
21 const u16 _16k = 16*1024u;
22 const u16 _32k = 32*1024u;
23 const u32 _64k = 64*1024ul;
24 const u32 _1m = 1024ul*1024ul;
25 const u32 _32m = 32*1024ul*1024ul;
26 const u32 _64m = 64*1024ul*1024ul;
28 const PAGE_BITS = 12;
29 const PAGE_SIZE = 1<<PAGE_BITS;
30 const PAGE_MASK = PAGE_SIZE-1;
32 // WARNING!
33 // BC 3.1 bug: seg() will generate incorrect code if inlined!
34 // replaced by _dirty_ hack for now
35 // u16 seg(const void far* p) { return FP_SEG(p); }
36 inline u16 seg(const void far*) { return _DS; }
38 inline u16 ofs(const void* p) { return FP_OFF(p); }
40 extern struct image_himem {
41 int fd;
42 u32 fallback;
43 u32 size;
44 u32 remaining;
45 u32 buf;
46 u32 *bufv;
47 const char *errmsg;
48 u32 chunk_size;
49 void (*next_chunk)(struct image_himem *);
50 u16 state;
51 u16 fd2close;
52 } imgs[2];
53 #define pm (imgs[0])
54 #define initrd (imgs[1])
56 extern int skip_alloc;
57 extern u32 base_himem;
59 extern pascal void memcpy_image(struct image_himem *m);
60 extern pascal void storepage(u32 *dst, u16 src);
61 #ifdef LARGE_IMAGES
62 extern pascal void reset_bufv(unsigned long *p);
63 extern "C" unsigned long* prev_bufv();
64 extern "C" unsigned long* next_bufv();
65 #define next(p) p = next_bufv()
66 #define prev(p) p = prev_bufv()
67 #else
68 #define reset_bufv(p)
69 #define next(p) ++p
70 #define prev(p) --p
71 #endif
72 extern char vcpi;
73 extern const char* kernel_name;
74 extern const char* initrd_name;
75 extern const char* cmdline;
76 extern u32 root_dev;
77 extern u32 vid_mode;
78 // External asm helpers
79 extern pascal void xmm_alloc(struct image_himem *m);
80 extern u32 topmem;
81 extern "C" u32 memtop();
82 extern "C" void enable_a20_or_die();
83 extern "C" void vm2rm();
84 extern "C" void hook_int15_88();
86 // C++ helpers
87 #ifdef DEBUG
88 extern "C" void hang();
89 #endif
91 void load_image(struct image_himem *m);
92 extern pascal void open_image(const char *name, struct image_himem *m);
93 extern pascal int read_image(struct image_himem *m, void* data, int sz);
94 char* load_kernel();
95 void load_initrd();
96 extern "C" void boot_kernel();