Index: arch/amd64/src/boot/boot.S
===================================================================
--- arch/amd64/src/boot/boot.S	(revision 8ccec3c161d21bb34fa69cec1fd8d025f1a5e72e)
+++ arch/amd64/src/boot/boot.S	(revision 677a6d50fe04baf1fc4de579c24ea8dd8da3099b)
@@ -50,4 +50,5 @@
 .code16
 .global kernel_image_start
+.global multiboot_image_start
 kernel_image_start:
 	cli
@@ -96,5 +97,18 @@
 multiboot_image_start:
 	movl $START_STACK, %esp				# initialize stack pointer
-	# FIXME TODO
+	
+	lgdt protected_bootstrap_gdtr + BOOT_OFFSET		# initialize Global Descriptor Table register
+
+	movw $gdtselector(KDATA_DES), %cx
+	movw %cx, %es
+	movw %cx, %gs
+	movw %cx, %fs
+	movw %cx, %ds							# kernel data + stack
+	movw %cx, %ss
+	
+	jmpl $gdtselector(KTEXT_DES), $multiboot_meeting_point + BOOT_OFFSET
+	multiboot_meeting_point:
+	
+	hlt
 
 # Protected 32-bit. We want to reuse the code-seg descriptor,
@@ -209,2 +223,7 @@
 	.word gdtselector(GDT_ITEMS)
 	.long KA2PA(gdt)-BOOT_OFFSET
+
+.global protected_bootstrap_gdtr
+protected_bootstrap_gdtr:
+	.word gdtselector(GDT_ITEMS)
+	.long KA2PA(gdt)
