Index: kernel/arch/ia64/include/arch/istate.h
===================================================================
--- kernel/arch/ia64/include/arch/istate.h	(revision f72906c1ceb4b546d431ab8e9c41434425c1096f)
+++ kernel/arch/ia64/include/arch/istate.h	(revision af0a2c7c1646c861334832d64f9f0977d0c2fada)
@@ -40,73 +40,13 @@
 #ifdef KERNEL
 
+#include <arch/istate_struct.h>
 #include <arch/register.h>
 
 #else /* KERNEL */
 
+#include <libarch/istate_struct.h>
 #include <libarch/register.h>
 
 #endif /* KERNEL */
-
-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;
-
-	uint64_t alignment;
-} istate_t;
 
 NO_TRACE static inline void istate_set_retaddr(istate_t *istate,
Index: kernel/arch/ia64/include/arch/istate_struct.ag
===================================================================
--- kernel/arch/ia64/include/arch/istate_struct.ag	(revision af0a2c7c1646c861334832d64f9f0977d0c2fada)
+++ kernel/arch/ia64/include/arch/istate_struct.ag	(revision af0a2c7c1646c861334832d64f9f0977d0c2fada)
@@ -0,0 +1,263 @@
+# 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 : <sys/types.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
+                }
+        ]
+}
+
