summaryrefslogtreecommitdiff
path: root/coroutine/ppc64le/Context.h
diff options
context:
space:
mode:
Diffstat (limited to 'coroutine/ppc64le/Context.h')
-rw-r--r--coroutine/ppc64le/Context.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/coroutine/ppc64le/Context.h b/coroutine/ppc64le/Context.h
index e36f9c3583..63ea9f19ff 100644
--- a/coroutine/ppc64le/Context.h
+++ b/coroutine/ppc64le/Context.h
@@ -1,3 +1,6 @@
+#ifndef COROUTINE_PPC64LE_CONTEXT_H
+#define COROUTINE_PPC64LE_CONTEXT_H 1
+
#pragma once
#include <assert.h>
@@ -9,13 +12,14 @@
enum {
COROUTINE_REGISTERS =
- 19 /* 18 general purpose registers (r14-r31) and 1 return address */
+ 20 /* 18 general purpose registers (r14-r31), 1 special register (cr) and 1 return address */
+ 4 /* space for fiber_entry() to store the link register */
};
struct coroutine_context
{
void **stack_pointer;
+ void *argument;
};
typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self);
@@ -49,3 +53,5 @@ static inline void coroutine_destroy(struct coroutine_context * context)
{
context->stack_pointer = NULL;
}
+
+#endif /* COROUTINE_PPC64LE_CONTEXT_H */