summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io/mem.c')
-rw-r--r--usr/src/uts/common/io/mem.c68
1 files changed, 33 insertions, 35 deletions
diff --git a/usr/src/uts/common/io/mem.c b/usr/src/uts/common/io/mem.c
index 96262bfe1a..cde4fab94f 100644
--- a/usr/src/uts/common/io/mem.c
+++ b/usr/src/uts/common/io/mem.c
@@ -99,8 +99,6 @@ static int mm_kmem_io_access;
static int mm_kstat_update(kstat_t *ksp, int rw);
static int mm_kstat_snapshot(kstat_t *ksp, void *buf, int rw);
-static int mm_read_mem_name(intptr_t data, mem_name_t *mem_name);
-
#define MM_KMEMLOG_NENTRIES 64
static int mm_kmemlogent;
@@ -335,6 +333,8 @@ mmio(struct uio *uio, enum uio_rw rw, pfn_t pfn, off_t pageoff, int allowio,
return (error);
}
+#ifdef __sparc
+
static int
mmpagelock(struct as *as, caddr_t va)
{
@@ -349,8 +349,6 @@ mmpagelock(struct as *as, caddr_t va)
return (i);
}
-#ifdef __sparc
-
#define NEED_LOCK_KVADDR(kva) mmpagelock(&kas, kva)
#else
@@ -642,6 +640,37 @@ mmioctl_page_retire(int cmd, intptr_t data)
#ifdef __sparc
/*
+ * Read a mem_name_t from user-space and store it in the mem_name_t
+ * pointed to by the mem_name argument.
+ */
+static int
+mm_read_mem_name(intptr_t data, mem_name_t *mem_name)
+{
+ if (get_udatamodel() == DATAMODEL_NATIVE) {
+ if (copyin((void *)data, mem_name, sizeof (mem_name_t)))
+ return (EFAULT);
+ }
+#ifdef _SYSCALL32
+ else {
+ mem_name32_t mem_name32;
+
+ if (copyin((void *)data, &mem_name32, sizeof (mem_name32_t)))
+ return (EFAULT);
+ mem_name->m_addr = mem_name32.m_addr;
+ mem_name->m_synd = mem_name32.m_synd;
+ mem_name->m_type[0] = mem_name32.m_type[0];
+ mem_name->m_type[1] = mem_name32.m_type[1];
+ mem_name->m_name = (caddr_t)(uintptr_t)mem_name32.m_name;
+ mem_name->m_namelen = (size_t)mem_name32.m_namelen;
+ mem_name->m_sid = (caddr_t)(uintptr_t)mem_name32.m_sid;
+ mem_name->m_sidlen = (size_t)mem_name32.m_sidlen;
+ }
+#endif /* _SYSCALL32 */
+
+ return (0);
+}
+
+/*
* Given a syndrome, syndrome type, and address return the
* associated memory name in the provided data buffer.
*/
@@ -1086,34 +1115,3 @@ mm_kstat_snapshot(kstat_t *ksp, void *buf, int rw)
return (0);
}
-
-/*
- * Read a mem_name_t from user-space and store it in the mem_name_t
- * pointed to by the mem_name argument.
- */
-static int
-mm_read_mem_name(intptr_t data, mem_name_t *mem_name)
-{
- if (get_udatamodel() == DATAMODEL_NATIVE) {
- if (copyin((void *)data, mem_name, sizeof (mem_name_t)))
- return (EFAULT);
- }
-#ifdef _SYSCALL32
- else {
- mem_name32_t mem_name32;
-
- if (copyin((void *)data, &mem_name32, sizeof (mem_name32_t)))
- return (EFAULT);
- mem_name->m_addr = mem_name32.m_addr;
- mem_name->m_synd = mem_name32.m_synd;
- mem_name->m_type[0] = mem_name32.m_type[0];
- mem_name->m_type[1] = mem_name32.m_type[1];
- mem_name->m_name = (caddr_t)(uintptr_t)mem_name32.m_name;
- mem_name->m_namelen = (size_t)mem_name32.m_namelen;
- mem_name->m_sid = (caddr_t)(uintptr_t)mem_name32.m_sid;
- mem_name->m_sidlen = (size_t)mem_name32.m_sidlen;
- }
-#endif /* _SYSCALL32 */
-
- return (0);
-}