From nobody Fri Jan 07 13:30:57 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id CF8A1194099C; Fri, 7 Jan 2022 13:30:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4JVkcy08wkz4hJl; Fri, 7 Jan 2022 13:30:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1C8664231; Fri, 7 Jan 2022 13:30:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 207DUvdM032871; Fri, 7 Jan 2022 13:30:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 207DUvKU032859; Fri, 7 Jan 2022 13:30:57 GMT (envelope-from git) Date: Fri, 7 Jan 2022 13:30:57 GMT Message-Id: <202201071330.207DUvKU032859@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Hans Petter Selasky Subject: git: e967ace28f4b - stable/13 - Implement suword16() for the 32/64-bit PowerPC architecture. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: hselasky X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: e967ace28f4b38e0667c53769d984220590c8fd4 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1641562258; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=4zq1pWfObStgtQwRkfM4M9q3a0r735by9FK/nPz2VRA=; b=kJRj2IJQUcG2E8GH9p8xnLCtmBGkG5O0fOdlNZnvNohg7pkNzHseqZhciNPI5mETbAjRpn ZUhnwL910M7NP/oowHuTjwvuBIRnk3nyD18c42Cr1aF4L05Q8kBJeW13xf1hYB3GuWQrln FBnfXuMFHgJX98E4Gw+rJBT/paJdh/ccQb7hG//EbApjZMfpFsKchiv6zct6OqFFxuPgsD hkWQsySAj8wDB1x2U7KQLIXnjktEoFlgmzs1M/9OhodkqYGKKJzQQbaOPof+uyGKASSTI1 afB7tX1KMDoi59L2WHapW4hc+9JXlAeCk4KhFI4T/ImGup7HKHSCfGDD4dtSsg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1641562258; a=rsa-sha256; cv=none; b=p8ks6EzvtznO1xlrkOIeQdiiOQxmiSZjxb9WLy9LlNVJcXr7rAR78T4KTb77anPIQN+U/B 75hBRB9wtWxHz0aGtIrAMUF87TgaiI/M4y03c/M5mqgkufd1YsPLtqdGn+pmzIRiodZI9z QFcgXKWbzywf2TRzQyRe/nhVMT0bf/hW6NfkPUOnTS5YKIWQge8IqLoR8/zv6QXnNCnQqL bdGRKdwNJCc0cb68mD6G4MQEUdx8aA8QBcICrR2emS+0AL3XfOBC8u+hKg2WAq/Daf8uf3 dJCSC/M7xkgbiQOtaEMZrKXrsIuDOH36kb1EcUgemS2VJcu8uoYCUR25NwTdBg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by hselasky: URL: https://cgit.FreeBSD.org/src/commit/?id=e967ace28f4b38e0667c53769d984220590c8fd4 commit e967ace28f4b38e0667c53769d984220590c8fd4 Author: Hans Petter Selasky AuthorDate: 2021-12-19 11:19:53 +0000 Commit: Hans Petter Selasky CommitDate: 2022-01-07 13:25:17 +0000 Implement suword16() for the 32/64-bit PowerPC architecture. Sponsored by: NVIDIA Networking (cherry picked from commit e98efdd973560e66557f3ab46ca10376acb3c583) (cherry picked from commit eb771bf6f496538d2f621780702200f5390ff435) --- sys/powerpc/powerpc/copyinout.c | 31 +++++++++++++++++++++++++++++++ sys/powerpc/powerpc/support.S | 8 ++++++++ 2 files changed, 39 insertions(+) diff --git a/sys/powerpc/powerpc/copyinout.c b/sys/powerpc/powerpc/copyinout.c index 1528accc0e0e..f6720e8ba09e 100644 --- a/sys/powerpc/powerpc/copyinout.c +++ b/sys/powerpc/powerpc/copyinout.c @@ -99,6 +99,8 @@ int copyout_remap(const void *kaddr, void *udaddr, size_t len); int copyout_direct(const void *kaddr, void *udaddr, size_t len); int copyin_remap(const void *uaddr, void *kaddr, size_t len); int copyin_direct(const void *uaddr, void *kaddr, size_t len); +int suword16_remap(volatile void *addr, int word); +int suword16_direct(volatile void *addr, int word); int suword32_remap(volatile void *addr, int word); int suword32_direct(volatile void *addr, int word); int suword_remap(volatile void *addr, long word); @@ -139,6 +141,7 @@ DEFINE_COPY_FUNC(int, copyinstr, (const void *, void *, size_t, size_t *)) DEFINE_COPY_FUNC(int, copyin, (const void *, void *, size_t)) DEFINE_COPY_FUNC(int, copyout, (const void *, void *, size_t)) DEFINE_COPY_FUNC(int, suword, (volatile void *, long)) +DEFINE_COPY_FUNC(int, suword16, (volatile void *, int)) DEFINE_COPY_FUNC(int, suword32, (volatile void *, int)) DEFINE_COPY_FUNC(int, suword64, (volatile void *, int64_t)) DEFINE_COPY_FUNC(int, fubyte, (volatile const void *)) @@ -314,6 +317,34 @@ REMAP(subyte)(volatile void *addr, int byte) return (0); } +int +REMAP(suword16)(volatile void *addr, int word) +{ + struct thread *td; + pmap_t pm; + jmp_buf env; + int16_t *p; + + td = curthread; + pm = &td->td_proc->p_vmspace->vm_pmap; + + td->td_pcb->pcb_onfault = &env; + if (setjmp(env)) { + td->td_pcb->pcb_onfault = NULL; + return (-1); + } + + if (pmap_map_user_ptr(pm, addr, (void **)&p, sizeof(*p), NULL)) { + td->td_pcb->pcb_onfault = NULL; + return (-1); + } + + *p = (int16_t)word; + + td->td_pcb->pcb_onfault = NULL; + return (0); +} + #ifdef __powerpc64__ int REMAP(suword32)(volatile void *addr, int word) diff --git a/sys/powerpc/powerpc/support.S b/sys/powerpc/powerpc/support.S index 10d3192972d5..89dccd558014 100644 --- a/sys/powerpc/powerpc/support.S +++ b/sys/powerpc/powerpc/support.S @@ -401,6 +401,14 @@ ENTRY_DIRECT(suword) END_DIRECT(suword) #endif +ENTRY_DIRECT(suword16) + PROLOGUE + SET_FUSUFAULT(%r3, %r7) + sth %r4, 0(%r3) + CLEAR_FAULT(%r7) + EPILOGUE +END_DIRECT(suword16) + ENTRY_DIRECT(suword32) PROLOGUE SET_FUSUFAULT(%r3, %r7)