Initial revision
[ssr] / StraySrc / Libraries / Sapphire / csapph / h / coRoutine
CommitLineData
2ee739cc 1/*
2 * coRoutine.h
3 *
4 * [Generated from coRoutine, 25 September 1996]
5 */
6
7#if !defined(__CC_NORCROFT) || !defined(__arm)
8 #error You must use the Norcroft ARM Compiler for Sapphire programs
9#endif
10
11#pragma include_only_once
12#pragma force_top_level
13
14#ifndef __coRoutine_h
15#define __coRoutine_h
16
17#ifndef __sapphire_h
18 #include "sapphire.h"
19#endif
20
21/*----- Overview ----------------------------------------------------------*
22 *
23 * Functions provided:
24 *
25 * coRout_create
26 * coRout_switch
27 * coRout_destroy
28 * coRout_end
29 */
30
31/* --- coRout_create --- *
32 *
33 * On entry: R0 == pointer to coroutine
34 * R1 == R10 value to pass to coroutine
35 * R2 == R12 value to pass to coroutine
36 * R3 == size of stack to pass (0 for default)
37 *
38 * On exit: R0 == coroutine handle
39 * May return an error
40 *
41 * Use: Creates a new coroutine. It may be given control using
42 * coRout_switch. Its registers are on entry:
43 *
44 * R0 == its coroutine handle
45 * R10 == value passed to coRout_create in R1
46 * R12 == value passed to coRout_create in R2
47 * R13 == pointer to the stack created for it
48 */
49
50extern routine coRout_create;
51
52/* --- coRout_switch --- *
53 *
54 * On entry: R0 == coroutine to switch to, or 0 for main
55 *
56 * On exit: --
57 *
58 * Use: Switches context to another coroutine.
59 */
60
61extern routine coRout_switch;
62
63/* --- coRout_destroy --- *
64 *
65 * On entry: R0 == coroutine handle to destroy
66 *
67 * On exit: --
68 *
69 * Use: Destroys a coroutine.
70 */
71
72extern routine coRout_destroy;
73
74/* --- coRout_end --- *
75 *
76 * On entry: --
77 *
78 * On exit: Doesn't.
79 *
80 * Use: Terminates the current coroutine.
81 */
82
83extern routine coRout_end;
84
85/*----- That's all, folks -------------------------------------------------*/
86
87#endif