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

linld: add 'linld <kernel> <cmdline>' syntax
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Dec 02 12:37:59 2016 +0100 (2016-12-02)
parents bb42796dcd3b
children 31c5cbbd9380
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@19538 12 const A_RDONLY = 1; // for fileattr()
pascal@19538 13 const A_HIDDEN = 2;
pascal@19538 14 const A_SYSTEM = 4;
pascal@19538 15 const A_LABEL = 8;
pascal@19538 16 const A_DIRECTORY = 16;
pascal@19538 17 const A_ARCHIVE = 32;
pascal@19538 18
pascal@19538 19
pascal@19515 20 const O_RDONLY = 0; // for open()
pascal@19515 21 const O_BINARY = 0;
pascal@19515 22
pascal@19515 23 const SEEK_SET = 0; // for lseek()
pascal@19515 24 const SEEK_CUR = 1;
pascal@19515 25 const SEEK_END = 2;
pascal@19515 26
pascal@19515 27 extern char text_start; extern char text_end;
pascal@19515 28 extern char data_start; extern char data_end;
pascal@19515 29 extern char bss_start; extern char bss_end;
pascal@19515 30 extern char* heap_top;
pascal@19515 31
pascal@19515 32 extern int ximage_size, ximage_fd;
pascal@19515 33
pascal@19515 34 void parse_cmdline();
pascal@19538 35 extern "C" char* strcpy(const char* a,const char* b);
pascal@19538 36 extern "C" char* strcat(const char* a,const char* b);
pascal@19538 37 extern "C" char* strcatb(const char* a,const char* b);
pascal@19515 38 extern "C" int strhead(const char* a,const char* b);
pascal@19538 39 extern "C" int fileattr(const char* name);
pascal@19515 40 extern "C" int open(const char* name, int flags);
pascal@19515 41 extern "C" int close(int fd);
pascal@19515 42 extern "C" void exit(int n);
pascal@19515 43 extern "C" void abort();
pascal@19515 44 extern "C" int read(int fd, void* data, int sz);
pascal@19515 45 extern "C" int write(int fd, const void* data, int sz);
pascal@19515 46 extern "C" long lseek(int fd, long sz, int dir);
pascal@19515 47 extern "C" void* malloc(unsigned sz);
pascal@19515 48 extern "C" void puts(const char* s);
pascal@19515 49 extern "C" void putsz(const char* s);
pascal@19515 50 extern "C" unsigned long strtol(const char *s);
pascal@19515 51
pascal@19515 52 // Extensions
pascal@19515 53 //static void barrier() {}
pascal@19515 54 //static void cli() { asm { cli } }
pascal@19515 55 //static void sti() { asm { sti } }
pascal@19515 56 #define barrier() do {} while(0)
pascal@19515 57 #define cli() do { asm { cli } } while(0)
pascal@19515 58 #define sti() do { asm { sti } } while(0)
pascal@19515 59 #define int3() do { asm { db 0cch } } while(0)
pascal@19515 60 #define nop() do { asm { db 90h } } while(0)
pascal@19515 61 extern char no_exit;
pascal@19515 62 extern "C" int die(const char* msg);
pascal@19515 63 extern "C" char* malloc_or_die(unsigned size);
pascal@19538 64 extern "C" unsigned long* malloc_bufv_or_die(struct image_himem *m);