Index: kernel/arch/amd64/include/arch/pm.h
===================================================================
--- kernel/arch/amd64/include/arch/pm.h	(revision 69483afb4ed992ce19b27e381a584d8995ffe694)
+++ kernel/arch/amd64/include/arch/pm.h	(revision 4a5a18bec3fd7337a3a2a793ccab2f7149bb5b4a)
@@ -57,9 +57,10 @@
 #ifdef CONFIG_FB
 
-#define VESA_INIT_DES      8
 #define VESA_INIT_SEGMENT  0x8000
+#define VESA_INIT_CODE_DES      8
+#define VESA_INIT_DATA_DES      9
 
 #undef GDT_ITEMS
-#define GDT_ITEMS  9
+#define GDT_ITEMS  10
 
 #endif /* CONFIG_FB */
Index: kernel/arch/amd64/src/pm.c
===================================================================
--- kernel/arch/amd64/src/pm.c	(revision 69483afb4ed992ce19b27e381a584d8995ffe694)
+++ kernel/arch/amd64/src/pm.c	(revision 4a5a18bec3fd7337a3a2a793ccab2f7149bb5b4a)
@@ -112,8 +112,6 @@
 	/* VESA Init descriptor */
 #ifdef CONFIG_FB
-	{
-		0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | DPL_KERNEL,
-		    0xf, 0, 0, 0, 0, 0
-	}
+	{ 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | AR_READABLE | DPL_KERNEL, 0xf, 0, 0, 0, 0, 0 },
+	{ 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_DATA | AR_WRITABLE | DPL_KERNEL, 0xf, 0, 0, 0, 0, 0 }
 #endif
 };
Index: kernel/arch/ia32/include/arch/pm.h
===================================================================
--- kernel/arch/ia32/include/arch/pm.h	(revision 69483afb4ed992ce19b27e381a584d8995ffe694)
+++ kernel/arch/ia32/include/arch/pm.h	(revision 4a5a18bec3fd7337a3a2a793ccab2f7149bb5b4a)
@@ -50,9 +50,10 @@
 
 #define VESA_INIT_SEGMENT  0x8000
-#define VESA_INIT_DES      7
+#define VESA_INIT_CODE_DES      7
+#define VESA_INIT_DATA_DES      8
 #define KTEXT32_DES        KTEXT_DES
 
 #undef GDT_ITEMS
-#define GDT_ITEMS  8
+#define GDT_ITEMS  9
 
 #endif /* CONFIG_FB */
@@ -67,4 +68,5 @@
 #define AR_CODE       (3 << 3)
 #define AR_WRITABLE   (1 << 1)
+#define AR_READABLE   (1 << 1)
 #define AR_INTERRUPT  (0xe)
 #define AR_TRAP       (0xf)
Index: kernel/arch/ia32/src/boot/vesa_real.inc
===================================================================
--- kernel/arch/ia32/src/boot/vesa_real.inc	(revision 69483afb4ed992ce19b27e381a584d8995ffe694)
+++ kernel/arch/ia32/src/boot/vesa_real.inc	(revision 4a5a18bec3fd7337a3a2a793ccab2f7149bb5b4a)
@@ -31,5 +31,14 @@
 vesa_init:
 	lidtl vesa_idtr
-	jmp $GDT_SELECTOR(VESA_INIT_DES), $vesa_init_real - vesa_init
+	
+	mov $GDT_SELECTOR(VESA_INIT_DATA_DES), %bx
+	
+	mov %bx, %es
+	mov %bx, %fs
+	mov %bx, %gs
+	mov %bx, %ds
+	mov %bx, %ss
+	
+	jmp $GDT_SELECTOR(VESA_INIT_CODE_DES), $vesa_init_real - vesa_init
 
 vesa_idtr:
@@ -39,5 +48,4 @@
 .code16
 vesa_init_real:
-	
 	mov %cr0, %eax
 	and $~1, %eax
@@ -45,5 +53,5 @@
 	
 	jmp $VESA_INIT_SEGMENT, $vesa_init_real2 - vesa_init
-	
+
 vesa_init_real2:
 	mov $VESA_INIT_SEGMENT, %bx
Index: kernel/arch/ia32/src/pm.c
===================================================================
--- kernel/arch/ia32/src/pm.c	(revision 69483afb4ed992ce19b27e381a584d8995ffe694)
+++ kernel/arch/ia32/src/pm.c	(revision 4a5a18bec3fd7337a3a2a793ccab2f7149bb5b4a)
@@ -75,5 +75,6 @@
 	/* VESA Init descriptor */
 #ifdef CONFIG_FB
-	{ 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | DPL_KERNEL, 0xf, 0, 0, 0, 0, 0 }
+	{ 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | AR_READABLE | DPL_KERNEL, 0xf, 0, 0, 0, 0, 0 },
+	{ 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_DATA | AR_WRITABLE | DPL_KERNEL, 0xf, 0, 0, 0, 0, 0 }
 #endif
 };
