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

linld: add isoboot
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun May 24 16:16:52 2020 +0000 (2020-05-24)
parents 53c1379e13fa
children a946c1651082
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@20528 8 #define NULL 0
pascal@19515 9
pascal@19515 10 const unsigned MIN_STACK = 0x400;
pascal@19515 11 const unsigned MAX_MALLOC = 0xF000;
pascal@19515 12
pascal@19636 13 const char O_RDONLY = 0; // for open()
pascal@19636 14 const char O_BINARY = 0;
pascal@19515 15
pascal@19515 16 extern char text_start; extern char text_end;
pascal@19515 17 extern char data_start; extern char data_end;
pascal@19515 18 extern char bss_start; extern char bss_end;
pascal@19515 19 extern char* heap_top;
pascal@20538 20 extern char xfer_buf[4096];
pascal@19515 21
pascal@19515 22 void parse_cmdline();
pascal@20538 23 extern _fastcall void strcatb(const char* a,const char* b);
pascal@21757 24 extern _fastcall void strcpy(const char* a,const char* b);
pascal@20751 25 #ifdef USE_ARGSTR
pascal@20751 26 extern _fastcall int argstr(const char *s, const char keywords[], const char **var);
pascal@20751 27 extern _fastcall int argnum(char *s, const char keywords[], unsigned long *var);
pascal@20751 28 extern _fastcall void set_cmdline(const char *filename);
pascal@23806 29 #ifndef ISOHOOK
pascal@20762 30 #define strhead(a,b) (strstr(a,b) != (int) (a))
pascal@20751 31 #else
pascal@20538 32 extern _fastcall int strhead(const char* a,const char* head);
pascal@20751 33 #endif
pascal@23806 34 #else
pascal@23806 35 extern _fastcall int strhead(const char* a,const char* head);
pascal@23806 36 #endif
pascal@20632 37 extern _fastcall int fileexist(const char* name);
pascal@19546 38 //extern "C" int open(const char* name, int flags);
pascal@20538 39 extern _fastcall int open(const char* name);
pascal@20538 40 extern _fastcall int close(int fd);
pascal@22312 41 extern _fastcall int moverm(unsigned short *p);
pascal@20751 42 extern _fastcall int readrm(struct image_himem *m, int sz);
pascal@20538 43 extern _fastcall int read(int fd, void* data, int sz);
pascal@22632 44 extern _fastcall long rewind(int fd);
pascal@20538 45 extern _fastcall int puts(const char* s);
pascal@21569 46 extern _fastcall unsigned long strtol(const char *s);
pascal@19515 47
pascal@19515 48 // Extensions
pascal@19515 49 #define cli() do { asm { cli } } while(0)
pascal@19515 50 #define sti() do { asm { sti } } while(0)
pascal@19515 51 #define int3() do { asm { db 0cch } } while(0)
pascal@19515 52 #define nop() do { asm { db 90h } } while(0)
pascal@21984 53 extern void exit();
pascal@20538 54 extern _fastcall int die(const char* msg);
pascal@20528 55 //extern "C" char* malloc_or_die(unsigned size);
pascal@20528 56 //extern "C" unsigned long* malloc_bufv_or_die(struct image_himem *m);
pascal@20538 57 extern _fastcall int malloc_or_die(unsigned size);
pascal@20538 58 extern _fastcall int malloc_bufv_or_die(struct image_himem *m);
pascal@21984 59 extern char cpu_features[];
pascal@21984 60 #define CPUMASKLM (0x20)
pascal@21984 61 #define cpuhaslm() (cpu_features[3]&CPUMASKLM)