|
|
1.1 root 1: /*---------------------------------------------------------------------------+
2: | fpu_system.h |
3: | |
4: | Copyright (C) 1992 W. Metzenthen, 22 Parker St, Ormond, Vic 3163, |
5: | Australia. E-mail [email protected] |
6: | |
7: +---------------------------------------------------------------------------*/
8:
9: #ifndef _FPU_SYSTEM_H
10: #define _FPU_SYSTEM_H
11:
12: /* system dependent definitions */
13: #ifdef COHERENT
14: #include <sys/reg.h>
15: #include <ieeefp.h>
16:
17: extern int printf(const char * fmt, ...);
18: #define NULL ((void *)0)
19:
20: /* FPU_info will be a pointer to _fpemstate */
21: /* current will be a pointer to _fpstackframe */
22:
23: #define FPU_CS (*(unsigned short *) &(emCurrent->regs[CS]))
24: #define FPU_DS (*(unsigned short *) &(emCurrent->regs[DS]))
25: #define FPU_EAX (emCurrent->regs[EAX])
26: #define FPU_EFLAGS (emCurrent->regs[EFL])
27: #define FPU_EIP (emCurrent->regs[EIP])
28:
29: #define FPU_lookahead (FPU_info->lookahead)
30: #define FPU_entry_eip (FPU_info->entry_eip)
31: #define fpregs (FPU_info->regs)
32: #define top (FPU_info->top)
33: #if 0
34: #define FPU_ORIG_EIP (FPU_info->ipoff)
35: #else
36: #define FPU_ORIG_EIP FPU_EIP
37: #endif
38: #define status_word (FPU_info->sw)
39: #define control_word (FPU_info->cw)
40:
41: #define ip_offset (FPU_info->ipoff)
42: #define cs_selector (FPU_info->cssel)
43: #define data_operand_offset (FPU_info->dataoff)
44: #define operand_selector (FPU_info->datasel)
45:
46: extern struct _fpemstate *FPU_info;
47: extern struct _fpstackframe *emCurrent;
48:
49: #else
50:
51: #include <linux/sched.h>
52: #include <linux/kernel.h>
53:
54: #define I387 (emCurrent->tss.i387)
55: #define FPU_info (I387.soft.info)
56:
57: #define FPU_CS (*(unsigned short *) &(FPU_info->___cs))
58: #define FPU_DS (*(unsigned short *) &(FPU_info->___ds))
59: #define FPU_EAX (FPU_info->___eax)
60: #define FPU_EFLAGS (FPU_info->___eflags)
61: #define FPU_EIP (FPU_info->___eip)
62: #define FPU_ORIG_EIP (FPU_info->___orig_eip)
63:
64: #define FPU_lookahead (I387.soft.lookahead)
65: #define FPU_entry_eip (I387.soft.entry_eip)
66:
67: #define status_word (I387.soft.swd)
68: #define control_word (I387.soft.cwd)
69: #define fpregs (I387.soft.regs)
70: #define top (I387.soft.top)
71:
72: #define ip_offset (I387.soft.fip)
73: #define cs_selector (I387.soft.fcs)
74: #define data_operand_offset (I387.soft.foo)
75: #define operand_selector (I387.soft.fos)
76:
77: #endif
78: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.