Index: kernel/arch/ia32/Makefile.inc
===================================================================
--- kernel/arch/ia32/Makefile.inc	(revision 3bacee1839e6f355100ab4ea86bb211e9ecf19ed)
+++ kernel/arch/ia32/Makefile.inc	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
@@ -102,7 +102,7 @@
 	arch/$(KARCH)/src/syscall.c
 
-ARCH_AUTOGENS_AG = \
-	arch/$(KARCH)/include/arch/istate_struct.ag \
-	arch/$(KARCH)/include/arch/context_struct.ag \
-	arch/$(KARCH)/include/arch/boot/memmap_struct.ag
+ARCH_AUTOCHECK_HEADERS = \
+	arch/$(KARCH)/include/arch/istate_struct.h \
+	arch/$(KARCH)/include/arch/context_struct.h \
+	arch/$(KARCH)/include/arch/boot/memmap_struct.h
 
Index: kernel/arch/ia32/include/arch/boot/memmap_struct.ag
===================================================================
--- kernel/arch/ia32/include/arch/boot/memmap_struct.ag	(revision 3bacee1839e6f355100ab4ea86bb211e9ecf19ed)
+++ 	(revision )
@@ -1,52 +1,0 @@
-# Copyright (c) 2016 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 : e820memmap,
-        packed : true,
-
-        includes : [
-                {
-                        include : <typedefs.h>
-                },
-        ],
-
-        members : [
-                {
-                        name : base_address,
-                        type : uint64_t
-                },
-                {
-                        name : size,
-                        type : uint64_t
-                },
-                {
-                        name : type,
-                        type : uint32_t
-                }
-        ]
-}
Index: kernel/arch/ia32/include/arch/boot/memmap_struct.h
===================================================================
--- kernel/arch/ia32/include/arch/boot/memmap_struct.h	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
+++ kernel/arch/ia32/include/arch/boot/memmap_struct.h	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
@@ -0,0 +1,49 @@
+/* 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_BOOT_MEMMAP_STRUCT_H_
+#define KERN_ARCH_BOOT_MEMMAP_STRUCT_H_
+
+#define E820MEMMAP_OFFSET_BASE_ADDRESS  0x00
+#define E820MEMMAP_OFFSET_SIZE          0x08
+#define E820MEMMAP_OFFSET_TYPE          0x10
+#define E820MEMMAP_SIZE                 0x14
+
+#define E820MEMMAP_SIZE_SIZE            0x08
+
+#ifndef __ASSEMBLER__
+
+#include <stdint.h>
+
+typedef struct e820memmap {
+	uint64_t base_address;
+	uint64_t size;
+	uint32_t type;
+} __attribute__((packed)) e820memmap_t;
+
+#endif
+#endif
Index: kernel/arch/ia32/include/arch/context_struct.ag
===================================================================
--- kernel/arch/ia32/include/arch/context_struct.ag	(revision 3bacee1839e6f355100ab4ea86bb211e9ecf19ed)
+++ 	(revision )
@@ -1,77 +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>
-                }
-        ],
-
-        members : [
-                #
-                # Only save registers that must be preserved across function
-                # calls.
-                #
-
-                {
-                        name : sp,
-                        type : uint32_t
-                },
-                {
-                        name : pc,
-                        type : uint32_t
-                },
-                {
-                        name : ebx,
-                        type : uint32_t
-                },
-                {
-                        name : esi,
-                        type : uint32_t
-                },
-                {
-                        name : edi,
-                        type : uint32_t
-                },
-                {
-                        name : ebp,
-                        type : uint32_t
-                },
-                {
-                        name : tp,
-                        type : uint32_t
-                },
-
-                {
-                        name : ipl,
-                        type : ipl_t
-                }
-        ]
-}
Index: kernel/arch/ia32/include/arch/context_struct.h
===================================================================
--- kernel/arch/ia32/include/arch/context_struct.h	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
+++ kernel/arch/ia32/include/arch/context_struct.h	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
@@ -0,0 +1,59 @@
+/* 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_SP   0x00
+#define CONTEXT_OFFSET_PC   0x04
+#define CONTEXT_OFFSET_EBX  0x08
+#define CONTEXT_OFFSET_ESI  0x0c
+#define CONTEXT_OFFSET_EDI  0x10
+#define CONTEXT_OFFSET_EBP  0x14
+#define CONTEXT_OFFSET_TP   0x18
+#define CONTEXT_OFFSET_IPL  0x1c
+#define CONTEXT_SIZE        0x20
+
+#ifndef __ASSEMBLER__
+
+#include <typedefs.h>
+
+/* Only save registers that must be preserved across function calls. */
+typedef struct context {
+	uint32_t sp;
+	uint32_t pc;
+	uint32_t ebx;
+	uint32_t esi;
+	uint32_t edi;
+	uint32_t ebp;
+	uint32_t tp;
+	ipl_t ipl;
+} context_t;
+
+#endif
+#endif
+
Index: kernel/arch/ia32/include/arch/istate_struct.ag
===================================================================
--- kernel/arch/ia32/include/arch/istate_struct.ag	(revision 3bacee1839e6f355100ab4ea86bb211e9ecf19ed)
+++ 	(revision )
@@ -1,139 +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>
-                },
-                {
-                        negative-guard: KERNEL,
-                        include : <stddef.h>
-                },
-                {
-                        negative-guard: KERNEL,
-                        include : <stdint.h>
-                }
-        ],
-
-        members : [
-
-                #
-                # The strange order of the GPRs is given by the requirement to use the
-                # istate structure for both regular interrupts and exceptions as well
-                # as for syscall handlers which use this order as an optimization.
-                #
-
-                {
-                        name : edx,
-                        type : uint32_t
-                },
-                {
-                        name : ecx,
-                        type : uint32_t
-                },
-                {
-                        name : ebx,
-                        type : uint32_t
-                },
-                {
-                        name : esi,
-                        type : uint32_t
-                },
-                {
-                        name : edi,
-                        type : uint32_t
-                },
-                {
-                        name : ebp,
-                        type : uint32_t
-                },
-                {
-                        name : eax,
-                        type : uint32_t
-                },
-
-                {
-                        # imitation of frame pointer linkage
-                        name : ebp_frame,
-                        type : uint32_t
-                },
-                {
-                        # imitation of return address linkage
-                        name : eip_frame,
-                        type : uint32_t
-                },
-
-                {
-                        name : gs,
-                        type : uint32_t
-                },
-                {
-                        name : fs,
-                        type : uint32_t
-                },
-                {
-                        name : es,
-                        type : uint32_t
-                },
-                {
-                        name : ds,
-                        type : uint32_t
-                },
-
-                {
-                        # real or fake error word
-                        name : error_word,
-                        type : uint32_t
-                },
-                {
-                        name : eip,
-                        type : uint32_t
-                },
-                {
-                        name : cs,
-                        type : uint32_t
-                },
-                {
-                        name : eflags,
-                        type : uint32_t
-                },
-                {
-                        # only if istate_t is from uspace
-                        name : esp,
-                        type : uint32_t
-                },
-                {
-                        # only if istate_t is from uspace
-                        name : ss,
-                        type : uint32_t
-                }
-        ]
-}
Index: kernel/arch/ia32/include/arch/istate_struct.h
===================================================================
--- kernel/arch/ia32/include/arch/istate_struct.h	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
+++ kernel/arch/ia32/include/arch/istate_struct.h	(revision e63468473345cf0a982276dc4d69b496d2a0f7ec)
@@ -0,0 +1,109 @@
+/* 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_EDX 0
+#define ISTATE_SIZE_EDX 4
+#define ISTATE_OFFSET_ECX 4
+#define ISTATE_SIZE_ECX 4
+#define ISTATE_OFFSET_EBX 8
+#define ISTATE_SIZE_EBX 4
+#define ISTATE_OFFSET_ESI 12
+#define ISTATE_SIZE_ESI 4
+#define ISTATE_OFFSET_EDI 16
+#define ISTATE_SIZE_EDI 4
+#define ISTATE_OFFSET_EBP 20
+#define ISTATE_SIZE_EBP 4
+#define ISTATE_OFFSET_EAX 24
+#define ISTATE_SIZE_EAX 4
+#define ISTATE_OFFSET_EBP_FRAME 28
+#define ISTATE_SIZE_EBP_FRAME 4
+#define ISTATE_OFFSET_EIP_FRAME 32
+#define ISTATE_SIZE_EIP_FRAME 4
+#define ISTATE_OFFSET_GS 36
+#define ISTATE_SIZE_GS 4
+#define ISTATE_OFFSET_FS 40
+#define ISTATE_SIZE_FS 4
+#define ISTATE_OFFSET_ES 44
+#define ISTATE_SIZE_ES 4
+#define ISTATE_OFFSET_DS 48
+#define ISTATE_SIZE_DS 4
+#define ISTATE_OFFSET_ERROR_WORD 52
+#define ISTATE_SIZE_ERROR_WORD 4
+#define ISTATE_OFFSET_EIP 56
+#define ISTATE_SIZE_EIP 4
+#define ISTATE_OFFSET_CS 60
+#define ISTATE_SIZE_CS 4
+#define ISTATE_OFFSET_EFLAGS 64
+#define ISTATE_SIZE_EFLAGS 4
+#define ISTATE_OFFSET_ESP 68
+#define ISTATE_SIZE_ESP 4
+#define ISTATE_OFFSET_SS 72
+#define ISTATE_SIZE_SS 4
+#define ISTATE_SIZE 76
+
+#ifndef __ASSEMBLER__
+
+#include <stdint.h>
+
+/*
+ * The strange order of the GPRs is given by the requirement to use the
+ * istate structure for both regular interrupts and exceptions as well
+ * as for syscall handlers which use this order as an optimization.
+ */
+typedef struct istate {
+	uint32_t edx;
+	uint32_t ecx;
+	uint32_t ebx;
+	uint32_t esi;
+	uint32_t edi;
+	uint32_t ebp;
+	uint32_t eax;
+	/* imitation of frame pointer linkage */
+	uint32_t ebp_frame;
+	/* imitation of return address linkage */
+	uint32_t eip_frame;
+	uint32_t gs;
+	uint32_t fs;
+	uint32_t es;
+	uint32_t ds;
+	/* real or fake error word */
+	uint32_t error_word;
+	uint32_t eip;
+	uint32_t cs;
+	uint32_t eflags;
+	/* only if istate_t is from uspace */
+	uint32_t esp;
+	/* only if istate_t is from uspace */
+	uint32_t ss;
+} istate_t;
+
+#endif
+#endif
+
