rev |
line source |
pascal@19515
|
1 // This file is distributed under GPL
|
pascal@19515
|
2 //
|
pascal@19515
|
3 // Bare bones of C runtime library
|
pascal@19515
|
4
|
pascal@19515
|
5 #define MK_FP(seg,ofs) ((void _seg *)(seg) + (void near *)(ofs))
|
pascal@19515
|
6 #define FP_SEG(fp) ((unsigned) (void _seg*) (void far*)(fp))
|
pascal@19515
|
7 #define FP_OFF(fp) ((unsigned) (fp))
|
pascal@19515
|
8
|
pascal@19515
|
9 const unsigned MIN_STACK = 0x400;
|
pascal@19515
|
10 const unsigned MAX_MALLOC = 0xF000;
|
pascal@19515
|
11
|
pascal@19515
|
12 const O_RDONLY = 0; // for open()
|
pascal@19515
|
13 const O_BINARY = 0;
|
pascal@19515
|
14
|
pascal@19515
|
15 const SEEK_SET = 0; // for lseek()
|
pascal@19515
|
16 const SEEK_CUR = 1;
|
pascal@19515
|
17 const SEEK_END = 2;
|
pascal@19515
|
18
|
pascal@19515
|
19 extern char text_start; extern char text_end;
|
pascal@19515
|
20 extern char data_start; extern char data_end;
|
pascal@19515
|
21 extern char bss_start; extern char bss_end;
|
pascal@19515
|
22 extern char* heap_top;
|
pascal@19515
|
23
|
pascal@19515
|
24 extern int ximage_size, ximage_fd;
|
pascal@19515
|
25
|
pascal@19515
|
26 void parse_cmdline();
|
pascal@19515
|
27 extern "C" int strlen(const char* s);
|
pascal@19515
|
28 extern "C" int strhead(const char* a,const char* b);
|
pascal@19515
|
29 extern "C" int open(const char* name, int flags);
|
pascal@19515
|
30 extern "C" int close(int fd);
|
pascal@19515
|
31 extern "C" void exit(int n);
|
pascal@19515
|
32 extern "C" void abort();
|
pascal@19515
|
33 extern "C" int read(int fd, void* data, int sz);
|
pascal@19515
|
34 extern "C" int write(int fd, const void* data, int sz);
|
pascal@19515
|
35 extern "C" long lseek(int fd, long sz, int dir);
|
pascal@19515
|
36 extern "C" long rewind(int fd);
|
pascal@19515
|
37 extern "C" void* malloc(unsigned sz);
|
pascal@19515
|
38 extern "C" void puts(const char* s);
|
pascal@19515
|
39 extern "C" void putsz(const char* s);
|
pascal@19515
|
40 extern "C" unsigned long strtol(const char *s);
|
pascal@19515
|
41
|
pascal@19515
|
42 // Extensions
|
pascal@19515
|
43 //static void barrier() {}
|
pascal@19515
|
44 //static void cli() { asm { cli } }
|
pascal@19515
|
45 //static void sti() { asm { sti } }
|
pascal@19515
|
46 #define barrier() do {} while(0)
|
pascal@19515
|
47 #define cli() do { asm { cli } } while(0)
|
pascal@19515
|
48 #define sti() do { asm { sti } } while(0)
|
pascal@19515
|
49 #define int3() do { asm { db 0cch } } while(0)
|
pascal@19515
|
50 #define nop() do { asm { db 90h } } while(0)
|
pascal@19515
|
51 extern char no_exit;
|
pascal@19515
|
52 extern "C" int die(const char* msg);
|
pascal@19515
|
53 extern "C" char* malloc_or_die(unsigned size);
|