Module Name: src
Committed By: tsutsui
Date: Wed Jul 1 13:44:33 UTC 2009
Modified Files:
src/sys/arch/atari/atari: atari_init.c
Log Message:
Define and use macro to calculate kernel physical addresses
after relocation to TT RAM. No binary changes.
To generate a diff of this commit:
cvs rdiff -u -r1.79 -r1.80 src/sys/arch/atari/atari/atari_init.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/atari/atari/atari_init.c
diff -u src/sys/arch/atari/atari/atari_init.c:1.79 src/sys/arch/atari/atari/atari_init.c:1.80
--- src/sys/arch/atari/atari/atari_init.c:1.79 Wed Mar 18 16:00:10 2009
+++ src/sys/arch/atari/atari/atari_init.c Wed Jul 1 13:44:32 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: atari_init.c,v 1.79 2009/03/18 16:00:10 cegger Exp $ */
+/* $NetBSD: atari_init.c,v 1.80 2009/07/01 13:44:32 tsutsui Exp $ */
/*
* Copyright (c) 1995 Leo Weppelman
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: atari_init.c,v 1.79 2009/03/18 16:00:10 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: atari_init.c,v 1.80 2009/07/01 13:44:32 tsutsui Exp $");
#include "opt_ddb.h"
#include "opt_mbtype.h"
@@ -153,6 +153,8 @@
#endif
int reloc_kernel = RELOC_KERNEL; /* Patchable */
+#define RELOC_PA(base, pa) ((base) + (pa)) /* used to set up PTE etc. */
+
/*
* this is the C-level entry function, it's called from locore.s.
* Preconditions:
@@ -358,7 +360,7 @@
* - Text pages are RO
* - Page zero is invalid
*/
- pg_proto = (0 + kbase) /* relocated PA */ | PG_RO | PG_V;
+ pg_proto = RELOC_PA(kbase, 0) | PG_RO | PG_V;
pg = (pt_entry_t *)ptpa;
*pg++ = PG_NV;
@@ -934,8 +936,8 @@
sg = (st_entry_t *)sysseg_pa;
pg = (pt_entry_t *)sysptmap_pa;
epg = &pg[ptsize >> PGSHIFT];
- sg_proto = (ptpa + kbase) /* relocated PA */ | SG_RW | SG_V;
- pg_proto = (ptpa + kbase) /* relocated PA */ | PG_RW | PG_CI | PG_V;
+ sg_proto = RELOC_PA(kbase, ptpa) | SG_RW | SG_V;
+ pg_proto = RELOC_PA(kbase, ptpa) | PG_RW | PG_CI | PG_V;
while (pg < epg) {
*sg++ = sg_proto;
*pg++ = pg_proto;
@@ -962,8 +964,8 @@
sg = &sg[256 - 1]; /* XXX should be TIA_SIZE */
pg = (pt_entry_t *)sysptmap_pa;
pg = &pg[256 - 1]; /* XXX should be TIA_SIZE */
- *sg = (sysptmap_pa + kbase) /* relocated PA */ | SG_RW | SG_V;
- *pg = (sysptmap_pa + kbase) /* relocated PA */ | PG_RW | PG_CI | PG_V;
+ *sg = RELOC_PA(kbase, sysptmap_pa) | SG_RW | SG_V;
+ *pg = RELOC_PA(kbase, sysptmap_pa) | PG_RW | PG_CI | PG_V;
}
#if defined(M68040) || defined(M68060)
@@ -1001,7 +1003,7 @@
sg = (st_entry_t *)sysseg_pa;
sg = &sg[SG4_LEV1SIZE];
esg = &sg[nl2desc];
- sg_proto = (ptpa + kbase) /* relocated PA */ | SG_U | SG_RW | SG_V;
+ sg_proto = RELOC_PA(kbase, ptpa) | SG_U | SG_RW | SG_V;
while (sg < esg) {
*sg++ = sg_proto;
sg_proto += (SG4_LEV3SIZE * sizeof(st_entry_t));
@@ -1015,7 +1017,7 @@
nl1desc = howmany(nl2desc, SG4_LEV2SIZE);
sg = (st_entry_t *)sysseg_pa;
esg = &sg[nl1desc];
- sg_proto = ((paddr_t)&sg[SG4_LEV1SIZE] + kbase) /* relocated PA */
+ sg_proto = RELOC_PA(kbase, (paddr_t)&sg[SG4_LEV1SIZE])
| SG_U | SG_RW | SG_V;
while (sg < esg) {
*sg++ = sg_proto;
@@ -1034,8 +1036,7 @@
sg = (st_entry_t *)sysseg_pa;
sg = &sg[i + SG4_LEV2SIZE - (NPTEPG / SG4_LEV3SIZE)];
esg = &sg[NPTEPG / SG4_LEV3SIZE];
- sg_proto = (sysptmap_pa + kbase) /* relocated PA */
- | SG_U | SG_RW | SG_V;
+ sg_proto = RELOC_PA(kbase, sysptmap_pa) | SG_U | SG_RW | SG_V;
while (sg < esg) {
*sg++ = sg_proto;
sg_proto += (SG4_LEV3SIZE * sizeof(st_entry_t));
@@ -1049,7 +1050,7 @@
*/
pg = (pt_entry_t *)sysptmap_pa;
epg = &pg[ptsize >> PGSHIFT];
- pg_proto = (ptpa + kbase) /* relocated PA */ | PG_RW | PG_CI | PG_V;
+ pg_proto = RELOC_PA(kbase + ptpa) | PG_RW | PG_CI | PG_V;
while (pg < epg) {
*pg++ = pg_proto;
pg_proto += PAGE_SIZE;
@@ -1068,7 +1069,7 @@
*/
pg = (pt_entry_t *)sysptmap_pa;
pg = &pg[256 - 1]; /* XXX: should be TIA_SIZE */
- *pg = (sysptmap_pa + kbase) /* relocated PA */ | PG_RW | PG_CI | PG_V;
+ *pg = RELOC_PA(kbase, sysptmap_pa) | PG_RW | PG_CI | PG_V;
}
#endif /* M68040 */