diff --git a/core/runkernel.inc b/core/runkernel.inc
index f6ed644..286c9c8 100644
--- a/core/runkernel.inc
+++ b/core/runkernel.inc
@@ -259,7 +259,7 @@ read_kernel:
                 mov ecx,8000h			; 32K
 		sub ecx,esi			; Number of bytes to copy
 		add esi,(real_mode_seg << 4)	; Pointer to source
-                mov edi,100000h                 ; Copy to address 100000h
+                mov edi,[KernelStart]           ; Copy to kernel address
 
                 call bcopy			; Transfer to high memory
 
@@ -431,7 +431,7 @@ setup_move:
 
 		mov eax,10000h			; Target address of low kernel
 		stosd
-		mov eax,100000h			; Where currently loaded
+		mov eax,[KernelStart]		; Where currently loaded
 		stosd
 		neg eax
 		add eax,[KernelEnd]
@@ -439,9 +439,13 @@ setup_move:
 		inc cx
 
 		mov bx,9000h			; Revised real mode segment
+		jmp .loading_initrd
 
 .loading_high:
+		mov eax,[KernelStart]
+		mov [fs:su_code32start],eax
 
+.loading_initrd:
 		cmp word [InitRDPtr],0		; Did we have an initrd?
 		je .no_initrd
 
@@ -692,3 +696,5 @@ LoadFlags	resb 1			; Loadflags from kernel
 
 		section .data
 QuietBoot	db 0			; Set if a quiet boot is requested
+		alignz 4
+KernelStart	dd 100000h
