Module Name:    src
Committed By:   martin
Date:           Thu Jan  3 07:51:49 UTC 2013

Modified Files:
        src/sys/arch/sparc64/sparc64: db_interface.c

Log Message:
There is no point in trying to tell userland access from kernel access by
looking at the address on sparc64 - so, let us believe the comment and always
deal with kernel access here.
While there, fix write access to kernel text for bigger kernels.


To generate a diff of this commit:
cvs rdiff -u -r1.130 -r1.131 src/sys/arch/sparc64/sparc64/db_interface.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/sparc64/sparc64/db_interface.c
diff -u src/sys/arch/sparc64/sparc64/db_interface.c:1.130 src/sys/arch/sparc64/sparc64/db_interface.c:1.131
--- src/sys/arch/sparc64/sparc64/db_interface.c:1.130	Sat Feb 18 15:56:30 2012
+++ src/sys/arch/sparc64/sparc64/db_interface.c	Thu Jan  3 07:51:48 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_interface.c,v 1.130 2012/02/18 15:56:30 christos Exp $ */
+/*	$NetBSD: db_interface.c,v 1.131 2013/01/03 07:51:48 martin Exp $ */
 
 /*
  * Copyright (c) 1996-2002 Eduardo Horvath.  All rights reserved.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.130 2012/02/18 15:56:30 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.131 2013/01/03 07:51:48 martin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ddb.h"
@@ -358,10 +358,7 @@ db_read_bytes(db_addr_t addr, size_t siz
 
 	src = (char *)(uintptr_t)addr;
 	while (size-- > 0) {
-		if (src >= (char *)VM_MIN_KERNEL_ADDRESS)
-			*data++ = probeget((paddr_t)(u_long)src++, ASI_P, 1);
-		else
-			*data++ = fubyte(src++);
+		*data++ = probeget((paddr_t)(u_long)src++, ASI_P, 1);
 	}
 }
 
@@ -374,17 +371,16 @@ db_write_bytes(db_addr_t addr, size_t si
 {
 	char *dst;
 	extern paddr_t pmap_kextract(vaddr_t va);
+	extern vaddr_t ektext;
 
 	dst = (char *)(uintptr_t)addr;
 	while (size-- > 0) {
-		if ((dst >= (char *)VM_MIN_KERNEL_ADDRESS+0x400000))
-			*dst = *data;
-		else if ((dst >= (char *)VM_MIN_KERNEL_ADDRESS) &&
-			 (dst < (char *)VM_MIN_KERNEL_ADDRESS+0x400000))
+		if ((dst >= (char *)VM_MIN_KERNEL_ADDRESS) &&
+			 (dst < (char *)ektext))
 			/* Read Only mapping -- need to do a bypass access */
 			stba(pmap_kextract((vaddr_t)dst), ASI_PHYS_CACHED, *data);
 		else
-			subyte(dst, *data);
+			*dst = *data;
 		dst++, data++;
 	}
 

Reply via email to