2 Copyright © 1995-2007, The AROS Development Team. All rights reserved.
6 #include <exec/alerts.h>
7 #include <exec/types.h>
8 #include <exec/execbase.h>
9 #include <exec/tasks.h>
10 #include <dos/dosextens.h>
15 /* m68k relative addresses must *not* start with a '#' */
16 #define DEFINE(sym, val) \
17 asm volatile("\n#define " #sym " %c0 ": : "i" (val))
19 #define DEFINE(sym, val) \
20 asm volatile("\n#define " #sym " %0 ": : "i" (val))
23 #define FuncOffset(x) (int)__AROS_GETJUMPVEC(0,x)
26 asm volatile("\n/* Macros */" ::);
28 asm volatile("\n#define AROS_CSYMNAME(n) n\n" ::);
29 asm volatile("\n#define AROS_CDEFNAME(n) n\n" ::);
30 asm volatile("\n#define AROS_SLIB_ENTRY(n,s) s ## _ ## n\n" ::);
32 asm volatile("\n#define _FUNCTION(n) .type n,@function" ::);
33 asm volatile("\n#define _ALIGNMENT .balign %0" :: "i" (AROS_WORSTALIGN
));
35 asm volatile("\n/* ExecBase */" ::);
36 DEFINE(AttnResched
, offsetof (struct ExecBase
, AttnResched
));
37 DEFINE(IDNestCnt
, offsetof (struct ExecBase
, IDNestCnt
));
38 DEFINE(TDNestCnt
, offsetof (struct ExecBase
, TDNestCnt
));
39 DEFINE(TaskReady
, offsetof (struct ExecBase
, TaskReady
));
40 DEFINE(ThisTask
, offsetof (struct ExecBase
, ThisTask
));
41 DEFINE(SysFlags
, offsetof (struct ExecBase
, SysFlags
));
42 DEFINE(IdleCount
, offsetof (struct ExecBase
, IdleCount
));
43 DEFINE(DispCount
, offsetof (struct ExecBase
, DispCount
));
44 DEFINE(Quantum
, offsetof (struct ExecBase
, Quantum
));
45 DEFINE(Elapsed
, offsetof (struct ExecBase
, Elapsed
));
47 asm volatile("\n/* struct Task */" ::);
48 DEFINE(tc_State
, offsetof (struct Task
, tc_State
));
49 DEFINE(tc_Flags
, offsetof (struct Task
, tc_Flags
));
50 DEFINE(tc_ExceptCode
, offsetof (struct Task
, tc_ExceptCode
));
51 DEFINE(tc_ExceptData
, offsetof (struct Task
, tc_ExceptData
));
52 DEFINE(tc_SigExcept
, offsetof (struct Task
, tc_SigExcept
));
53 DEFINE(tc_SigRecvd
, offsetof (struct Task
, tc_SigRecvd
));
54 DEFINE(tc_Launch
, offsetof (struct Task
, tc_Launch
));
55 DEFINE(tc_Switch
, offsetof (struct Task
, tc_Switch
));
56 DEFINE(tc_SPReg
, offsetof (struct Task
, tc_SPReg
));
57 DEFINE(tc_SPLower
, offsetof (struct Task
, tc_SPLower
));
58 DEFINE(tc_SPUpper
, offsetof (struct Task
, tc_SPUpper
));
59 DEFINE(tc_IDNestCnt
, offsetof (struct Task
, tc_IDNestCnt
));
60 DEFINE(tc_ETask
, offsetof (struct Task
, tc_UnionETask
.tc_ETask
));
61 DEFINE(iet_Context
, sizeof (struct ETask
) + 4);
63 asm volatile("\n/* struct DosBase */" ::);
64 DEFINE(dl_SysBase
, offsetof (struct DosLibrary
, dl_SysBase
));
66 asm volatile("\n/* struct StackSwapStruct */" ::);
67 DEFINE(stk_Lower
, offsetof (struct StackSwapStruct
, stk_Lower
));
68 DEFINE(stk_Upper
, offsetof (struct StackSwapStruct
, stk_Upper
));
69 DEFINE(stk_Pointer
, offsetof (struct StackSwapStruct
, stk_Pointer
));
71 asm volatile("\n/* Task Flags */" ::);
72 DEFINE(TS_RUN
, TS_RUN
);
73 DEFINE(TS_READY
, TS_READY
);
74 DEFINE(TF_EXCEPT
, TF_EXCEPT
);
75 DEFINE(TF_SWITCH
, TF_SWITCH
);
76 DEFINE(TF_LAUNCH
, TF_LAUNCH
);
78 asm volatile("\n/* Exec functions */" ::);
79 DEFINE(Reschedule
, FuncOffset (8));
80 DEFINE(Switch
, FuncOffset (9));
81 DEFINE(Dispatch
, FuncOffset (10));
82 DEFINE(Exception
, FuncOffset (11));
83 DEFINE(Alert
, FuncOffset (18));
84 DEFINE(Disable
, FuncOffset (20));
85 DEFINE(Enable
, FuncOffset (21));
86 DEFINE(Enqueue
, FuncOffset (45));
87 DEFINE(FindTask
, FuncOffset (49));
88 DEFINE(StackSwap
, FuncOffset (122));
90 asm volatile("\n/* Constants */" ::);
91 DEFINE(AT_DeadEnd
, AT_DeadEnd
);
92 DEFINE(AN_StackProbe
, AN_StackProbe
);
94 DEFINE(ln_Succ
, offsetof (struct Node
, ln_Succ
));
95 DEFINE(ln_Pred
, offsetof (struct Node
, ln_Pred
));
96 DEFINE(ln_Pri
, offsetof (struct Node
, ln_Pri
));
98 DEFINE(lh_Head
, offsetof (struct List
, lh_Head
));
99 DEFINE(lh_TailPred
, offsetof (struct List
, lh_TailPred
));
103 asm volatile("\n#define UseExecstubs 1" ::);