PERFORCE change 71365 for review

John-Mark Gurney jmg at FreeBSD.org
Sat Feb 19 23:17:46 PST 2005


http://perforce.freebsd.org/chv.cgi?CH=71365

Change 71365 by jmg at jmg_carbon on 2005/02/20 07:17:09

	clean up a bunch of debugging printf's now that we are getting
	all the way to mi_startup, and trying to start init...
	
	we still have a problem with the I/D caches though...
	
	KDB: debugger backends: ddb
	KDB: current backend: ddb
	Copyright (c) 1992-2005 The FreeBSD Project.
	Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
		The Regents of the University of California. All rights reserved.
	FreeBSD 6.0-CURRENT #82: Sat Feb 19 19:11:20 PST 2005
	    jmg at carbon.funkthat.com:/usr/home/jmg/p4/arm/src/sys/arm/compile/TS7200
	Preloaded elf kernel "elf kernel" at 0xc04867cc.
	Old value: 207b, new value : 217b
	ARM920T rev 0 (ARM9TDMI core)
	 DC disabled IC disabled WB enabled LABT16KB/32B 64-way Instruction cache
	16KB/32B 64-way write-back-locking-A Data cache
	
	panic: free: address 0xc0ba6000(0xc0ba6000) has not been allocated.

Affected files ...

.. //depot/projects/arm/src/sys/arm/ep93xx/ts7200_machdep.c#2 edit

Differences ...

==== //depot/projects/arm/src/sys/arm/ep93xx/ts7200_machdep.c#2 (text+ko) ====

@@ -217,13 +217,12 @@
 	int i = 0;
 	uint32_t fake_preload[35];
 	uint32_t memsize = 32*1024*1024; /* XXX */
-	int bla;
 
 	boothowto |= RB_VERBOSE | RB_SINGLE;
 	i = 0;
 	set_cpufuncs();
 	cninit();
-	printf("cninit called\n");
+
 	fake_preload[i++] = MODINFO_NAME;
 	fake_preload[i++] = strlen("elf kernel") + 1;
 	strcpy((char*)&fake_preload[i++], "elf kernel");
@@ -243,13 +242,10 @@
 	preload_metadata = (void *)fake_preload;
 
 	physmem = memsize / PAGE_SIZE;
-	printf("mem: %ld\n", physmem);
 
 	pcpu_init(pcpup, 0, sizeof(struct pcpu));
 	PCPU_SET(curthread, &thread0);
 
-	printf("pcpu init done\n");
-
 	physical_start = (vm_offset_t) SDRAM_START;
 	physical_end =  (vm_offset_t) &end + SDRAM_START - 0xc0000000;
 #define KERNEL_TEXT_BASE (KERNBASE + 0x00200000)
@@ -281,14 +277,10 @@
 			kernel_pt_table[loop].pv_va = 
 			    kernel_pt_table[loop].pv_pa + 0xc0000000;
 		}
-		printf("kernel[%d], va: 0x%08x, pa: 0x%08x\n", loop,
-		    kernel_pt_table[loop].pv_va, kernel_pt_table[loop].pv_pa);
 		i++;
 	}
 	freemempos -= 2 * PAGE_SIZE;
 
-	printf("page table up\n");
-
 	freemem_pt = freemempos;
 	freemempos = 0x00100000;
 	/*
@@ -306,8 +298,6 @@
 	valloc_pages(minidataclean, 1);
 	valloc_pages(msgbufpv, round_page(MSGBUF_SIZE) / PAGE_SIZE);
 
-	printf("stack setup\n");
-
 	/*
 	 * Allocate memory for the l1 and l2 page tables. The scheme to avoid
 	 * wasting memory by allocating the l1pt on the first 16k memory was
@@ -322,41 +312,29 @@
 	 */
 	l1pagetable = kernel_l1pt.pv_pa;
 
-	printf("phys end: %d\n", physical_end);
-	printf("l1page, pt: %08x, va: %08x, pvaddr: %p\n", l1pagetable,
-	    ARM_VECTORS_HIGH & ~(0x00100000 - 1),
-	    &kernel_pt_table[KERNEL_PT_SYS]);
-
 	/* Map the L2 pages tables in the L1 page table */
 	pmap_link_l2pt(l1pagetable, ARM_VECTORS_HIGH & ~(0x00100000 - 1),
 	    &kernel_pt_table[KERNEL_PT_SYS]);
-	printf("linkl2pt\n");
 	for (i = 0; i < KERNEL_PT_KERNEL_NUM; i++) {
 		pmap_link_l2pt(l1pagetable, KERNBASE + i * 0x00100000,
 		    &kernel_pt_table[KERNEL_PT_KERNEL + i]);
 	}
-	printf("afterforkernelnum\n");
 	for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; ++loop)
 		pmap_link_l2pt(l1pagetable, KERNBASE + (i + loop) * 0x00100000,
 		    &kernel_pt_table[KERNEL_PT_VMDATA + loop]);
-	printf("afterforvmdata, freemempos: 0x%08x\n", freemempos);
 	pmap_map_chunk(l1pagetable, KERNBASE, SDRAM_START,
 	    freemempos - 0x00000000 + 0x1000,
 	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
-	printf("pmapchunk a\n");
 	pmap_map_chunk(l1pagetable, KERNBASE + 0x100000, SDRAM_START + 0x100000,
 	    0x100000, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE);
-	printf("pmapchunk b\n");
+	/* map the kernel into the page table */
 	pmap_map_chunk(l1pagetable, KERNBASE + 0x200000, SDRAM_START + 0x200000,
-	   (((uint32_t)(&end) - KERNBASE - 0x200000) + L1_S_SIZE) & ~(L1_S_SIZE - 1),
-	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
-	printf("pmapchunk c\n");
+	    (((uint32_t)(&end) - KERNBASE - 0x200000) + L1_S_SIZE) &
+	    ~(L1_S_SIZE - 1), VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
 	freemem_after = ((int)&end + PAGE_SIZE) & ~(PAGE_SIZE - 1);
 	afterkern = round_page(((vm_offset_t)&end + L1_S_SIZE) & ~(L1_S_SIZE 
 	    - 1));
 
-	printf("another place\n");
-
 	/* Map the stack pages */
 #define	alloc_afterkern(va, pa, size)	\
 	va = freemem_after;		\
@@ -405,33 +383,19 @@
 		pmap_map_chunk(l1pagetable, msgbufpv.pv_va, msgbufpv.pv_pa,
 		    MSGBUF_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
 
-	printf("after bunch of pmap's\n");
-
 	/* Map the vector page. */
 	pmap_map_entry(l1pagetable, ARM_VECTORS_HIGH, systempage.pv_pa,
 	    VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
 	pmap_devmap_bootstrap(l1pagetable, tsarm_devmap);
 
-	printf("foo\n");
-
 	cpu_domains((DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2)) | DOMAIN_CLIENT);
 
-	printf("bar\n");
-
-	__asm("mov %0, pc": "=r" (bla));
-	printf("pc: %x\n", bla);
-
-	setttb(kernel_l1pt.pv_va);
+	setttb(kernel_l1pt.pv_pa);
 
-	printf("baz\n");
-
 	cpu_tlb_flushID();
 
-	printf("bleh\n");
-
 	cpu_domains(DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL*2));
 
-	printf("XXX: MMU Enabled /o/\n");
 	/*
 	 * Pages were allocated during the secondary bootstrap for the
 	 * stacks for different CPU modes.


More information about the p4-projects mailing list