Index: kernel/arch/ia32/include/cpuid.h
===================================================================
--- kernel/arch/ia32/include/cpuid.h	(revision eada065ed94f5f5b588f03c3685cfed92a7987e8)
+++ kernel/arch/ia32/include/cpuid.h	(revision 82bb9c121efbe640882ffd5dbdc9101eb995d0fa)
@@ -35,4 +35,11 @@
 #ifndef KERN_ia32_CPUID_H_
 #define KERN_ia32_CPUID_H_
+
+#define INTEL_CPUID_LEVEL     0x00000000
+#define INTEL_CPUID_STANDARD  0x00000001
+#define INTEL_PSE             3
+#define INTEL_SEP             11
+
+#ifndef __ASM__
 
 #include <arch/types.h>
@@ -105,4 +112,5 @@
 }
 
+#endif /* !def __ASM__ */
 #endif
 
Index: kernel/arch/ia32/src/boot/boot.S
===================================================================
--- kernel/arch/ia32/src/boot/boot.S	(revision eada065ed94f5f5b588f03c3685cfed92a7987e8)
+++ kernel/arch/ia32/src/boot/boot.S	(revision 82bb9c121efbe640882ffd5dbdc9101eb995d0fa)
@@ -32,4 +32,5 @@
 #include <arch/mm/page.h>
 #include <arch/pm.h>
+#include <arch/cpuid.h>
 
 #define START_STACK (BOOT_OFFSET - BOOT_STACK_SIZE)
@@ -68,11 +69,12 @@
 	movl %ebx, grub_ebx
 	
-	xorl %eax, %eax
+	movl $(INTEL_CPUID_LEVEL), %eax
 	cpuid
 	cmp $0x0, %eax              # any function > 0?
 	jbe pse_unsupported
-	movl $0x1, %eax             # basic function code 1
+	
+	movl $(INTEL_CPUID_STANDARD), %eax
 	cpuid
-	bt $3, %edx                 # test if PSE is supported
+	bt $(INTEL_PSE), %edx
 	jc pse_supported
 	
@@ -82,4 +84,12 @@
 	
 	pse_supported:
+	
+	bt $(INTEL_SEP), %edx
+	jc sep_supported
+	
+		movl $sep_msg, %esi
+		jmp error_halt
+	
+	sep_supported:
 
 #include "vesa_prot.inc"
@@ -214,2 +224,5 @@
 pse_msg:
 	.asciz "Page Size Extension not supported. System halted."
+
+sep_msg:
+	.asciz "SYSENTER/SYSEXIT not supported. System halted."
