diff --git a/include/asm-i386/types.h b/include/asm-i386/types.h
index 4b4b295..841792b 100644
--- a/include/asm-i386/types.h
+++ b/include/asm-i386/types.h
@@ -1,6 +1,13 @@
#ifndef _I386_TYPES_H
#define _I386_TYPES_H
+#if defined(__GNUC__)
+typedef _Bool bool;
+#else
+#warning You compiler doesn't seem to support boolean types, will set 'bool' as
an 'unsigned int'
+typedef unsigned int bool;
+#endif
+
#ifndef __ASSEMBLY__
typedef unsigned short umode_t;
@@ -10,6 +17,8 @@ typedef unsigned short umode_t;
* header files exported to user space
*/
+typedef bool __u1;
+
typedef __signed__ char __s8;
typedef unsigned char __u8;
@@ -36,6 +45,8 @@ #define BITS_PER_LONG 32
#ifndef __ASSEMBLY__
+typedef bool u1;
+
typedef signed char s8;
typedef unsigned char u8;
diff --git a/include/linux/stddef.h b/include/linux/stddef.h
index b3a2cad..498813b 100644
--- a/include/linux/stddef.h
+++ b/include/linux/stddef.h
@@ -10,6 +10,9 @@ #else
#define NULL ((void *)0)
#endif
+#define false ((0))
+#define true ((1))