summaryrefslogtreecommitdiff
path: root/elksemu/elks.h
diff options
context:
space:
mode:
authorRobert de Bath <rdebath@poboxes.com>1996-03-24 17:45:55 +0100
committerLubomir Rintel <lkundrak@v3.sk>2013-10-23 23:29:43 +0200
commitfe22c37817ce338fbbc90b239320248c270957fa (patch)
treed9550410c4a20bdd382fcc58d2d3d7c5e04e5245 /elksemu/elks.h
parenta7aba15e8efffb1c5d3097656f1a93955a64f01f (diff)
parent42192453ea219b80d0bf9f41e51e36d3d4d0740b (diff)
downloaddev86-fe22c37817ce338fbbc90b239320248c270957fa.tar.gz
Import Dev86-0.0.4.tar.gzv0.0.4
Diffstat (limited to 'elksemu/elks.h')
-rw-r--r--elksemu/elks.h96
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);