wok annotate linld/stuff/src/CRTL.H @ rev 19515

linld: multi initrd support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Tue Nov 22 21:19:01 2016 +0100 (2016-11-22)
parents
children 7f92b23984dc
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);