Index: src/cpu/cpu.c
===================================================================
--- src/cpu/cpu.c	(revision 76cec1e21a9510de8780a546f59799bc82003d87)
+++ src/cpu/cpu.c	(revision c5ae0958a7a30e5fbec3fbd14476375a8f78bc5b)
@@ -40,8 +40,5 @@
 #include <list.h>
 
-
-cpu_private_data_t *cpu_private_data;
 cpu_t *cpus;
-
 
 /** Initialize CPUs
@@ -56,8 +53,4 @@
 	if (config.cpu_active == 1) {
 	#endif /* __SMP__ */
-		cpu_private_data = (cpu_private_data_t *) malloc(sizeof(cpu_private_data_t) * config.cpu_count);
-		if (!cpu_private_data)
-			panic("malloc/cpu_private_data");
-
 		cpus = (cpu_t *) malloc(sizeof(cpu_t) * config.cpu_count);
 		if (!cpus)
@@ -65,9 +58,8 @@
 
 		/* initialize everything */
-		memsetb((__address) cpu_private_data, sizeof(cpu_private_data_t) * config.cpu_count, 0);
 		memsetb((__address) cpus, sizeof(cpu_t) * config.cpu_count, 0);
 
 		for (i=0; i < config.cpu_count; i++) {
-			cpus[i].stack = (__u8 *) malloc(CPU_STACK_SIZE);
+			cpus[i].stack = (__u8 *) frame_alloc(FRAME_KA | FRAME_PANIC);
 			if (!cpus[i].stack)
 				panic("malloc/cpus[%d].stack\n", i);
@@ -87,4 +79,6 @@
 	}
 	#endif /* __SMP__ */
+
+	CPU = &cpus[config.cpu_active-1];
 	
 	CPU->active = 1;
