Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Feb 2008 18:46:02 GMT
From:      Olivier Houchard <cognet@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 134734 for review
Message-ID:  <200802031846.m13Ik24f036071@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=134734

Change 134734 by cognet@cognet-mips on 2008/02/03 18:45:26

	Wicked bad evil naughty cognet.
	the cpu_switch() code uses an hardcoded KSTACK_PAGES of 2, so just
	map the relevant entries.

Affected files ...

.. //depot/projects/mips2-jnpr/src/sys/mips/mips/vm_machdep.c#14 edit

Differences ...

==== //depot/projects/mips2-jnpr/src/sys/mips/mips/vm_machdep.c#14 (text+ko) ====

@@ -143,11 +143,11 @@
 	td2->td_frame->v1 = 1;
 	td2->td_frame->a3 = 0;
 
-	if (!(pte = pmap_segmap(kernel_pmap, (vm_offset_t)td2->td_kstack)))
+	if (!(pte = pmap_segmap(kernel_pmap, td2->td_md.md_realstack)))
 		panic("cpu_fork: invalid segmap");
-	pte += ((vm_offset_t)td2->td_kstack >> PGSHIFT) & (NPTEPG - 1);
+	pte += ((vm_offset_t)td2->td_md.md_realstack >> PGSHIFT) & (NPTEPG - 1);
 
-	for (i = 0; i < KSTACK_PAGES; i++) {
+	for (i = 0; i < KSTACK_PAGES - 1; i++) {
 		td2->td_md.md_upte[i] = *pte & ~(PG_RO|PG_WIRED);
 		pte++;
 	}
@@ -230,11 +230,11 @@
 	 * part of the thread struct so cpu_switch() can quickly map in
 	 * the pcb struct and kernel stack.
 	 */
-	if (!(pte = pmap_segmap(kernel_pmap, (vm_offset_t)td->td_kstack)))
+	if (!(pte = pmap_segmap(kernel_pmap, td->td_md.md_realstack)))
 		panic("cpu_thread_swapin: invalid segmap");
-	pte += ((vm_offset_t)td->td_kstack >> PGSHIFT) & (NPTEPG - 1);
+	pte += ((vm_offset_t)td->td_md.md_realstack >> PGSHIFT) & (NPTEPG - 1);
 
-	for (i = 0; i < KSTACK_PAGES; i++) {
+	for (i = 0; i < KSTACK_PAGES - 1; i++) {
 		td->td_md.md_upte[i] = *pte & ~(PG_RO|PG_WIRED);
 		pte++;
 	}
@@ -260,9 +260,9 @@
 	    (td->td_kstack_pages - 1) * PAGE_SIZE) - 1;
 	td->td_frame = &td->td_pcb->pcb_regs;
 
-	if (!(pte = pmap_segmap(kernel_pmap, (vm_offset_t)td->td_kstack)))
+	if (!(pte = pmap_segmap(kernel_pmap, td->td_md.md_realstack)))
 		panic("cpu_thread_alloc: invalid segmap");
-	pte += ((vm_offset_t)td->td_kstack >> PGSHIFT) & (NPTEPG - 1);
+	pte += ((vm_offset_t)td->td_md.md_realstack >> PGSHIFT) & (NPTEPG - 1);
 
 	for (i = 0; i < KSTACK_PAGES; i++) {
 		td->td_md.md_upte[i] = *pte & ~(PG_RO|PG_WIRED);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802031846.m13Ik24f036071>