diff options
author | Robert de Bath <rdebath@poboxes.com> | 1996-03-24 17:45:55 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2013-10-23 23:29:43 +0200 |
commit | fe22c37817ce338fbbc90b239320248c270957fa (patch) | |
tree | d9550410c4a20bdd382fcc58d2d3d7c5e04e5245 /elksemu/elks.h | |
parent | a7aba15e8efffb1c5d3097656f1a93955a64f01f (diff) | |
parent | 42192453ea219b80d0bf9f41e51e36d3d4d0740b (diff) | |
download | dev86-fe22c37817ce338fbbc90b239320248c270957fa.tar.gz |
Import Dev86-0.0.4.tar.gzv0.0.4
Diffstat (limited to 'elksemu/elks.h')
-rw-r--r-- | elksemu/elks.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/elksemu/elks.h b/elksemu/elks.h new file mode 100644 index 0000000..6d52470 --- /dev/null +++ b/elksemu/elks.h @@ -0,0 +1,96 @@ +/* + * Definitions for emulating ELKS + */ + +#define ELKS_CS_OFFSET 0 +#define ELKS_DS_OFFSET 0 /* For split I/D */ + +#define HZ 100 + +#define ELKS_SIG_IGN (-1) +#define ELKS_SIG_DFL 0 + +#define WRITE_USPACE 0 +#define READ_USPACE 1 + +#if !__ELF__ +#define __AOUT__ 1 +#endif + +/* + * Minix view of stat(). We have to squash a bit here and give + * wrong values with inode >65535 etc + */ + +struct elks_stat +{ + unsigned short st_dev; + unsigned short st_inode; + unsigned short st_mode; + unsigned short st_nlink; + unsigned short st_uid; + unsigned short st_gid; + unsigned short st_rdev; + int st_size; + int st_atime; + int st_mtime; + int st_ctime; +}; + + +/* + * Minix ioctl list + */ + +#define ELKS_TIOCGETP (('t'<<8)|8) +#define ELKS_TIOCSETP (('t'<<8)|9) +#define ELKS_TIOCGETC (('t'<<8)|18) +#define ELKS_TIOCSETC (('t'<<8)|17) +#define ELKS_TIOCFLUSH (('t'<<8)|16) + +/* + * fcntl list + */ + +#define ELKS_F_DUPFD 0 +#define ELKS_F_GETFD 1 +#define ELKS_F_SETFD 2 +#define ELKS_F_GETFL 3 +#define ELKS_F_SETFL 4 +#define ELKS_F_GETLK 5 +#define ELKS_F_SETLK 6 +#define ELKS_F_SETLKW 7 + +/* + * Elks binary formats + */ + +#define EXEC_HEADER_SIZE 32 + +struct elks_exec_hdr +{ + unsigned long type; +#define ELKS_COMBID 0x04100301L +#define ELKS_SPLITID 0x04200301L + unsigned long hlen; + unsigned long tseg; + unsigned long dseg; + unsigned long bseg; + unsigned long unused; + unsigned long chmem; + unsigned long unused2; +}; + +#define PARAGRAPH(x) (((unsigned long)(x))>>4) +#define ELKS_DSEG(x) ((unsigned char *)(((x)&0xFFFF)+(elks_cpu.regs.ds<<4))) + +#define ELKS_PTR(_t,x) ((_t *) ((elks_cpu.regs.ds<<4)+((x)&0xFFFF)) ) +#define ELKS_PEEK(_t,x) (*((_t *) ((elks_cpu.regs.ds<<4)+((x)&0xFFFF)) )) +#define ELKS_POKE(_t,x,_v) \ + (*((_t *) ((elks_cpu.regs.ds<<4)+((x)&0xFFFF)) ) = (_v)) + +extern unsigned char * elks_base; +extern volatile struct vm86_struct elks_cpu; + +void db_printf(const char *, ...); +int elks_syscall(void); |