summaryrefslogtreecommitdiff
path: root/qt/md/axp.h
diff options
context:
space:
mode:
Diffstat (limited to 'qt/md/axp.h')
-rw-r--r--qt/md/axp.h160
1 files changed, 0 insertions, 160 deletions
diff --git a/qt/md/axp.h b/qt/md/axp.h
deleted file mode 100644
index ff951a0d3..000000000
--- a/qt/md/axp.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * QuickThreads -- Threads-building toolkit.
- * Copyright (c) 1993 by David Keppel
- *
- * Permission to use, copy, modify and distribute this software and
- * its documentation for any purpose and without fee is hereby
- * granted, provided that the above copyright notice and this notice
- * appear in all copies. This software is provided as a
- * proof-of-concept and for demonstration purposes; there is no
- * representation about the suitability of this software for any
- * purpose.
- */
-
-#ifndef QT_AXP_H
-#define QT_AXP_H
-
-#define QT_GROW_DOWN
-
-typedef unsigned long qt_word_t;
-
-
-/* Stack layout on the Alpha:
-
- Integer:
-
- Caller-save: r0..r8, r22..r25, r27..r29
- argument/caller-save: r16..r21
- callee-save: r9..r15
- return pc *callee-save*: r26
- stack pointer: r30
- zero: r31
-
- Floating-point:
-
- Caller-save: f0..f1, f10..f15
- argument/caller-save: f16..f21, f22..f30
- callee-save: f2..f9
- zero: f31
-
- Non-varargs:
-
- +---
- | padding
- | f9
- | f8
- | f7
- | f6
- | f5
- | f4
- | f3
- | f2
- | r26
- +---
- | padding
- | r29
- | r15
- | r14
- | r13
- | r12 on startup === `only'
- | r11 on startup === `userf'
- | r10 on startup === `qt'
- | r9 on startup === `qu'
- | r26 on startup === qt_start <--- qt.sp
- +---
-
- Conventions for varargs startup:
-
- | :
- | arg6
- | iarg5
- | :
- | iarg0
- | farg5
- | :
- | farg0
- +---
- | padding
- | r29
- | r15
- | r14
- | r13
- | r12 on startup === `startup'
- | r11 on startup === `vuserf'
- | r10 on startup === `cleanup'
- | r9 on startup === `qt'
- | r26 on startup === qt_vstart <--- qt.sp
- +---
-
- Note: this is a pretty cheap/sleazy way to get things going,
- but ``there must be a better way.'' For instance, some varargs
- parameters could be loaded in to integer registers, or the return
- address could be stored on top of the stack. */
-
-
-/* Stack must be 16-byte aligned. */
-#define QT_STKALIGN (16)
-
-/* How much space is allocated to hold all the crud for
- initialization: 7 registers times 8 bytes/register. */
-
-#define QT_STKBASE (10 * 8)
-#define QT_VSTKBASE QT_STKBASE
-
-
-/* Offsets of various registers. */
-#define QT_R26 0
-#define QT_R9 1
-#define QT_R10 2
-#define QT_R11 3
-#define QT_R12 4
-
-
-/* When a never-before-run thread is restored, the return pc points
- to a fragment of code that starts the thread running. For
- non-vargs functions, it just calls the client's `only' function.
- For varargs functions, it calls the startup, user, and cleanup
- functions.
-
- The varargs startup routine always reads 12 8-byte arguments from
- the stack. If fewer argumets were pushed, the startup routine
- would read off the top of the stack. To prevent errors we always
- allocate enough space. When there are fewer args, the preallocated
- words are simply wasted. */
-
-extern void qt_start(void);
-#define QT_ARGS_MD(sp) (QT_SPUT (sp, QT_R26, qt_start))
-
-
-/* The AXP uses a struct for `va_list', so pass a pointer to the
- struct. This may break some uses of `QT_VARGS', but then we never
- claimed it was totally portable. */
-
-typedef void (qt_function_t)(void);
-
-struct qt_t;
-struct va_list;
-extern struct qt_t *qt_vargs (struct qt_t *sp, int nbytes,
- struct va_list *vargs, void *pt,
- qt_function_t *startup,
- qt_function_t *vuserf,
- qt_function_t *cleanup);
-
-#define QT_VARGS(sp, nbytes, vargs, pt, startup, vuserf, cleanup) \
- (qt_vargs (sp, nbytes, (struct va_list *)(&(vargs)), pt, \
- (qt_function_t *) startup, (qt_function_t *)vuserf, \
- (qt_function_t *)cleanup));
-
-
-/* The *index* (positive offset) of where to put each value. */
-#define QT_ONLY_INDEX (QT_R12)
-#define QT_USER_INDEX (QT_R11)
-#define QT_ARGT_INDEX (QT_R10)
-#define QT_ARGU_INDEX (QT_R9)
-
-#define QT_VCLEANUP_INDEX (QT_R10)
-#define QT_VUSERF_INDEX (QT_R11)
-#define QT_VSTARTUP_INDEX (QT_R12)
-#define QT_VARGT_INDEX (QT_R9)
-
-#endif /* ndef QT_AXP_H */