Module Name:    src
Committed By:   thorpej
Date:           Tue Jan  9 14:24:08 UTC 2024

Modified Files:
        src/sys/arch/virt68k/virt68k: locore.s machdep.c

Log Message:
Properly implement mm_md_physacc() and garbage-collect the now unused
"lowram" variable (hold-over from hp300 lineage).


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/virt68k/virt68k/locore.s
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/virt68k/virt68k/machdep.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/virt68k/virt68k/locore.s
diff -u src/sys/arch/virt68k/virt68k/locore.s:1.5 src/sys/arch/virt68k/virt68k/locore.s:1.6
--- src/sys/arch/virt68k/virt68k/locore.s:1.5	Tue Jan  9 07:28:26 2024
+++ src/sys/arch/virt68k/virt68k/locore.s	Tue Jan  9 14:24:08 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.5 2024/01/09 07:28:26 thorpej Exp $	*/
+/*	$NetBSD: locore.s,v 1.6 2024/01/09 14:24:08 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -83,7 +83,6 @@ ASLOCAL(tmpstk)
 #define	RELOC(var, ar)		_RELOC(_C_LABEL(var), ar)
 #define	ASRELOC(var, ar)	_RELOC(_ASM_LABEL(var), ar)
 
-BSS(lowram,4)
 BSS(esym,4)
 
 	.globl	_C_LABEL(edata)
@@ -113,9 +112,6 @@ ASENTRY_NOPROFILE(start)
 1:	clrl	%a0@+
 	dbra	%d0,1b
 
-	RELOC(lowram, %a0)
-	movl	%a5,%a0@		| store start of physical memory
-
 	/*
 	 * Qemu does not pass us the symbols, so leave esym alone.
 	 * The bootinfo immediately follows the kernel.  Go parse

Index: src/sys/arch/virt68k/virt68k/machdep.c
diff -u src/sys/arch/virt68k/virt68k/machdep.c:1.6 src/sys/arch/virt68k/virt68k/machdep.c:1.7
--- src/sys/arch/virt68k/virt68k/machdep.c:1.6	Mon Jan  8 05:10:51 2024
+++ src/sys/arch/virt68k/virt68k/machdep.c	Tue Jan  9 14:24:08 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.6 2024/01/08 05:10:51 thorpej Exp $	*/
+/*	$NetBSD: machdep.c,v 1.7 2024/01/09 14:24:08 thorpej Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.6 2024/01/08 05:10:51 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.7 2024/01/09 14:24:08 thorpej Exp $");
 
 #include "opt_ddb.h"
 #include "opt_m060sp.h"
@@ -113,7 +113,6 @@ paddr_t msgbufpa;		/* PA of message buff
 
 // int	maxmem;			/* max memory per process */
 
-extern	u_int lowram;
 extern	short exframesize[];
 
 /* prototypes for local functions */ 
@@ -902,6 +901,18 @@ const uint16_t ipl2psl_table[NIPL] = {
 int
 mm_md_physacc(paddr_t pa, vm_prot_t prot)
 {
+	psize_t size;
+	int i;
 
-	return (pa < lowram || pa >= 0xfffffffc) ? EFAULT : 0;
+	for (i = 0; i < bootinfo_mem_nsegments; i++) {
+		if (pa < bootinfo_mem_segments[i].mem_addr) {
+			continue;
+		}
+		size = trunc_page(bootinfo_mem_segments[i].mem_size);
+		if (pa >= bootinfo_mem_segments[i].mem_addr + size) {
+			continue;
+		}
+		return 0;
+	}
+	return EFAULT;
 }

Reply via email to