Index: kernel/genarch/include/genarch/multiboot/multiboot.h
===================================================================
--- kernel/genarch/include/genarch/multiboot/multiboot.h	(revision 3da166f05b0e0513fe18f82b34f75ef99bef955a)
+++ kernel/genarch/include/genarch/multiboot/multiboot.h	(revision 7ba16eb2305f77c05ab9260d09fae55d5c25fa4f)
@@ -36,8 +36,19 @@
 #define KERN_MULTIBOOT_H_
 
+#include <genarch/multiboot/multiboot_memmap_struct.h>
+#include <genarch/multiboot/multiboot_info_struct.h>
+
 #define MULTIBOOT_HEADER_MAGIC  0x1badb002
 #define MULTIBOOT_HEADER_FLAGS  0x00010003
 
 #define MULTIBOOT_LOADER_MAGIC  0x2badb002
+
+#define MULTIBOOT_INFO_FLAGS_MEM	0x01
+#define MULTIBOOT_INFO_FLAGS_BOOT	0x02
+#define MULTIBOOT_INFO_FLAGS_CMDLINE	0x04
+#define MULTIBOOT_INFO_FLAGS_MODS	0x08
+#define MULTIBOOT_INFO_FLAGS_SYMS1	0x10
+#define MULTIBOOT_INFO_FLAGS_SYMS2	0x20
+#define MULTIBOOT_INFO_FLAGS_MMAP	0x40
 
 #ifndef __ASM__
@@ -60,42 +71,4 @@
 } __attribute__((packed)) multiboot_module_t;
 
-/** Multiboot mmap structure */
-typedef struct {
-	uint32_t size;
-	e820memmap_t mm_info;
-} __attribute__((packed)) multiboot_memmap_t;
-
-/** Multiboot information structure */
-typedef struct {
-	uint32_t flags;
-	uint32_t mem_lower;
-	uint32_t mem_upper;
-	
-	uint32_t boot_device;
-	uint32_t cmdline;
-	
-	uint32_t mods_count;
-	mbaddr_t mods_addr;
-	
-	uint32_t syms[4];
-	
-	uint32_t mmap_length;
-	mbaddr_t mmap_addr;
-	
-	/* ... */
-} __attribute__((packed)) multiboot_info_t;
-
-enum multiboot_info_flags {
-	MULTIBOOT_INFO_FLAGS_MEM     = 0x01,
-	MULTIBOOT_INFO_FLAGS_BOOT    = 0x02,
-	MULTIBOOT_INFO_FLAGS_CMDLINE = 0x04,
-	MULTIBOOT_INFO_FLAGS_MODS    = 0x08,
-	MULTIBOOT_INFO_FLAGS_SYMS1   = 0x10,
-	MULTIBOOT_INFO_FLAGS_SYMS2   = 0x20,
-	MULTIBOOT_INFO_FLAGS_MMAP    = 0x40
-	
-	/* ... */
-};
-
 extern void multiboot_extract_command(char *, size_t, const char *);
 extern void multiboot_extract_argument(char *, size_t, const char *);
Index: kernel/genarch/include/genarch/multiboot/multiboot_info_struct.ag
===================================================================
--- kernel/genarch/include/genarch/multiboot/multiboot_info_struct.ag	(revision 7ba16eb2305f77c05ab9260d09fae55d5c25fa4f)
+++ kernel/genarch/include/genarch/multiboot/multiboot_info_struct.ag	(revision 7ba16eb2305f77c05ab9260d09fae55d5c25fa4f)
@@ -0,0 +1,81 @@
+# 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 : multiboot_info,
+        packed : true,
+
+        includes : [
+                {
+                        include : <typedefs.h>
+                },
+        ],
+
+        members : [
+                {
+                        name : flags,
+                        type : uint32_t
+                },
+                {
+                        name : mem_lower,
+                        type : uint32_t
+                },
+                {
+                        name : mem_upper,
+                        type : uint32_t
+                },
+                {
+                        name : boot_device,
+                        type : uint32_t
+                },
+                {
+                        name : cmd_line,
+                        type : uint32_t
+                },
+                {
+                        name : mods_count,
+                        type : uint32_t
+                },
+                {
+                        name : mods_addr,
+                        type : uint32_t
+                },
+                {
+                        name : syms,
+                        type : uint32_t,
+                        elements : 4,
+                },
+                {
+                        name : mmap_length,
+                        type : uint32_t,
+                },
+                {
+                        name : mmap_addr,
+                        type : uint32_t,
+                }
+        ]
+}
Index: kernel/genarch/include/genarch/multiboot/multiboot_memmap_struct.ag
===================================================================
--- kernel/genarch/include/genarch/multiboot/multiboot_memmap_struct.ag	(revision 7ba16eb2305f77c05ab9260d09fae55d5c25fa4f)
+++ kernel/genarch/include/genarch/multiboot/multiboot_memmap_struct.ag	(revision 7ba16eb2305f77c05ab9260d09fae55d5c25fa4f)
@@ -0,0 +1,51 @@
+# 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 : multiboot_memmap,
+        packed : true,
+
+        includes : [
+                {
+                        include : <typedefs.h>
+                },
+                {
+                        include : <arch/boot/memmap_struct.h>
+                }
+        ],
+
+        members : [
+                {
+                        name : size,
+                        type : uint32_t
+                },
+                {
+                        name : mm_info,
+                        type : e820memmap_t
+                }
+        ]
+}
