From owner-svn-src-projects@FreeBSD.ORG Sun Aug 24 10:33:55 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D3BB244B; Sun, 24 Aug 2014 10:33:55 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A66C23F2D; Sun, 24 Aug 2014 10:33:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s7OAXtVD026322; Sun, 24 Aug 2014 10:33:55 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s7OAXtrR026320; Sun, 24 Aug 2014 10:33:55 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201408241033.s7OAXtrR026320@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Sun, 24 Aug 2014 10:33:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r270451 - projects/arm64/sys/arm64/arm64 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Aug 2014 10:33:55 -0000 Author: andrew Date: Sun Aug 24 10:33:54 2014 New Revision: 270451 URL: http://svnweb.freebsd.org/changeset/base/270451 Log: Start to implement the copy{in,out} and su*/fu* functions. These only return success as a failure would result in a kernel panic. The exception handlers need to be updated for the failure case to work. Modified: projects/arm64/sys/arm64/arm64/copyinout.c projects/arm64/sys/arm64/arm64/support.c Modified: projects/arm64/sys/arm64/arm64/copyinout.c ============================================================================== --- projects/arm64/sys/arm64/arm64/copyinout.c Sun Aug 24 10:33:51 2014 (r270450) +++ projects/arm64/sys/arm64/arm64/copyinout.c Sun Aug 24 10:33:54 2014 (r270451) @@ -28,26 +28,53 @@ #include __FBSDID("$FreeBSD$"); -#include +#include #include int copyout(const void *kaddr, void *udaddr, size_t len) { + const uint8_t *k; + uint8_t *u; + size_t i; + + k = kaddr; + u = udaddr; + + for (i = 0; i < len; i++) { + u[i] = k[i]; + } - panic("copyout"); + return (0); } int copyin(const void *udaddr, void *kaddr, size_t len) { + memcpy(kaddr, udaddr, len); panic("copyin"); } int copyinstr(const void *udaddr, void *kaddr, size_t len, size_t *done) { + const uint8_t *u; + uint8_t *k; + size_t i; + + u = udaddr; + k = kaddr; + + for (i = 0; i < len; i++) { + k[i] = u[i]; + if (u[i] == '\0') + break; + } - panic("copyinstr"); + if (done != NULL) + *done = i + 1; + + return 0; } + Modified: projects/arm64/sys/arm64/arm64/support.c ============================================================================== --- projects/arm64/sys/arm64/arm64/support.c Sun Aug 24 10:33:51 2014 (r270450) +++ projects/arm64/sys/arm64/arm64/support.c Sun Aug 24 10:33:54 2014 (r270451) @@ -36,14 +36,14 @@ int fubyte(const void *base) { - panic("fubyte"); + return *(uint8_t *)base; } long fuword(const void *base) { - panic("fuword"); + return *(long *)base; } int @@ -78,14 +78,18 @@ int subyte(void *base, int byte) { - panic("subyte"); + *(uint8_t *)base = byte; + + return 0; } int suword(void *base, long word) { - panic("suword"); + *(long *)base = word; + + return 0; } int @@ -99,14 +103,18 @@ int suword32(void *base, int32_t word) { - panic("suword32"); + *(int32_t *)base = word; + + return 0; } int suword64(void *base, int64_t word) { - panic("suword64"); + *(int64_t *)base = word; + + return 0; } int