summaryrefslogtreecommitdiffstats
path: root/pk/kernel/pk_stack_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'pk/kernel/pk_stack_init.c')
-rw-r--r--pk/kernel/pk_stack_init.c85
1 files changed, 0 insertions, 85 deletions
diff --git a/pk/kernel/pk_stack_init.c b/pk/kernel/pk_stack_init.c
deleted file mode 100644
index c3ddc90a..00000000
--- a/pk/kernel/pk_stack_init.c
+++ /dev/null
@@ -1,85 +0,0 @@
-//-----------------------------------------------------------------------------
-// *! (C) Copyright International Business Machines Corp. 2014
-// *! All Rights Reserved -- Property of IBM
-// *! *** IBM Confidential ***
-//-----------------------------------------------------------------------------
-
-/// \file pk_stack_init.c
-/// \brief PK stack initialization
-///
-/// The entry points in this file are initialization routines - they are never
-/// needed after PK initialization and their code space could be reclaimed by
-/// the application after initialization if required.
-///
-/// This code was split out from "pk_init.c" because it may be needed in a
-/// thread configuration if threads are being created dynamically. in an
-/// interrupt-only configuration it is not needed after \c pk_initialize().
-
-#include "pk.h"
-
-/// Initialize a stack area.
-///
-/// \param stack A pointer to the smallest legal address of the stack. The
-/// stack address is modified as the stack is aligned and initialized.
-///
-/// \param size A pointer to the size of the stack (in bytes). The size is
-/// modified as the stack is aligned and initialized. At exit this is the
-/// final usable stack area size aligned to the size of the PK_STACK_TYPE.
-///
-/// PK makes no assumptions about size or alignment of the area provided as a
-/// stack, and carefully aligns and initializes the stack. Regardless of how
-/// the stack grows, the \a stack parameter is considered to be the lowest
-/// legal address of the stack.
-
-int
-__pk_stack_init(PkAddress *stack,
- size_t *size)
-{
- PkAddress mask;
- size_t excess, i, count;
- PK_STACK_TYPE *p;
-
- if (PK_STACK_DIRECTION < 0) {
-
- // Stacks grow down. The initial stack pointer is set to just above
- // the last allocated stack address. This is legal for pre-decrement
- // stacks, otherwise the initial address is first brought into range
- // before alignment. The stack is aligned downward, then the size is
- // adjusted to a multiple of the stack type. Stacks are optionally
- // prepatterned. Alignment is assumed to be a power of 2.
-
- *stack += *size;
-
- if (!PK_STACK_PRE_DECREMENT) {
- *stack -= sizeof(PK_STACK_TYPE);
- *size -= sizeof(PK_STACK_TYPE);
- }
-
- mask = PK_STACK_ALIGNMENT - 1;
- excess = *stack & mask;
- *stack -= excess;
- *size -= excess;
- *size = (*size / sizeof(PK_STACK_TYPE)) * sizeof(PK_STACK_TYPE);
-
- if (PK_STACK_CHECK) {
- p = (PK_STACK_TYPE *)(*stack);
- count = *size / sizeof(PK_STACK_TYPE);
- for (i = 0; i < count; i++) {
- if (PK_STACK_PRE_DECREMENT) {
- *(--p) = PK_STACK_PATTERN;
- } else {
- *(p--) = PK_STACK_PATTERN;
- }
- }
- }
-
- __pk_stack_create_initial_frame(stack, size);
-
- } else {
-
- PK_PANIC(PK_UNIMPLEMENTED);
- }
-
- return PK_OK;
-}
-
OpenPOWER on IntegriCloud