rem: : : "m" (gKernelArgs.cpu_kstack[0].start + gKernelArgs.cpu_kstack[0].size));
add: : : "m" (stackTop));
context: platform_start_kernel(void){	static struct kernel_args *args = &gKernelArgs;		// something goes wrong when we pass &gKernelArgs directly		// to the assembler inline below - might be a bug in GCC		// or I don't see something important...	mmu_init_for_kernel();	cpu_boot_other_cpus();	printf("kernel entry at %lx\n", gKernelArgs.kernel_image.elf_header.e_entry);	asm("movl	%0, %%eax;	"			// move stack out of way		"movl	%%eax, %%esp; "		: : "m" (gKernelArgs.cpu_kstack[0].start + gKernelArgs.cpu_kstack[0].size));	asm("pushl  $0x0; "					// we're the BSP cpu (0)		"pushl 	%0;	"					// kernel args		"pushl 	$0x0;"					// dummy retval for call to main		"pushl 	%1;	"					// this is the start address		"ret;		"					// jump.		: : "g" (args), "g" (gKernelArgs.kernel_image.elf_header.e_entry));	panic("kernel returned!\n");}