Index: kernel/arch/ia64/Makefile.inc
===================================================================
--- kernel/arch/ia64/Makefile.inc	(revision 18b6a8849d630cc3bca153fb21bd225eebb16f4c)
+++ kernel/arch/ia64/Makefile.inc	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
@@ -72,6 +72,6 @@
 endif
 
-ARCH_AUTOGENS_AG = \
-	arch/$(KARCH)/include/arch/istate_struct.ag \
-	arch/$(KARCH)/include/arch/context_struct.ag
+ARCH_AUTOCHECK_HEADERS = \
+	arch/$(KARCH)/include/arch/istate_struct.h \
+	arch/$(KARCH)/include/arch/context_struct.h
 
Index: kernel/arch/ia64/include/arch/context_struct.ag
===================================================================
--- kernel/arch/ia64/include/arch/context_struct.ag	(revision 18b6a8849d630cc3bca153fb21bd225eebb16f4c)
+++ 	(revision )
@@ -1,235 +1,0 @@
-# Copyright (c) 2014 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - Redistributions in binary form must reproduce the above copyright
-#   notice, this list of conditions and the following disclaimer in the
-#   documentation and/or other materials provided with the distribution.
-# - The name of the author may not be used to endorse or promote products
-#   derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-{
-        name : context,
-
-        includes : [
-                {
-                        include : <typedefs.h>
-                }
-        ],
-
-        #
-        # Only save registers that must be preserved across function calls.
-        #
-        members : [
-                #
-                # Application registers
-                #
-                {
-                        name : ar_pfs,
-                        type : uint64_t
-                },
-                {
-                        name : ar_unat_caller,
-                        type : uint64_t
-                },
-                {
-                        name : ar_unat_callee,
-                        type : uint64_t
-                },
-                {
-                        name : ar_rsc,
-                        type : uint64_t
-                },
-                {
-                        # ar_bsp
-                        name : bsp,
-                        type : uint64_t
-                },
-                {
-                        name : ar_rnat,
-                        type : uint64_t
-                },
-                {
-                        name : ar_lc,
-                        type : uint64_t
-                },
-
-
-                #
-                # General registers
-                #
-                {
-                        name : r1,
-                        type : uint64_t
-                },
-                {
-                        name : r4,
-                        type : uint64_t
-                },
-                {
-                        name : r5,
-                        type : uint64_t
-                },
-                {
-                        name : r6,
-                        type : uint64_t
-                },
-                {
-                        name : r7,
-                        type : uint64_t
-                },
-                {
-                        # r12
-                        name : sp,
-                        type : uint64_t
-                },
-                {
-                        name : r13,
-                        type : uint64_t
-                },
-
-
-                #
-                # Branch registers
-                #
-                {
-                        # b0
-                        name : pc,
-                        type : uint64_t
-                },
-                {
-                        name : b1,
-                        type : uint64_t
-                },
-                {
-                        name : b2,
-                        type : uint64_t
-                },
-                {
-                        name : b3,
-                        type : uint64_t
-                },
-                {
-                        name : b4,
-                        type : uint64_t
-                },
-                {
-                        name : b5,
-                        type : uint64_t
-                },
-
-
-                #
-                # Predicate registers
-                #
-                {
-                        name : pr,
-                        type : uint64_t
-                },
-
-                {
-                        name : f2,
-                        type : uint128_t
-                },
-                {
-                        name : f3,
-                        type : uint128_t
-                },
-                {
-                        name : f4,
-                        type : uint128_t
-                },
-                {
-                        name : f5,
-                        type : uint128_t
-                },
-
-                {
-                        name : f16,
-                        type : uint128_t
-                },
-                {
-                        name : f17,
-                        type : uint128_t
-                },
-                {
-                        name : f18,
-                        type : uint128_t
-                },
-                {
-                        name : f19,
-                        type : uint128_t
-                },
-                {
-                        name : f20,
-                        type : uint128_t
-                },
-                {
-                        name : f21,
-                        type : uint128_t
-                },
-                {
-                        name : f22,
-                        type : uint128_t
-                },
-                {
-                        name : f23,
-                        type : uint128_t
-                },
-                {
-                        name : f24,
-                        type : uint128_t
-                },
-                {
-                        name : f25,
-                        type : uint128_t
-                },
-                {
-                        name : f26,
-                        type : uint128_t
-                },
-                {
-                        name : f27,
-                        type : uint128_t
-                },
-                {
-                        name : f28,
-                        type : uint128_t
-                },
-                {
-                        name : f29,
-                        type : uint128_t
-                },
-                {
-                        name : f30,
-                        type : uint128_t
-                },
-                {
-                        name : f31,
-                        type : uint128_t
-                },
-
-                {
-                        name : ipl,
-                        type: ipl_t
-                }
-        ]
-}
-
Index: kernel/arch/ia64/include/arch/context_struct.h
===================================================================
--- kernel/arch/ia64/include/arch/context_struct.h	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
+++ kernel/arch/ia64/include/arch/context_struct.h	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
@@ -0,0 +1,138 @@
+/* Copyright (c) 2014 Jakub Jermar
+ * All rights preserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef KERN_ARCH_CONTEXT_STRUCT_H_
+#define KERN_ARCH_CONTEXT_STRUCT_H_
+
+#define CONTEXT_OFFSET_AR_PFS          0x00
+#define CONTEXT_OFFSET_AR_UNAT_CALLER  0x08
+#define CONTEXT_OFFSET_AR_UNAT_CALLEE  0x10
+#define CONTEXT_OFFSET_AR_RSC          0x18
+#define CONTEXT_OFFSET_BSP             0x20
+#define CONTEXT_OFFSET_AR_RNAT         0x28
+#define CONTEXT_OFFSET_AR_LC           0x30
+#define CONTEXT_OFFSET_R1              0x38
+#define CONTEXT_OFFSET_R4              0x40
+#define CONTEXT_OFFSET_R5              0x48
+#define CONTEXT_OFFSET_R6              0x50
+#define CONTEXT_OFFSET_R7              0x58
+#define CONTEXT_OFFSET_SP              0x60
+#define CONTEXT_OFFSET_R13             0x68
+#define CONTEXT_OFFSET_PC              0x70
+#define CONTEXT_OFFSET_B1              0x78
+#define CONTEXT_OFFSET_B2              0x80
+#define CONTEXT_OFFSET_B3              0x88
+#define CONTEXT_OFFSET_B4              0x90
+#define CONTEXT_OFFSET_B5              0x98
+#define CONTEXT_OFFSET_PR              0xa0
+#define CONTEXT_OFFSET_F2              0xb0
+#define CONTEXT_OFFSET_F3              0xc0
+#define CONTEXT_OFFSET_F4              0xd0
+#define CONTEXT_OFFSET_F5              0xe0
+#define CONTEXT_OFFSET_F16             0xf0
+#define CONTEXT_OFFSET_F17             0x100
+#define CONTEXT_OFFSET_F18             0x110
+#define CONTEXT_OFFSET_F19             0x120
+#define CONTEXT_OFFSET_F20             0x130
+#define CONTEXT_OFFSET_F21             0x140
+#define CONTEXT_OFFSET_F22             0x150
+#define CONTEXT_OFFSET_F23             0x160
+#define CONTEXT_OFFSET_F24             0x170
+#define CONTEXT_OFFSET_F25             0x180
+#define CONTEXT_OFFSET_F26             0x190
+#define CONTEXT_OFFSET_F27             0x1a0
+#define CONTEXT_OFFSET_F28             0x1b0
+#define CONTEXT_OFFSET_F29             0x1c0
+#define CONTEXT_OFFSET_F30             0x1d0
+#define CONTEXT_OFFSET_F31             0x1e0
+#define CONTEXT_OFFSET_IPL             0x1f0
+#define CONTEXT_SIZE                   0x200
+
+#ifndef __ASSEMBLER__
+
+#include <typedefs.h>
+
+// Only save registers that must be preserved across function calls.
+typedef struct context {
+	// Application registers.
+	uint64_t ar_pfs;
+	uint64_t ar_unat_caller;
+	uint64_t ar_unat_callee;
+	uint64_t ar_rsc;
+	// ar_bsp
+	uint64_t bsp;
+	uint64_t ar_rnat;
+	uint64_t ar_lc;
+
+	// General registers.
+	uint64_t r1;
+	uint64_t r4;
+	uint64_t r5;
+	uint64_t r6;
+	uint64_t r7;
+	// r12
+	uint64_t sp;
+	uint64_t r13;
+
+	// Branch registers.
+	// b0
+	uint64_t pc;
+	uint64_t b1;
+	uint64_t b2;
+	uint64_t b3;
+	uint64_t b4;
+	uint64_t b5;
+
+	// Predicate registers.
+	uint64_t pr;
+	uint128_t f2;
+	uint128_t f3;
+	uint128_t f4;
+	uint128_t f5;
+	uint128_t f16;
+	uint128_t f17;
+	uint128_t f18;
+	uint128_t f19;
+	uint128_t f20;
+	uint128_t f21;
+	uint128_t f22;
+	uint128_t f23;
+	uint128_t f24;
+	uint128_t f25;
+	uint128_t f26;
+	uint128_t f27;
+	uint128_t f28;
+	uint128_t f29;
+	uint128_t f30;
+	uint128_t f31;
+
+	ipl_t ipl;
+} context_t;
+
+#endif /* __ASSEMBLER__ */
+#endif
+
Index: kernel/arch/ia64/include/arch/istate_struct.ag
===================================================================
--- kernel/arch/ia64/include/arch/istate_struct.ag	(revision 18b6a8849d630cc3bca153fb21bd225eebb16f4c)
+++ 	(revision )
@@ -1,267 +1,0 @@
-# Copyright (c) 2014 Jakub Jermar
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - Redistributions in binary form must reproduce the above copyright
-#   notice, this list of conditions and the following disclaimer in the
-#   documentation and/or other materials provided with the distribution.
-# - The name of the author may not be used to endorse or promote products
-#   derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-{
-        name : istate,
-
-        includes : [
-                {
-                        guard : KERNEL,
-                        include : <typedefs.h>
-                },
-                {
-                        guard : KERNEL,
-                        include : <arch/register.h>
-                },
-                {
-                        negative-guard : KERNEL,
-                        include : <stddef.h>
-                },
-                {
-                        negative-guard : KERNEL,
-                        include : <stdint.h>
-                },
-                {
-                        negative-guard : KERNEL,
-                        include : <libarch/register.h>
-                }
-        ],
-
-        members : [
-                {
-                        name : f2,
-                        type : uint128_t
-                },
-                {
-                        name : f3,
-                        type : uint128_t
-                },
-                {
-                        name : f4,
-                        type : uint128_t
-                },
-                {
-                        name : f5,
-                        type : uint128_t
-                },
-                {
-                        name : f6,
-                        type : uint128_t
-                },
-                {
-                        name : f7,
-                        type : uint128_t
-                },
-                {
-                        name : f8,
-                        type : uint128_t
-                },
-                {
-                        name : f9,
-                        type : uint128_t
-                },
-                {
-                        name : f10,
-                        type : uint128_t
-                },
-                {
-                        name : f11,
-                        type : uint128_t
-                },
-                {
-                        name : f12,
-                        type : uint128_t
-                },
-                {
-                        name : f13,
-                        type : uint128_t
-                },
-                {
-                        name : f14,
-                        type : uint128_t
-                },
-                {
-                        name : f15,
-                        type : uint128_t
-                },
-                {
-                        name : f16,
-                        type : uint128_t
-                },
-                {
-                        name : f17,
-                        type : uint128_t
-                },
-                {
-                        name : f18,
-                        type : uint128_t
-                },
-                {
-                        name : f19,
-                        type : uint128_t
-                },
-                {
-                        name : f20,
-                        type : uint128_t
-                },
-                {
-                        name : f21,
-                        type : uint128_t
-                },
-                {
-                        name : f22,
-                        type : uint128_t
-                },
-                {
-                        name : f23,
-                        type : uint128_t
-                },
-                {
-                        name : f24,
-                        type : uint128_t
-                },
-                {
-                        name : f25,
-                        type : uint128_t
-                },
-                {
-                        name : f26,
-                        type : uint128_t
-                },
-                {
-                        name : f27,
-                        type : uint128_t
-                },
-                {
-                        name : f28,
-                        type : uint128_t
-                },
-                {
-                        name : f29,
-                        type : uint128_t
-                },
-                {
-                        name : f30,
-                        type : uint128_t
-                },
-                {
-                        name : f31,
-                        type : uint128_t
-                },
-
-                {
-                        name : ar_bsp,
-                        type : uintptr_t
-                },
-                {
-                        name : ar_bspstore,
-                        type : uintptr_t
-                },
-                {
-                        name : ar_bspstore_new,
-                        type : uintptr_t
-                },
-                {
-                        name : ar_rnat,
-                        type : uint64_t
-                },
-                {
-                        name : ar_ifs,
-                        type : uint64_t
-                },
-                {
-                        name : ar_pfs,
-                        type : uint64_t
-                },
-                {
-                        name : ar_rsc,
-                        type : uint64_t
-                },
-                {
-                        name : cr_ifa,
-                        type : uintptr_t
-                },
-                {
-                        name : cr_isr,
-                        type : cr_isr_t
-                },
-                {
-                        name : cr_iipa,
-                        type : uintptr_t
-                },
-                {
-                        name : cr_ipsr,
-                        type : psr_t
-                },
-                {
-                        name : cr_iip,
-                        type : uintptr_t
-                },
-                {
-                        name : pr,
-                        type : uint64_t
-                },
-                {
-                        name : sp,
-                        type : uintptr_t
-                },
-
-                #
-                # The following variables are defined only for break_instruction
-                # handler.
-                #
-                {
-                        name : in0,
-                        type : uint64_t
-                },
-                {
-                        name : in1,
-                        type : uint64_t
-                },
-                {
-                        name : in2,
-                        type : uint64_t
-                },
-                {
-                        name : in3,
-                        type : uint64_t
-                },
-                {
-                        name : in4,
-                        type : uint64_t
-                },
-                {
-                        name : in5,
-                        type : uint64_t
-                },
-                {
-                        name : in6,
-                        type : uint64_t
-                }
-        ]
-}
-
Index: kernel/arch/ia64/include/arch/istate_struct.h
===================================================================
--- kernel/arch/ia64/include/arch/istate_struct.h	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
+++ kernel/arch/ia64/include/arch/istate_struct.h	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
@@ -0,0 +1,155 @@
+/* Copyright (c) 2014 Jakub Jermar
+ * All rights preserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef KERN_ARCH_ISTATE_STRUCT_H_
+#define KERN_ARCH_ISTATE_STRUCT_H_
+
+#define ISTATE_OFFSET_F2                0x000
+#define ISTATE_OFFSET_F3                0x010
+#define ISTATE_OFFSET_F4                0x020
+#define ISTATE_OFFSET_F5                0x030
+#define ISTATE_OFFSET_F6                0x040
+#define ISTATE_OFFSET_F7                0x050
+#define ISTATE_OFFSET_F8                0x060
+#define ISTATE_OFFSET_F9                0x070
+#define ISTATE_OFFSET_F10               0x080
+#define ISTATE_OFFSET_F11               0x090
+#define ISTATE_OFFSET_F12               0x0a0
+#define ISTATE_OFFSET_F13               0x0b0
+#define ISTATE_OFFSET_F14               0x0c0
+#define ISTATE_OFFSET_F15               0x0d0
+#define ISTATE_OFFSET_F16               0x0e0
+#define ISTATE_OFFSET_F17               0x0f0
+#define ISTATE_OFFSET_F18               0x100
+#define ISTATE_OFFSET_F19               0x110
+#define ISTATE_OFFSET_F20               0x120
+#define ISTATE_OFFSET_F21               0x130
+#define ISTATE_OFFSET_F22               0x140
+#define ISTATE_OFFSET_F23               0x150
+#define ISTATE_OFFSET_F24               0x160
+#define ISTATE_OFFSET_F25               0x170
+#define ISTATE_OFFSET_F26               0x180
+#define ISTATE_OFFSET_F27               0x190
+#define ISTATE_OFFSET_F28               0x1a0
+#define ISTATE_OFFSET_F29               0x1b0
+#define ISTATE_OFFSET_F30               0x1c0
+#define ISTATE_OFFSET_F31               0x1d0
+#define ISTATE_OFFSET_AR_BSP            0x1e0
+#define ISTATE_OFFSET_AR_BSPSTORE       0x1e8
+#define ISTATE_OFFSET_AR_BSPSTORE_NEW   0x1f0
+#define ISTATE_OFFSET_AR_RNAT           0x1f8
+#define ISTATE_OFFSET_AR_IFS            0x200
+#define ISTATE_OFFSET_AR_PFS            0x208
+#define ISTATE_OFFSET_AR_RSC            0x210
+#define ISTATE_OFFSET_CR_IFA            0x218
+#define ISTATE_OFFSET_CR_ISR            0x220
+#define ISTATE_OFFSET_CR_IIPA           0x228
+#define ISTATE_OFFSET_CR_IPSR           0x230
+#define ISTATE_OFFSET_CR_IIP            0x238
+#define ISTATE_OFFSET_PR                0x240
+#define ISTATE_OFFSET_SP                0x248
+#define ISTATE_OFFSET_IN0               0x250
+#define ISTATE_OFFSET_IN1               0x258
+#define ISTATE_OFFSET_IN2               0x260
+#define ISTATE_OFFSET_IN3               0x268
+#define ISTATE_OFFSET_IN4               0x270
+#define ISTATE_OFFSET_IN5               0x278
+#define ISTATE_OFFSET_IN6               0x280
+#define ISTATE_SIZE                     0x290
+
+#ifndef __ASSEMBLER__
+
+#include <stdint.h>
+
+#ifdef KERNEL
+#include <typedefs.h>
+#include <arch/register.h>
+#else
+#include <stddef.h>
+#include <libarch/register.h>
+#endif
+
+typedef struct istate {
+	uint128_t f2;
+	uint128_t f3;
+	uint128_t f4;
+	uint128_t f5;
+	uint128_t f6;
+	uint128_t f7;
+	uint128_t f8;
+	uint128_t f9;
+	uint128_t f10;
+	uint128_t f11;
+	uint128_t f12;
+	uint128_t f13;
+	uint128_t f14;
+	uint128_t f15;
+	uint128_t f16;
+	uint128_t f17;
+	uint128_t f18;
+	uint128_t f19;
+	uint128_t f20;
+	uint128_t f21;
+	uint128_t f22;
+	uint128_t f23;
+	uint128_t f24;
+	uint128_t f25;
+	uint128_t f26;
+	uint128_t f27;
+	uint128_t f28;
+	uint128_t f29;
+	uint128_t f30;
+	uint128_t f31;
+	uintptr_t ar_bsp;
+	uintptr_t ar_bspstore;
+	uintptr_t ar_bspstore_new;
+	uint64_t ar_rnat;
+	uint64_t ar_ifs;
+	uint64_t ar_pfs;
+	uint64_t ar_rsc;
+	uintptr_t cr_ifa;
+	cr_isr_t cr_isr;
+	uintptr_t cr_iipa;
+	psr_t cr_ipsr;
+	uintptr_t cr_iip;
+	uint64_t pr;
+	uintptr_t sp;
+
+	// The following variables are defined only for break_instruction
+	// handler.
+	uint64_t in0;
+	uint64_t in1;
+	uint64_t in2;
+	uint64_t in3;
+	uint64_t in4;
+	uint64_t in5;
+	uint64_t in6;
+} istate_t;
+
+#endif
+#endif
+
