rem: init_double_fault(void)
add: init_double_fault(int cpuNum)
context: init_double_fault(void){	/* set up the double fault tss */	memset(&sDoubleFaultTSS, 0, sizeof(struct tss));	sDoubleFaultTSS.sp0 = (uint32)sDoubleFaultStack + sizeof(sDoubleFaultStack);	sDoubleFaultTSS.ss0 = KERNEL_DATA_SEG;	read_cr3(sDoubleFaultTSS.cr3); // copy the current cr3 to the double fault cr3	sDoubleFaultTSS.eip = (uint32)&trap8;	sDoubleFaultTSS.es = KERNEL_DATA_SEG;	sDoubleFaultTSS.cs = KERNEL_CODE_SEG;	sDoubleFaultTSS.ss = KERNEL_DATA_SEG;	sDoubleFaultTSS.ds = KERNEL_DATA_SEG;	sDoubleFaultTSS.fs = KERNEL_DATA_SEG;	sDoubleFaultTSS.gs = KERNEL_DATA_SEG;	sDoubleFaultTSS.ldt_seg_selector = KERNEL_DATA_SEG;	set_tss_descriptor(&gGDT[DOUBLE_FAULT_TSS_SEGMENT], (addr_t)&sDoubleFaultTSS, sizeof(struct tss));	x86_set_task_gate(8, DOUBLE_FAULT_TSS_SEGMENT << 3);}