summaryrefslogtreecommitdiffstats
path: root/c/src/exec/score/cpu/unix/cpu.h
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1996-04-22 16:44:54 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1996-04-22 16:44:54 +0000
commitcc4c1fe424f4668a4b0e328d06352bda19b267fe (patch)
tree937be8bfcddbbe391c6dba3083679520afb70bcc /c/src/exec/score/cpu/unix/cpu.h
parentadded stack allocation fields to the cpu table (diff)
downloadrtems-cc4c1fe424f4668a4b0e328d06352bda19b267fe.tar.bz2
added stack allocation fields to the cpu table
updates from Tony Bennett. Most were to insure all variables were properly initialized and to correct the stray signal number reporting.
Diffstat (limited to 'c/src/exec/score/cpu/unix/cpu.h')
-rw-r--r--c/src/exec/score/cpu/unix/cpu.h26
1 files changed, 18 insertions, 8 deletions
diff --git a/c/src/exec/score/cpu/unix/cpu.h b/c/src/exec/score/cpu/unix/cpu.h
index 0f1be5283b..e813a92364 100644
--- a/c/src/exec/score/cpu/unix/cpu.h
+++ b/c/src/exec/score/cpu/unix/cpu.h
@@ -441,9 +441,22 @@ extern "C" {
*
* Doing it this way avoids conflicts between the native stuff and the
* RTEMS stuff.
+ *
+ * NOTE:
+ * hpux9 setjmp is optimized for the case where the setjmp buffer
+ * is 8 byte aligned. In a RISC world, this seems likely to enable
+ * 8 byte copies, especially for the float registers.
+ * So we always align them on 8 byte boundaries.
*/
+
+#ifdef __GNUC__
+#define CONTEXT_STRUCTURE_ALIGNMENT __attribute__ ((aligned (8)))
+#else
+#define CONTEXT_STRUCTURE_ALIGNMENT
+#endif
+
typedef struct {
- char Area[ CPU_CONTEXT_SIZE_IN_BYTES ];
+ char Area[ CPU_CONTEXT_SIZE_IN_BYTES ] CONTEXT_STRUCTURE_ALIGNMENT;
} Context_Control;
typedef struct {
@@ -455,13 +468,7 @@ typedef struct {
/*
* The following table contains the information required to configure
- * the XXX processor specific parameters.
- *
- * NOTE: The interrupt_stack_size field is required if
- * CPU_ALLOCATE_INTERRUPT_STACK is defined as TRUE.
- *
- * The pretasking_hook, predriver_hook, and postdriver_hook,
- * and the do_zero_of_workspace fields are required on ALL CPUs.
+ * the UNIX Simulator specific parameters.
*/
typedef struct {
@@ -472,6 +479,9 @@ typedef struct {
boolean do_zero_of_workspace;
unsigned32 interrupt_stack_size;
unsigned32 extra_mpci_receive_server_stack;
+ void * (*stack_allocate_hook)( unsigned32 );
+ void (*stack_free_hook)( void* );
+ /* end of required fields */
} rtems_cpu_table;
/*