summaryrefslogtreecommitdiff
path: root/nuttx/arch/z16/include/z16f/irq.h
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/arch/z16/include/z16f/irq.h')
-rw-r--r--nuttx/arch/z16/include/z16f/irq.h52
1 files changed, 39 insertions, 13 deletions
diff --git a/nuttx/arch/z16/include/z16f/irq.h b/nuttx/arch/z16/include/z16f/irq.h
index e2ffd58b8..18e8848f4 100644
--- a/nuttx/arch/z16/include/z16f/irq.h
+++ b/nuttx/arch/z16/include/z16f/irq.h
@@ -98,18 +98,30 @@
* in the TCB to many context switches.
*/
-#define XCPT_I (0) /* Offset 0: Saved I w/interrupt state in carry */
-#define XCPT_BC (1) /* Offset 1: Saved BC register */
-#define XCPT_DE (2) /* Offset 2: Saved DE register */
-#define XCPT_IX (3) /* Offset 3: Saved IX register */
-#define XCPT_IY (4) /* Offset 4: Saved IY register */
-#define XCPT_SP (5) /* Offset 5: Offset to SP at time of interrupt */
-#define XCPT_HL (6) /* Offset 6: Saved HL register */
-#define XCPT_AF (7) /* Offset 7: Saved AF register */
-#define XCPT_PC (8) /* Offset 8: Offset to PC at time of interrupt */
-
-#define XCPTCONTEXT_REGS (9)
-#define XCPTCONTEXT_SIZE (2 * XCPTCONTEXT_REGS)
+#define REG_R0 ( 0) /* 32-bits: R0 */
+#define REG_R1 ( 2) /* 32-bits: R0 */
+#define REG_R2 ( 4) /* 32-bits: R0 */
+#define REG_R3 ( 6) /* 32-bits: R0 */
+#define REG_R4 ( 8) /* 32-bits: R0 */
+#define REG_R5 (10) /* 32-bits: R0 */
+#define REG_R6 (12) /* 32-bits: R0 */
+#define REG_R7 (14) /* 32-bits: R0 */
+#define REG_R8 (16) /* 32-bits: R0 */
+#define REG_R9 (18) /* 32-bits: R0 */
+#define REG_R10 (20) /* 32-bits: R0 */
+#define REG_R11 (22) /* 32-bits: R0 */
+#define REG_R12 (24) /* 32-bits: R0 */
+#define REG_R13 (26) /* 32-bits: R0 */
+#define REG_R14 (28) /* 32-bits: R0 */
+#define REG_R15 (30) /* 32-bits: R0 */
+#define REG_PC (32) /* 32-bits: Return PC */
+#define REG_FLAGS (34) /* 16-bits: Flags register (with 0x00 padding)
+
+#define XCPTCONTEXT_REGS (35)
+#define XCPTCONTEXT_SIZE (2 * XCPTCONTEXT_REGS)
+
+#define REG_FP REG_R14
+#define REG_SP REG_R15
/****************************************************************************
* Public Types
@@ -138,12 +150,24 @@ struct xcptcontext
/* The following retains that state during signal execution */
- uint16 saved_pc; /* Saved return address */
+ uint32 saved_pc; /* Saved return address */
uint16 saved_i; /* Saved interrupt state */
#endif
};
#endif
+/* The ZDS-II provides built-in operations to test & disable and to restore
+ * the interrupt state.
+ *
+ * irqstate_t irqsave(void);
+ * void irqrestore(irqstate_t flags);
+ */
+
+#ifdef __ZILOG__
+# define irqsave() TDI()
+# define irqrestore(f) RI(f)
+#endif
+
/****************************************************************************
* Inline functions
****************************************************************************/
@@ -164,8 +188,10 @@ extern "C" {
#define EXTERN extern
#endif
+#ifndef __ZILOG__
EXTERN irqstate_t irqsave(void);
EXTERN void irqrestore(irqstate_t flags);
+#endif
#undef EXTERN
#ifdef __cplusplus