Re: Current kernel with http://gnats.netbsd.org/39965 and pmap patches

Izumi Tsutsui <[email protected]>
Newsgroups gmane.os.netbsd.ports.atari
Message-ID <[email protected]>
I wrote:

> --- atari/atari_init.c.0	2008-12-17 19:12:51.000000000 +0900
> +++ atari/atari_init.c	2008-12-17 23:47:19.000000000 +0900
 :

Ah, there is a bad pasto. Please try this one.


--- atari/atari_init.c.0	2008-12-17 19:12:51.000000000 +0900
+++ atari/atari_init.c	2008-12-18 00:46:07.000000000 +0900
@@ -918,15 +918,15 @@
 	u_int		sysptmap_pa;	/* System page table		*/
 	u_int		kbase;
 {
-	st_entry_t	sg_proto, *sg;
+	st_entry_t	sg_proto, *sg, *esg;
 	pt_entry_t	pg_proto, *pg, *epg;
 
 	/*
 	 * Map the page table pages in both the HW segment table
 	 * and the software Sysptmap.
 	 */
-	sg  = (u_int *)Sysseg_pa;
-	pg  = (u_int *)sysptmap_pa;
+	sg  = (st_entry_t *)Sysseg_pa;
+	pg  = (pt_entry_t *)sysptmap_pa;
 	epg = &pg[ptsize >> PGSHIFT];
 	sg_proto = ((u_int)pt + kbase) | SG_RW | SG_V;
 	pg_proto = ((u_int)pt + kbase) | PG_RW | PG_CI | PG_V;
@@ -938,14 +938,20 @@
 	}
 
 	/* 
-	 * invalidate the remainder of the tables
+	 * Invalidate the remainder of the tables.
 	 */
-	/* XXX PAGE_SIZE dependent constant: 256 or 1024 */
-	epg = (u_int *)(sysptmap_pa + (256 - 1) * sizeof(st_entry_t));
-	while(pg < epg) {
+#define TIA_SIZE	256
+	esg = (st_entry_t *)(Sysseg_pa + (TIA_SIZE - 1) * sizeof(st_entry_t));
+	while (sg < esg)
 		*sg++ = SG_NV;
+
+	epg = (pt_entry_t *)(sysptmap_pa + (NPTEPG - 1) * sizeof(pt_entry_t));
+	while (pg < epg)
 		*pg++ = PG_NV;
-	}
+
+	/*
+	 * Initialize the last one to point Sysptmap.
+	 */
 	*sg = sysptmap_pa | SG_RW | SG_V;
 	*pg = sysptmap_pa | PG_RW | PG_CI | PG_V;
 }

---
Izumi Tsutsui
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.