From nobody Thu Nov 6 01:09:02 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1538297960951734.4173459344368; Sun, 30 Sep 2018 01:59:20 -0700 (PDT) Received: from localhost ([::1]:54463 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6XZP-0003pg-R6 for importer@patchew.org; Sun, 30 Sep 2018 04:59:19 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41919) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g6WsI-0003Bu-Se for qemu-devel@nongnu.org; Sun, 30 Sep 2018 04:14:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g6WsC-0001Hi-5p for qemu-devel@nongnu.org; Sun, 30 Sep 2018 04:14:43 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]:33567) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g6WsB-0001DX-Oz for qemu-devel@nongnu.org; Sun, 30 Sep 2018 04:14:40 -0400 Received: by mail-wr1-x42d.google.com with SMTP id f10-v6so10512324wrs.0 for ; Sun, 30 Sep 2018 01:14:36 -0700 (PDT) Received: from 640k.lan (94-36-187-248.adsl-ull.clienti.tiscali.it. [94.36.187.248]) by smtp.gmail.com with ESMTPSA id u76-v6sm11369194wmd.10.2018.09.30.01.14.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 30 Sep 2018 01:14:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yiVEwdQpaTh+cFJXx/P+DTXhRVcZYdbwh9H6JTvZ5TY=; b=bJWKPRM2T7uA2icAHzaDjTr+yp5GhPf7Lsg2tzOsWcnlCMTT6IlHj5YFd8wgQFvHla dQLf2aCeghU/f/ZSjtj6J3cgSkhSt2Mfj7Eb+DIExHo6qdNMOTv5vb2mRVZbbvCuOFIw QHgBk2tIBJFfHS7tViQ5MHYqP7i0giGo6Uxu7op1YVdrPx6QJg+aOy36qM45bG7q+vsk MBTZojUc9G9W8/Lb0dH0ZYnrQh4VVTwqU3k+R45hja6If9f7D9mxCj0HE3EtNNDFQR/4 UGNq+YJnrBCqXCDnmjBX47jrjpD53NZ6tsILEBztXQn9ryy3GT51KTlFbuOEsWG3bwBV 47Zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=yiVEwdQpaTh+cFJXx/P+DTXhRVcZYdbwh9H6JTvZ5TY=; b=HTlUf6z4pOURx2uKvIo34Z/HM+F92AsWsRtWboN82wp6sHax0VpfyVZLPtooF/HU3f o14SoPVQSmjHrPqTQdFL883VxcIpFnXNGi0p+yMY6HgWgQOMp6QWN3563wDSk9TxUM04 c42GJX58VYmJyhKkibeSV0GtN0bSkzc62nJfr5POUA85xoIy5MCu0DG7Q6svYmtWxvBg a+QaYYSICTg2gI0rb6Z05wISrhMMLCN+k5l3LssbgFKowrfxvGoz5+l5eYKBaCncp79q 1PEgFPPFnnaM7DC0uVKTzxhEIGTAdn58RyRSi6/txmqLRrsJJxNAphcP+mU5hFagZn88 0W9w== X-Gm-Message-State: ABuFfohNpb+VrzQw1gUAYV/VnMrWry6SvpdWXoMqzzKeLBEhHqyG8j3G 6uJyRqslN0vei5Fs05ih8rY1oJ/U X-Google-Smtp-Source: ACcGV60SsOVGm078HyDey5CyafuP6zl8TSaZOdyMduRbK5NeR080aS/A+gjuXT13GSUlhw1XgIKiaQ== X-Received: by 2002:adf:fd4a:: with SMTP id h10-v6mr3840065wrs.280.1538295274964; Sun, 30 Sep 2018 01:14:34 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Sun, 30 Sep 2018 10:13:11 +0200 Message-Id: <1538295197-23704-74-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1538295197-23704-1-git-send-email-pbonzini@redhat.com> References: <1538295197-23704-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::42d Subject: [Qemu-devel] [PULL 73/79] memory: Refactor common shifting code from accessors X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 From: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=83=C2=A9 Message-Id: <20180927002416.1781-3-f4bug@amsat.org> Signed-off-by: Paolo Bonzini Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- memory.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/memory.c b/memory.c index b3051d9..a4d3fa7 100644 --- a/memory.c +++ b/memory.c @@ -374,6 +374,21 @@ static void adjust_endianness(MemoryRegion *mr, uint64= _t *data, unsigned size) } } =20 +static inline void memory_region_shift_read_access(uint64_t *value, + unsigned shift, + uint64_t mask, + uint64_t tmp) +{ + *value |=3D (tmp & mask) << shift; +} + +static inline uint64_t memory_region_shift_write_access(uint64_t *value, + unsigned shift, + uint64_t mask) +{ + return (*value >> shift) & mask; +} + static hwaddr memory_region_to_absolute_addr(MemoryRegion *mr, hwaddr offs= et) { MemoryRegion *root; @@ -418,7 +433,7 @@ static MemTxResult memory_region_oldmmio_read_accessor(= MemoryRegion *mr, hwaddr abs_addr =3D memory_region_to_absolute_addr(mr, addr); trace_memory_region_ops_read(get_cpu_index(), mr, abs_addr, tmp, s= ize); } - *value |=3D (tmp & mask) << shift; + memory_region_shift_read_access(value, shift, mask, tmp); return MEMTX_OK; } =20 @@ -444,7 +459,7 @@ static MemTxResult memory_region_read_accessor(MemoryR= egion *mr, hwaddr abs_addr =3D memory_region_to_absolute_addr(mr, addr); trace_memory_region_ops_read(get_cpu_index(), mr, abs_addr, tmp, s= ize); } - *value |=3D (tmp & mask) << shift; + memory_region_shift_read_access(value, shift, mask, tmp); return MEMTX_OK; } =20 @@ -471,7 +486,7 @@ static MemTxResult memory_region_read_with_attrs_access= or(MemoryRegion *mr, hwaddr abs_addr =3D memory_region_to_absolute_addr(mr, addr); trace_memory_region_ops_read(get_cpu_index(), mr, abs_addr, tmp, s= ize); } - *value |=3D (tmp & mask) << shift; + memory_region_shift_read_access(value, shift, mask, tmp); return r; } =20 @@ -483,9 +498,8 @@ static MemTxResult memory_region_oldmmio_write_accessor= (MemoryRegion *mr, uint64_t mask, MemTxAttrs attrs) { - uint64_t tmp; + uint64_t tmp =3D memory_region_shift_write_access(value, shift, mask); =20 - tmp =3D (*value >> shift) & mask; if (mr->subpage) { trace_memory_region_subpage_write(get_cpu_index(), mr, addr, tmp, = size); } else if (mr =3D=3D &io_mem_notdirty) { @@ -509,9 +523,8 @@ static MemTxResult memory_region_write_accessor(MemoryR= egion *mr, uint64_t mask, MemTxAttrs attrs) { - uint64_t tmp; + uint64_t tmp =3D memory_region_shift_write_access(value, shift, mask); =20 - tmp =3D (*value >> shift) & mask; if (mr->subpage) { trace_memory_region_subpage_write(get_cpu_index(), mr, addr, tmp, = size); } else if (mr =3D=3D &io_mem_notdirty) { @@ -535,9 +548,8 @@ static MemTxResult memory_region_write_with_attrs_acces= sor(MemoryRegion *mr, uint64_t mask, MemTxAttrs attr= s) { - uint64_t tmp; + uint64_t tmp =3D memory_region_shift_write_access(value, shift, mask); =20 - tmp =3D (*value >> shift) & mask; if (mr->subpage) { trace_memory_region_subpage_write(get_cpu_index(), mr, addr, tmp, = size); } else if (mr =3D=3D &io_mem_notdirty) { --=20 1.8.3.1