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++; }