From nobody Tue Feb 10 07:42:51 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.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 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1557274506; cv=none; d=zoho.com; s=zohoarc; b=eDpgvB0dawitBjmKDmVO8P2FV0fxLLPPF/IB9j4agdIYVXp4i8ckX2ek4YmEiromvwxnCrUOyioTd4bzlvfaSHkOJTTud/ebzptjfX/4osp/aEqm4I7k6A9kgIoFQ1cnIE9wpaSyqEd3AWGXJB+1LpIfRqUY1m0+YCobYzoa6s0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1557274506; h=Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=6XvSTiTXVrizGx5uOPJdwvt1RgSOAJG1yC8vfxPaZlY=; b=BbuMGLmxp64lfdoYQOVnGB+sCk+AZvGUSq5T/peRx3pyXMax2qmKuXI1bOHd/Fu6VrByltdc7UvsOAdtMpNhCdXHZqNzoB1c8jReNHtd7D25fCWRdvIVc0zvSf+OU4I9XL6nzoIt8lVL0CanPRr+ne3qrsr2I+MKNxVs9yqsSgQ= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1557274505913332.51850245129367; Tue, 7 May 2019 17:15:05 -0700 (PDT) Received: from localhost ([127.0.0.1]:56478 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hOAEi-00055t-01 for importer@patchew.org; Tue, 07 May 2019 20:15:04 -0400 Received: from eggs.gnu.org ([209.51.188.92]:39359) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hOA6x-0007MH-UA for qemu-devel@nongnu.org; Tue, 07 May 2019 20:07:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hOA6v-0006Qb-Aa for qemu-devel@nongnu.org; Tue, 07 May 2019 20:07:03 -0400 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]:36025) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hOA6v-0006LA-06 for qemu-devel@nongnu.org; Tue, 07 May 2019 20:07:01 -0400 Received: by mail-pf1-x442.google.com with SMTP id v80so9493041pfa.3 for ; Tue, 07 May 2019 17:06:59 -0700 (PDT) Received: from localhost.localdomain (97-113-189-189.tukw.qwest.net. [97.113.189.189]) by smtp.gmail.com with ESMTPSA id j1sm15793183pgp.91.2019.05.07.17.06.56 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 07 May 2019 17:06:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references; bh=6XvSTiTXVrizGx5uOPJdwvt1RgSOAJG1yC8vfxPaZlY=; b=jabPiYzpCkM9m63uwDqDK1u/21jde/0hGSdZZubHx5UC/v3ZA6AJJnZDuJrDWwJBVz bVCETu3fQO+1epQfALmGCCeig+L3cXNzorIuFoxXEEKKB7ZlRF5S0YJLV9pB3rft+UGe WC9Ial+GpIv4bukw9ffapeg2B3UUeVSChEujmZpjTQDlB7dHLJAa48Azen3mlHRnZ9JO myZDobOndB+RsKrtvnofLpVeis4Ads30CJrrI467r5EU7kCtHdRTPlM+1qycNCfx3koo wHgvoZ337z81kNq+x5SYanPDmzVUR3Gf3wSPGsDNvWWWblkZafCkLehPoE76YabptFl8 cQBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=6XvSTiTXVrizGx5uOPJdwvt1RgSOAJG1yC8vfxPaZlY=; b=uTrZIOmRu2hUVh2mgAu7nBCBo/3+dJrgBR7Ln495bScqRkQpjq/41S+H1pJZIOr8+x W8GufsPEc2yWvXdKTBPID7CBak88cczfMpG67spqFNHZbuIievCOyslzTctsxAQlOrmD UGKES4D6JzrsCYOT1tRU9g0N0K39iIYpud3OF5FWM0xZyb4BrCe8IFadFfDVbDamfgsG C9pMfwFi+iSJKip3kb0xXIrLrONSqdnVrTFBqqPJ54N+h4kGgO4scDCTakrkX5bb76gr cNvOGlgZkqXMbZsAantul8ozJFZLmpLjBSs1j3xPDVEB7izCoUGpHW0LsjLvcfnnRpuD DIiA== X-Gm-Message-State: APjAAAWojVAreAVyeQRrhD7FEHeRT64aJJSwsz9TnT7+KIQ2s8CXvrGZ uup7MFjChf00VyIWCl1VyWMrj0hMBcw= X-Google-Smtp-Source: APXvYqwoxxS2Lh8qtFovNhpZxIC/o899HFpuRrpj+IR1f5JOJ4lNoXhnVme6BHfousADgWXcVVYmhA== X-Received: by 2002:a63:570d:: with SMTP id l13mr43219508pgb.55.1557274018308; Tue, 07 May 2019 17:06:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 7 May 2019 17:06:13 -0700 Message-Id: <20190508000641.19090-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190508000641.19090-1-richard.henderson@linaro.org> References: <20190508000641.19090-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::442 Subject: [Qemu-devel] [PATCH v3 11/39] target/cris: Reindent op_helper.c 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Fix all of the coding style errors in this file at once. Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/cris/op_helper.c | 817 +++++++++++++++++++--------------------- 1 file changed, 398 insertions(+), 419 deletions(-) diff --git a/target/cris/op_helper.c b/target/cris/op_helper.c index 0ee3a3117b..d4479167a5 100644 --- a/target/cris/op_helper.c +++ b/target/cris/op_helper.c @@ -76,9 +76,10 @@ void helper_raise_exception(CPUCRISState *env, uint32_t = index) void helper_tlb_flush_pid(CPUCRISState *env, uint32_t pid) { #if !defined(CONFIG_USER_ONLY) - pid &=3D 0xff; - if (pid !=3D (env->pregs[PR_PID] & 0xff)) - cris_mmu_flush_pid(env, env->pregs[PR_PID]); + pid &=3D 0xff; + if (pid !=3D (env->pregs[PR_PID] & 0xff)) { + cris_mmu_flush_pid(env, env->pregs[PR_PID]); + } #endif } =20 @@ -94,541 +95,519 @@ void helper_spc_write(CPUCRISState *env, uint32_t new= _spc) } =20 /* Used by the tlb decoder. */ -#define EXTRACT_FIELD(src, start, end) \ - (((src) >> start) & ((1 << (end - start + 1)) - 1)) +#define EXTRACT_FIELD(src, start, end) \ + (((src) >> start) & ((1 << (end - start + 1)) - 1)) =20 void helper_movl_sreg_reg(CPUCRISState *env, uint32_t sreg, uint32_t reg) { #if !defined(CONFIG_USER_ONLY) CRISCPU *cpu =3D cris_env_get_cpu(env); #endif - uint32_t srs; - srs =3D env->pregs[PR_SRS]; - srs &=3D 3; - env->sregs[srs][sreg] =3D env->regs[reg]; + uint32_t srs; + srs =3D env->pregs[PR_SRS]; + srs &=3D 3; + env->sregs[srs][sreg] =3D env->regs[reg]; =20 #if !defined(CONFIG_USER_ONLY) - if (srs =3D=3D 1 || srs =3D=3D 2) { - if (sreg =3D=3D 6) { - /* Writes to tlb-hi write to mm_cause as a side=20 - effect. */ - env->sregs[SFR_RW_MM_TLB_HI] =3D env->regs[reg]; - env->sregs[SFR_R_MM_CAUSE] =3D env->regs[reg]; - } - else if (sreg =3D=3D 5) { - uint32_t set; - uint32_t idx; - uint32_t lo, hi; - uint32_t vaddr; - int tlb_v; + if (srs =3D=3D 1 || srs =3D=3D 2) { + if (sreg =3D=3D 6) { + /* Writes to tlb-hi write to mm_cause as a side effect. */ + env->sregs[SFR_RW_MM_TLB_HI] =3D env->regs[reg]; + env->sregs[SFR_R_MM_CAUSE] =3D env->regs[reg]; + } else if (sreg =3D=3D 5) { + uint32_t set; + uint32_t idx; + uint32_t lo, hi; + uint32_t vaddr; + int tlb_v; =20 - idx =3D set =3D env->sregs[SFR_RW_MM_TLB_SEL]; - set >>=3D 4; - set &=3D 3; + idx =3D set =3D env->sregs[SFR_RW_MM_TLB_SEL]; + set >>=3D 4; + set &=3D 3; =20 - idx &=3D 15; - /* We've just made a write to tlb_lo. */ - lo =3D env->sregs[SFR_RW_MM_TLB_LO]; - /* Writes are done via r_mm_cause. */ - hi =3D env->sregs[SFR_R_MM_CAUSE]; + idx &=3D 15; + /* We've just made a write to tlb_lo. */ + lo =3D env->sregs[SFR_RW_MM_TLB_LO]; + /* Writes are done via r_mm_cause. */ + hi =3D env->sregs[SFR_R_MM_CAUSE]; =20 - vaddr =3D EXTRACT_FIELD(env->tlbsets[srs-1][set][idx].hi, - 13, 31); - vaddr <<=3D TARGET_PAGE_BITS; - tlb_v =3D EXTRACT_FIELD(env->tlbsets[srs-1][set][idx].lo, - 3, 3); - env->tlbsets[srs - 1][set][idx].lo =3D lo; - env->tlbsets[srs - 1][set][idx].hi =3D hi; + vaddr =3D EXTRACT_FIELD(env->tlbsets[srs - 1][set][idx].hi, 13= , 31); + vaddr <<=3D TARGET_PAGE_BITS; + tlb_v =3D EXTRACT_FIELD(env->tlbsets[srs - 1][set][idx].lo, 3,= 3); + env->tlbsets[srs - 1][set][idx].lo =3D lo; + env->tlbsets[srs - 1][set][idx].hi =3D hi; =20 - D_LOG("tlb flush vaddr=3D%x v=3D%d pc=3D%x\n",=20 - vaddr, tlb_v, env->pc); - if (tlb_v) { + D_LOG("tlb flush vaddr=3D%x v=3D%d pc=3D%x\n", + vaddr, tlb_v, env->pc); + if (tlb_v) { tlb_flush_page(CPU(cpu), vaddr); - } - } - } + } + } + } #endif } =20 void helper_movl_reg_sreg(CPUCRISState *env, uint32_t reg, uint32_t sreg) { - uint32_t srs; - env->pregs[PR_SRS] &=3D 3; - srs =3D env->pregs[PR_SRS]; -=09 + uint32_t srs; + env->pregs[PR_SRS] &=3D 3; + srs =3D env->pregs[PR_SRS]; + #if !defined(CONFIG_USER_ONLY) - if (srs =3D=3D 1 || srs =3D=3D 2) - { - uint32_t set; - uint32_t idx; - uint32_t lo, hi; + if (srs =3D=3D 1 || srs =3D=3D 2) { + uint32_t set; + uint32_t idx; + uint32_t lo, hi; =20 - idx =3D set =3D env->sregs[SFR_RW_MM_TLB_SEL]; - set >>=3D 4; - set &=3D 3; - idx &=3D 15; + idx =3D set =3D env->sregs[SFR_RW_MM_TLB_SEL]; + set >>=3D 4; + set &=3D 3; + idx &=3D 15; =20 - /* Update the mirror regs. */ - hi =3D env->tlbsets[srs - 1][set][idx].hi; - lo =3D env->tlbsets[srs - 1][set][idx].lo; - env->sregs[SFR_RW_MM_TLB_HI] =3D hi; - env->sregs[SFR_RW_MM_TLB_LO] =3D lo; - } + /* Update the mirror regs. */ + hi =3D env->tlbsets[srs - 1][set][idx].hi; + lo =3D env->tlbsets[srs - 1][set][idx].lo; + env->sregs[SFR_RW_MM_TLB_HI] =3D hi; + env->sregs[SFR_RW_MM_TLB_LO] =3D lo; + } #endif - env->regs[reg] =3D env->sregs[srs][sreg]; + env->regs[reg] =3D env->sregs[srs][sreg]; } =20 static void cris_ccs_rshift(CPUCRISState *env) { - uint32_t ccs; + uint32_t ccs; =20 - /* Apply the ccs shift. */ - ccs =3D env->pregs[PR_CCS]; - ccs =3D (ccs & 0xc0000000) | ((ccs & 0x0fffffff) >> 10); - if (ccs & U_FLAG) - { - /* Enter user mode. */ - env->ksp =3D env->regs[R_SP]; - env->regs[R_SP] =3D env->pregs[PR_USP]; - } + /* Apply the ccs shift. */ + ccs =3D env->pregs[PR_CCS]; + ccs =3D (ccs & 0xc0000000) | ((ccs & 0x0fffffff) >> 10); + if (ccs & U_FLAG) { + /* Enter user mode. */ + env->ksp =3D env->regs[R_SP]; + env->regs[R_SP] =3D env->pregs[PR_USP]; + } =20 - env->pregs[PR_CCS] =3D ccs; + env->pregs[PR_CCS] =3D ccs; } =20 void helper_rfe(CPUCRISState *env) { - int rflag =3D env->pregs[PR_CCS] & R_FLAG; + int rflag =3D env->pregs[PR_CCS] & R_FLAG; =20 - D_LOG("rfe: erp=3D%x pid=3D%x ccs=3D%x btarget=3D%x\n",=20 - env->pregs[PR_ERP], env->pregs[PR_PID], - env->pregs[PR_CCS], - env->btarget); + D_LOG("rfe: erp=3D%x pid=3D%x ccs=3D%x btarget=3D%x\n", + env->pregs[PR_ERP], env->pregs[PR_PID], + env->pregs[PR_CCS], + env->btarget); =20 - cris_ccs_rshift(env); + cris_ccs_rshift(env); =20 - /* RFE sets the P_FLAG only if the R_FLAG is not set. */ - if (!rflag) - env->pregs[PR_CCS] |=3D P_FLAG; + /* RFE sets the P_FLAG only if the R_FLAG is not set. */ + if (!rflag) { + env->pregs[PR_CCS] |=3D P_FLAG; + } } =20 void helper_rfn(CPUCRISState *env) { - int rflag =3D env->pregs[PR_CCS] & R_FLAG; + int rflag =3D env->pregs[PR_CCS] & R_FLAG; =20 - D_LOG("rfn: erp=3D%x pid=3D%x ccs=3D%x btarget=3D%x\n",=20 - env->pregs[PR_ERP], env->pregs[PR_PID], - env->pregs[PR_CCS], - env->btarget); + D_LOG("rfn: erp=3D%x pid=3D%x ccs=3D%x btarget=3D%x\n", + env->pregs[PR_ERP], env->pregs[PR_PID], + env->pregs[PR_CCS], + env->btarget); =20 - cris_ccs_rshift(env); + cris_ccs_rshift(env); =20 - /* Set the P_FLAG only if the R_FLAG is not set. */ - if (!rflag) - env->pregs[PR_CCS] |=3D P_FLAG; + /* Set the P_FLAG only if the R_FLAG is not set. */ + if (!rflag) { + env->pregs[PR_CCS] |=3D P_FLAG; + } =20 - /* Always set the M flag. */ - env->pregs[PR_CCS] |=3D M_FLAG_V32; + /* Always set the M flag. */ + env->pregs[PR_CCS] |=3D M_FLAG_V32; } =20 uint32_t helper_btst(CPUCRISState *env, uint32_t t0, uint32_t t1, uint32_t= ccs) { - /* FIXME: clean this up. */ + /* FIXME: clean this up. */ =20 - /* des ref: - The N flag is set according to the selected bit in the dest reg. - The Z flag is set if the selected bit and all bits to the right are - zero. - The X flag is cleared. - Other flags are left untouched. - The destination reg is not affected.*/ - unsigned int fz, sbit, bset, mask, masked_t0; + /* + * des ref: + * The N flag is set according to the selected bit in the dest reg. + * The Z flag is set if the selected bit and all bits to the right are + * zero. + * The X flag is cleared. + * Other flags are left untouched. + * The destination reg is not affected. + */ + unsigned int fz, sbit, bset, mask, masked_t0; =20 - sbit =3D t1 & 31; - bset =3D !!(t0 & (1 << sbit)); - mask =3D sbit =3D=3D 31 ? -1 : (1 << (sbit + 1)) - 1; - masked_t0 =3D t0 & mask; - fz =3D !(masked_t0 | bset); + sbit =3D t1 & 31; + bset =3D !!(t0 & (1 << sbit)); + mask =3D sbit =3D=3D 31 ? -1 : (1 << (sbit + 1)) - 1; + masked_t0 =3D t0 & mask; + fz =3D !(masked_t0 | bset); =20 - /* Clear the X, N and Z flags. */ - ccs =3D ccs & ~(X_FLAG | N_FLAG | Z_FLAG); - if (env->pregs[PR_VR] < 32) - ccs &=3D ~(V_FLAG | C_FLAG); - /* Set the N and Z flags accordingly. */ - ccs |=3D (bset << 3) | (fz << 2); - return ccs; + /* Clear the X, N and Z flags. */ + ccs =3D ccs & ~(X_FLAG | N_FLAG | Z_FLAG); + if (env->pregs[PR_VR] < 32) { + ccs &=3D ~(V_FLAG | C_FLAG); + } + /* Set the N and Z flags accordingly. */ + ccs |=3D (bset << 3) | (fz << 2); + return ccs; } =20 static inline uint32_t evaluate_flags_writeback(CPUCRISState *env, uint32_t flags, uint32_t c= cs) { - unsigned int x, z, mask; + unsigned int x, z, mask; =20 - /* Extended arithmetics, leave the z flag alone. */ - x =3D env->cc_x; - mask =3D env->cc_mask | X_FLAG; - if (x) { - z =3D flags & Z_FLAG; - mask =3D mask & ~z; - } - flags &=3D mask; + /* Extended arithmetics, leave the z flag alone. */ + x =3D env->cc_x; + mask =3D env->cc_mask | X_FLAG; + if (x) { + z =3D flags & Z_FLAG; + mask =3D mask & ~z; + } + flags &=3D mask; =20 - /* all insn clear the x-flag except setf or clrf. */ - ccs &=3D ~mask; - ccs |=3D flags; - return ccs; + /* all insn clear the x-flag except setf or clrf. */ + ccs &=3D ~mask; + ccs |=3D flags; + return ccs; } =20 uint32_t helper_evaluate_flags_muls(CPUCRISState *env, uint32_t ccs, uint32_t res, uint32_t m= of) { - uint32_t flags =3D 0; - int64_t tmp; - int dneg; + uint32_t flags =3D 0; + int64_t tmp; + int dneg; =20 - dneg =3D ((int32_t)res) < 0; + dneg =3D ((int32_t)res) < 0; =20 - tmp =3D mof; - tmp <<=3D 32; - tmp |=3D res; - if (tmp =3D=3D 0) - flags |=3D Z_FLAG; - else if (tmp < 0) - flags |=3D N_FLAG; - if ((dneg && mof !=3D -1) - || (!dneg && mof !=3D 0)) - flags |=3D V_FLAG; - return evaluate_flags_writeback(env, flags, ccs); + tmp =3D mof; + tmp <<=3D 32; + tmp |=3D res; + if (tmp =3D=3D 0) { + flags |=3D Z_FLAG; + } else if (tmp < 0) { + flags |=3D N_FLAG; + } + if ((dneg && mof !=3D -1) || (!dneg && mof !=3D 0)) { + flags |=3D V_FLAG; + } + return evaluate_flags_writeback(env, flags, ccs); } =20 uint32_t helper_evaluate_flags_mulu(CPUCRISState *env, uint32_t ccs, uint32_t res, uint32_t m= of) { - uint32_t flags =3D 0; - uint64_t tmp; + uint32_t flags =3D 0; + uint64_t tmp; =20 - tmp =3D mof; - tmp <<=3D 32; - tmp |=3D res; - if (tmp =3D=3D 0) - flags |=3D Z_FLAG; - else if (tmp >> 63) - flags |=3D N_FLAG; - if (mof) - flags |=3D V_FLAG; + tmp =3D mof; + tmp <<=3D 32; + tmp |=3D res; + if (tmp =3D=3D 0) { + flags |=3D Z_FLAG; + } else if (tmp >> 63) { + flags |=3D N_FLAG; + } + if (mof) { + flags |=3D V_FLAG; + } =20 - return evaluate_flags_writeback(env, flags, ccs); + return evaluate_flags_writeback(env, flags, ccs); } =20 uint32_t helper_evaluate_flags_mcp(CPUCRISState *env, uint32_t ccs, uint32_t src, uint32_t dst, uint32_t res) { - uint32_t flags =3D 0; + uint32_t flags =3D 0; =20 - src =3D src & 0x80000000; - dst =3D dst & 0x80000000; + src =3D src & 0x80000000; + dst =3D dst & 0x80000000; =20 - if ((res & 0x80000000L) !=3D 0L) - { - flags |=3D N_FLAG; - if (!src && !dst) - flags |=3D V_FLAG; - else if (src & dst) - flags |=3D R_FLAG; - } - else - { - if (res =3D=3D 0L) - flags |=3D Z_FLAG; - if (src & dst)=20 - flags |=3D V_FLAG; - if (dst | src)=20 - flags |=3D R_FLAG; - } + if ((res & 0x80000000L) !=3D 0L) { + flags |=3D N_FLAG; + if (!src && !dst) { + flags |=3D V_FLAG; + } else if (src & dst) { + flags |=3D R_FLAG; + } + } else { + if (res =3D=3D 0L) { + flags |=3D Z_FLAG; + } + if (src & dst) { + flags |=3D V_FLAG; + } + if (dst | src) { + flags |=3D R_FLAG; + } + } =20 - return evaluate_flags_writeback(env, flags, ccs); + return evaluate_flags_writeback(env, flags, ccs); } =20 uint32_t helper_evaluate_flags_alu_4(CPUCRISState *env, uint32_t ccs, uint32_t src, uint32_t dst, uint32_t res) { - uint32_t flags =3D 0; + uint32_t flags =3D 0; =20 - src =3D src & 0x80000000; - dst =3D dst & 0x80000000; + src =3D src & 0x80000000; + dst =3D dst & 0x80000000; =20 - if ((res & 0x80000000L) !=3D 0L) - { - flags |=3D N_FLAG; - if (!src && !dst) - flags |=3D V_FLAG; - else if (src & dst) - flags |=3D C_FLAG; - } - else - { - if (res =3D=3D 0L) - flags |=3D Z_FLAG; - if (src & dst)=20 - flags |=3D V_FLAG; - if (dst | src)=20 - flags |=3D C_FLAG; - } + if ((res & 0x80000000L) !=3D 0L) { + flags |=3D N_FLAG; + if (!src && !dst) { + flags |=3D V_FLAG; + } else if (src & dst) { + flags |=3D C_FLAG; + } + } else { + if (res =3D=3D 0L) { + flags |=3D Z_FLAG; + } + if (src & dst) { + flags |=3D V_FLAG; + } + if (dst | src) { + flags |=3D C_FLAG; + } + } =20 - return evaluate_flags_writeback(env, flags, ccs); + return evaluate_flags_writeback(env, flags, ccs); } =20 uint32_t helper_evaluate_flags_sub_4(CPUCRISState *env, uint32_t ccs, uint32_t src, uint32_t dst, uint32_t res) { - uint32_t flags =3D 0; + uint32_t flags =3D 0; =20 - src =3D (~src) & 0x80000000; - dst =3D dst & 0x80000000; + src =3D (~src) & 0x80000000; + dst =3D dst & 0x80000000; =20 - if ((res & 0x80000000L) !=3D 0L) - { - flags |=3D N_FLAG; - if (!src && !dst) - flags |=3D V_FLAG; - else if (src & dst) - flags |=3D C_FLAG; - } - else - { - if (res =3D=3D 0L) - flags |=3D Z_FLAG; - if (src & dst)=20 - flags |=3D V_FLAG; - if (dst | src)=20 - flags |=3D C_FLAG; - } + if ((res & 0x80000000L) !=3D 0L) { + flags |=3D N_FLAG; + if (!src && !dst) { + flags |=3D V_FLAG; + } else if (src & dst) { + flags |=3D C_FLAG; + } + } else { + if (res =3D=3D 0L) { + flags |=3D Z_FLAG; + } + if (src & dst) { + flags |=3D V_FLAG; + } + if (dst | src) { + flags |=3D C_FLAG; + } + } =20 - flags ^=3D C_FLAG; - return evaluate_flags_writeback(env, flags, ccs); + flags ^=3D C_FLAG; + return evaluate_flags_writeback(env, flags, ccs); } =20 uint32_t helper_evaluate_flags_move_4(CPUCRISState *env, uint32_t ccs, uint32_t res) { - uint32_t flags =3D 0; + uint32_t flags =3D 0; =20 - if ((int32_t)res < 0) - flags |=3D N_FLAG; - else if (res =3D=3D 0L) - flags |=3D Z_FLAG; + if ((int32_t)res < 0) { + flags |=3D N_FLAG; + } else if (res =3D=3D 0L) { + flags |=3D Z_FLAG; + } =20 - return evaluate_flags_writeback(env, flags, ccs); + return evaluate_flags_writeback(env, flags, ccs); } + uint32_t helper_evaluate_flags_move_2(CPUCRISState *env, uint32_t ccs, uint32_t res) { - uint32_t flags =3D 0; + uint32_t flags =3D 0; =20 - if ((int16_t)res < 0L) - flags |=3D N_FLAG; - else if (res =3D=3D 0) - flags |=3D Z_FLAG; + if ((int16_t)res < 0L) { + flags |=3D N_FLAG; + } else if (res =3D=3D 0) { + flags |=3D Z_FLAG; + } =20 - return evaluate_flags_writeback(env, flags, ccs); + return evaluate_flags_writeback(env, flags, ccs); } =20 -/* TODO: This is expensive. We could split things up and only evaluate par= t of - CCR on a need to know basis. For now, we simply re-evaluate everything.= */ +/* + * TODO: This is expensive. We could split things up and only evaluate par= t of + * CCR on a need to know basis. For now, we simply re-evaluate everything. + */ void helper_evaluate_flags(CPUCRISState *env) { - uint32_t src, dst, res; - uint32_t flags =3D 0; + uint32_t src, dst, res; + uint32_t flags =3D 0; =20 - src =3D env->cc_src; - dst =3D env->cc_dest; - res =3D env->cc_result; + src =3D env->cc_src; + dst =3D env->cc_dest; + res =3D env->cc_result; =20 - if (env->cc_op =3D=3D CC_OP_SUB || env->cc_op =3D=3D CC_OP_CMP) - src =3D ~src; + if (env->cc_op =3D=3D CC_OP_SUB || env->cc_op =3D=3D CC_OP_CMP) { + src =3D ~src; + } =20 - /* Now, evaluate the flags. This stuff is based on - Per Zander's CRISv10 simulator. */ - switch (env->cc_size) - { - case 1: - if ((res & 0x80L) !=3D 0L) - { - flags |=3D N_FLAG; - if (((src & 0x80L) =3D=3D 0L) - && ((dst & 0x80L) =3D=3D 0L)) - { - flags |=3D V_FLAG; - } - else if (((src & 0x80L) !=3D 0L) - && ((dst & 0x80L) !=3D 0L)) - { - flags |=3D C_FLAG; - } - } - else - { - if ((res & 0xFFL) =3D=3D 0L) - { - flags |=3D Z_FLAG; - } - if (((src & 0x80L) !=3D 0L) - && ((dst & 0x80L) !=3D 0L)) - { - flags |=3D V_FLAG; - } - if ((dst & 0x80L) !=3D 0L - || (src & 0x80L) !=3D 0L) - { - flags |=3D C_FLAG; - } - } - break; - case 2: - if ((res & 0x8000L) !=3D 0L) - { - flags |=3D N_FLAG; - if (((src & 0x8000L) =3D=3D 0L) - && ((dst & 0x8000L) =3D=3D 0L)) - { - flags |=3D V_FLAG; - } - else if (((src & 0x8000L) !=3D 0L) - && ((dst & 0x8000L) !=3D 0L)) - { - flags |=3D C_FLAG; - } - } - else - { - if ((res & 0xFFFFL) =3D=3D 0L) - { - flags |=3D Z_FLAG; - } - if (((src & 0x8000L) !=3D 0L) - && ((dst & 0x8000L) !=3D 0L)) - { - flags |=3D V_FLAG; - } - if ((dst & 0x8000L) !=3D 0L - || (src & 0x8000L) !=3D 0L) - { - flags |=3D C_FLAG; - } - } - break; - case 4: - if ((res & 0x80000000L) !=3D 0L) - { - flags |=3D N_FLAG; - if (((src & 0x80000000L) =3D=3D 0L) - && ((dst & 0x80000000L) =3D=3D 0L)) - { - flags |=3D V_FLAG; - } - else if (((src & 0x80000000L) !=3D 0L) && - ((dst & 0x80000000L) !=3D 0L)) - { - flags |=3D C_FLAG; - } - } - else - { - if (res =3D=3D 0L) - flags |=3D Z_FLAG; - if (((src & 0x80000000L) !=3D 0L) - && ((dst & 0x80000000L) !=3D 0L)) - flags |=3D V_FLAG; - if ((dst & 0x80000000L) !=3D 0L - || (src & 0x80000000L) !=3D 0L) - flags |=3D C_FLAG; - } - break; - default: - break; - } + /* + * Now, evaluate the flags. This stuff is based on + * Per Zander's CRISv10 simulator. + */ + switch (env->cc_size) { + case 1: + if ((res & 0x80L) !=3D 0L) { + flags |=3D N_FLAG; + if (((src & 0x80L) =3D=3D 0L) && ((dst & 0x80L) =3D=3D 0L)) { + flags |=3D V_FLAG; + } else if (((src & 0x80L) !=3D 0L) && ((dst & 0x80L) !=3D 0L))= { + flags |=3D C_FLAG; + } + } else { + if ((res & 0xFFL) =3D=3D 0L) { + flags |=3D Z_FLAG; + } + if (((src & 0x80L) !=3D 0L) && ((dst & 0x80L) !=3D 0L)) { + flags |=3D V_FLAG; + } + if ((dst & 0x80L) !=3D 0L || (src & 0x80L) !=3D 0L) { + flags |=3D C_FLAG; + } + } + break; + case 2: + if ((res & 0x8000L) !=3D 0L) { + flags |=3D N_FLAG; + if (((src & 0x8000L) =3D=3D 0L) && ((dst & 0x8000L) =3D=3D 0L)= ) { + flags |=3D V_FLAG; + } else if (((src & 0x8000L) !=3D 0L) && ((dst & 0x8000L) !=3D = 0L)) { + flags |=3D C_FLAG; + } + } else { + if ((res & 0xFFFFL) =3D=3D 0L) { + flags |=3D Z_FLAG; + } + if (((src & 0x8000L) !=3D 0L) && ((dst & 0x8000L) !=3D 0L)) { + flags |=3D V_FLAG; + } + if ((dst & 0x8000L) !=3D 0L || (src & 0x8000L) !=3D 0L) { + flags |=3D C_FLAG; + } + } + break; + case 4: + if ((res & 0x80000000L) !=3D 0L) { + flags |=3D N_FLAG; + if (((src & 0x80000000L) =3D=3D 0L) && ((dst & 0x80000000L) = =3D=3D 0L)) { + flags |=3D V_FLAG; + } else if (((src & 0x80000000L) !=3D 0L) && + ((dst & 0x80000000L) !=3D 0L)) { + flags |=3D C_FLAG; + } + } else { + if (res =3D=3D 0L) { + flags |=3D Z_FLAG; + } + if (((src & 0x80000000L) !=3D 0L) && ((dst & 0x80000000L) !=3D= 0L)) { + flags |=3D V_FLAG; + } + if ((dst & 0x80000000L) !=3D 0L || (src & 0x80000000L) !=3D 0L= ) { + flags |=3D C_FLAG; + } + } + break; + default: + break; + } =20 - if (env->cc_op =3D=3D CC_OP_SUB || env->cc_op =3D=3D CC_OP_CMP) - flags ^=3D C_FLAG; + if (env->cc_op =3D=3D CC_OP_SUB || env->cc_op =3D=3D CC_OP_CMP) { + flags ^=3D C_FLAG; + } =20 - env->pregs[PR_CCS] =3D evaluate_flags_writeback(env, flags, - env->pregs[PR_CCS]); + env->pregs[PR_CCS] =3D evaluate_flags_writeback(env, flags, + env->pregs[PR_CCS]); } =20 void helper_top_evaluate_flags(CPUCRISState *env) { - switch (env->cc_op) - { - case CC_OP_MCP: - env->pregs[PR_CCS] =3D helper_evaluate_flags_mcp(e= nv, - env->pregs[PR_CCS], env->cc_src, - env->cc_dest, env->cc_result); - break; - case CC_OP_MULS: - env->pregs[PR_CCS] =3D helper_evaluate_flags_muls(= env, - env->pregs[PR_CCS], env->cc_result, - env->pregs[PR_MOF]); - break; - case CC_OP_MULU: - env->pregs[PR_CCS] =3D helper_evaluate_flags_mulu(= env, - env->pregs[PR_CCS], env->cc_result, - env->pregs[PR_MOF]); - break; - case CC_OP_MOVE: - case CC_OP_AND: - case CC_OP_OR: - case CC_OP_XOR: - case CC_OP_ASR: - case CC_OP_LSR: - case CC_OP_LSL: - switch (env->cc_size) - { - case 4: - env->pregs[PR_CCS] =3D - helper_evaluate_flags_move_4(env, - env->pregs[PR_CCS], - env->cc_result); - break; - case 2: - env->pregs[PR_CCS] =3D - helper_evaluate_flags_move_2(env, - env->pregs[PR_CCS], - env->cc_result); - break; - default: - helper_evaluate_flags(env); - break; - } - break; - case CC_OP_FLAGS: - /* live. */ - break; - case CC_OP_SUB: - case CC_OP_CMP: - if (env->cc_size =3D=3D 4) - env->pregs[PR_CCS] =3D - helper_evaluate_flags_sub_4(env, - env->pregs[PR_CCS], - env->cc_src, env->cc_dest, - env->cc_result); - else - helper_evaluate_flags(env); - break; - default: - { - switch (env->cc_size) - { - case 4: - env->pregs[PR_CCS] =3D - helper_evaluate_flags_alu_4(env, - env->pregs[PR_CCS], - env->cc_src, env->cc_dest, - env->cc_result); - break; - default: - helper_evaluate_flags(env); - break; - } - } - break; - } + switch (env->cc_op) { + case CC_OP_MCP: + env->pregs[PR_CCS] + =3D helper_evaluate_flags_mcp(env, env->pregs[PR_CCS], + env->cc_src, env->cc_dest, + env->cc_result); + break; + case CC_OP_MULS: + env->pregs[PR_CCS] + =3D helper_evaluate_flags_muls(env, env->pregs[PR_CCS], + env->cc_result, env->pregs[PR_MOF= ]); + break; + case CC_OP_MULU: + env->pregs[PR_CCS] + =3D helper_evaluate_flags_mulu(env, env->pregs[PR_CCS], + env->cc_result, env->pregs[PR_MOF= ]); + break; + case CC_OP_MOVE: + case CC_OP_AND: + case CC_OP_OR: + case CC_OP_XOR: + case CC_OP_ASR: + case CC_OP_LSR: + case CC_OP_LSL: + switch (env->cc_size) { + case 4: + env->pregs[PR_CCS] =3D + helper_evaluate_flags_move_4(env, + env->pregs[PR_CCS], + env->cc_result); + break; + case 2: + env->pregs[PR_CCS] =3D + helper_evaluate_flags_move_2(env, + env->pregs[PR_CCS], + env->cc_result); + break; + default: + helper_evaluate_flags(env); + break; + } + break; + case CC_OP_FLAGS: + /* live. */ + break; + case CC_OP_SUB: + case CC_OP_CMP: + if (env->cc_size =3D=3D 4) { + env->pregs[PR_CCS] =3D + helper_evaluate_flags_sub_4(env, + env->pregs[PR_CCS], + env->cc_src, env->cc_dest, + env->cc_result); + } else { + helper_evaluate_flags(env); + } + break; + default: + switch (env->cc_size) { + case 4: + env->pregs[PR_CCS] =3D + helper_evaluate_flags_alu_4(env, + env->pregs[PR_CCS], + env->cc_src, env->cc_dest, + env->cc_result); + break; + default: + helper_evaluate_flags(env); + break; + } + break; + } } --=20 2.17.1