From patchwork Mon May 17 18:13:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440175 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1330692jac; Mon, 17 May 2021 11:20:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxrQGK2Lqm29ttCczyLBCJ2FfKmQvyT0I+M8+EMSjDIXA3EjZPeRWcp8rOJz3OihUKZoNy7 X-Received: by 2002:a05:6638:76d:: with SMTP id y13mr1280781jad.25.1621275634534; Mon, 17 May 2021 11:20:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621275634; cv=none; d=google.com; s=arc-20160816; b=F1ABFDjvKVDm3i/U8b2BH+g1GbBaxJSeQ3f7TZkokehLxEJH4xIgOAnz2mJZCZJ7+j HUHFc/oQ8TgiIWZ+0jZOOf7xZwKZd6/DQBD5VkJ0wyITGhGGnoUHn1RHUMxwYRIip6nD h3oRJUgLAqDfOCbegOCnC614tTPGiEOVtYwvVfQS/hbvQ/ud0VO6vMGW/Sl7IqZfstD9 m3wtIcY+uAJQfWZd1ShXwUo3qy6o41aZWl28dS46QW9z9CU3UxEmLMzJ6d3Wv689qe8e ENOag72R9nFzLHTdhQmUUc+6zTIIVuDj9bfvnvT4iOy6Ycd09fSZ1ex4xg70IASBdvju LjuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=/KbYqd4K0GAHMMhBrbt93yPgJkMVyahSLQQqbjpDtyQ=; b=mANKtWOkak7tgiX0Hgssw5fB1hR3PE4yNJJL86XJ7zmDiPCdC6MUklqyhCd6MPEf2w HbXAczjf7arRt3ziCinostvQL5UkG2PZFdUSPtRG3iGFgc7suXV+HHKfgYp+CVKYj070 Hs/Qpi01Vg3umhB2vPiloBM7NxcMFPhcTxVg6FgU7ucRCJtcX5CqD7xmViW1VCqUamb5 AaTR0nEJMAX0x6ML1QM5nX3BofBh1MevOHy/btzzqWAaolcYVKo9BGFGC5hVxoPE7fIi RZhP9+zJF49AI2BGLhgbWy0is/9muVt5/6IV9wLlQccvKH6sKizzOycVAKd9W184VoUj QAkw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id a5si20212421ilv.74.2021.05.17.11.20.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:20:34 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:60770 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihqz-0003aT-Pa for patch@linaro.org; Mon, 17 May 2021 14:20:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33666) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlH-0005v8-3c for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:44 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:41667) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihl9-0004Kc-Er for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:38 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MFbBO-1lh0wv23Ty-00H9Pd; Mon, 17 May 2021 20:14:27 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 03/59] linux-user/arm: Split out emulate_arm_fpa11 Date: Mon, 17 May 2021 20:13:28 +0200 Message-Id: <20210517181424.8093-4-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:SUrLuZA3bw1NwZTYcQOqHDe4/AKHYADCsiwaDiZd4nyz9L8IauU w0YGhigPoTcfeFxaSZp+gZnSqd5jXhChs5rpZ1e4DANfCczoZ3IK1zFIm0qhJuP0KZmD2f4 BFCKcMmRtvY0JH4/qw0cVVZnZFUiCAotHEasDdKKnh+k2e64sjm8v+0Y6YtyoCjOD12cXBc OFnOV+6ZJl2DXO91nxZXw== X-UI-Out-Filterresults: notjunk:1; V03:K0:X6M2PtFSfRk=:fjpJNCaQ1JkLg+0JvXoEhH NLMqIoOMHWRewpNPZgiR6DWhT7vfiThhT4eEBIYmUb7MJEqL9zaQAdRvwG6smAG+r037C7SIn EzBnfpFN96XRdmt2PTbaNFbMmjvRtcLs8vP7mqnw6mIc2cr/RKq7rtASACWDZyReDuq9fVRaH 6vesCz6+ns1pkWhDrrKDzSQJLAghB0+oFRTah3TtI5VKt9HWnfJBUH1lMSfVZX26bnQsDyPT/ N214N9w/GpuQ2RL37e9J/XDI/ifs0vbpiDyft89GsuRUZmmhdK9OjUbwaUD79ARp23LilLWqS eo+++JxLFoVkg0wHSipBUxsUVgNIUVbYXXUlYPQsJlGvquP93C56uS6DMuCZJxGIA64LRkQH/ gQ4lkGi9O9umr/NM9duTTpHPv2hMDj0UoPu6mNDSiZEVlLndj3RCxGCH26N2lVk6cvGGMJykF 9vu3fvMF+jx56E4wPjb88G+Nhn5X5xqQOrJx3kFA4bTB0n13TFd3J2ZCextW4xYXSecelOLmD gQ44LpjV72TZJc3gyiyhwM= Received-SPF: none client-ip=212.227.126.133; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Pull out the fpa11 emulation to a helper function. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-Id: <20210423165413.338259-2-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/arm/cpu_loop.c | 153 +++++++++++++++++++++++--------------- 1 file changed, 94 insertions(+), 59 deletions(-) -- 2.31.1 diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c index 989d03cd89d8..106909c7d880 100644 --- a/linux-user/arm/cpu_loop.c +++ b/linux-user/arm/cpu_loop.c @@ -224,6 +224,92 @@ static bool insn_is_linux_bkpt(uint32_t opcode, bool is_thumb) } } +static bool emulate_arm_fpa11(CPUARMState *env, uint32_t opcode) +{ + TaskState *ts = env_cpu(env)->opaque; + int rc = EmulateAll(opcode, &ts->fpa, env); + + if (rc == 0) { + /* Illegal instruction */ + return false; + } + if (rc > 0) { + /* Everything ok. */ + env->regs[15] += 4; + return true; + } + + /* FP exception */ + int arm_fpe = 0; + + /* Translate softfloat flags to FPSR flags */ + if (-rc & float_flag_invalid) { + arm_fpe |= BIT_IOC; + } + if (-rc & float_flag_divbyzero) { + arm_fpe |= BIT_DZC; + } + if (-rc & float_flag_overflow) { + arm_fpe |= BIT_OFC; + } + if (-rc & float_flag_underflow) { + arm_fpe |= BIT_UFC; + } + if (-rc & float_flag_inexact) { + arm_fpe |= BIT_IXC; + } + + /* Exception enabled? */ + FPSR fpsr = ts->fpa.fpsr; + if (fpsr & (arm_fpe << 16)) { + target_siginfo_t info; + + info.si_signo = TARGET_SIGFPE; + info.si_errno = 0; + + /* ordered by priority, least first */ + if (arm_fpe & BIT_IXC) { + info.si_code = TARGET_FPE_FLTRES; + } + if (arm_fpe & BIT_UFC) { + info.si_code = TARGET_FPE_FLTUND; + } + if (arm_fpe & BIT_OFC) { + info.si_code = TARGET_FPE_FLTOVF; + } + if (arm_fpe & BIT_DZC) { + info.si_code = TARGET_FPE_FLTDIV; + } + if (arm_fpe & BIT_IOC) { + info.si_code = TARGET_FPE_FLTINV; + } + + info._sifields._sigfault._addr = env->regs[15]; + queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + } else { + env->regs[15] += 4; + } + + /* Accumulate unenabled exceptions */ + if ((!(fpsr & BIT_IXE)) && (arm_fpe & BIT_IXC)) { + fpsr |= BIT_IXC; + } + if ((!(fpsr & BIT_UFE)) && (arm_fpe & BIT_UFC)) { + fpsr |= BIT_UFC; + } + if ((!(fpsr & BIT_OFE)) && (arm_fpe & BIT_OFC)) { + fpsr |= BIT_OFC; + } + if ((!(fpsr & BIT_DZE)) && (arm_fpe & BIT_DZC)) { + fpsr |= BIT_DZC; + } + if ((!(fpsr & BIT_IOE)) && (arm_fpe & BIT_IOC)) { + fpsr |= BIT_IOC; + } + ts->fpa.fpsr = fpsr; + return true; +} + void cpu_loop(CPUARMState *env) { CPUState *cs = env_cpu(env); @@ -244,9 +330,7 @@ void cpu_loop(CPUARMState *env) case EXCP_NOCP: case EXCP_INVSTATE: { - TaskState *ts = cs->opaque; uint32_t opcode; - int rc; /* we handle the FPU emulation here, as Linux */ /* we get the opcode */ @@ -263,64 +347,15 @@ void cpu_loop(CPUARMState *env) goto excp_debug; } - rc = EmulateAll(opcode, &ts->fpa, env); - if (rc == 0) { /* illegal instruction */ - info.si_signo = TARGET_SIGILL; - info.si_errno = 0; - info.si_code = TARGET_ILL_ILLOPN; - info._sifields._sigfault._addr = env->regs[15]; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - } else if (rc < 0) { /* FP exception */ - int arm_fpe=0; - - /* translate softfloat flags to FPSR flags */ - if (-rc & float_flag_invalid) - arm_fpe |= BIT_IOC; - if (-rc & float_flag_divbyzero) - arm_fpe |= BIT_DZC; - if (-rc & float_flag_overflow) - arm_fpe |= BIT_OFC; - if (-rc & float_flag_underflow) - arm_fpe |= BIT_UFC; - if (-rc & float_flag_inexact) - arm_fpe |= BIT_IXC; - - FPSR fpsr = ts->fpa.fpsr; - //printf("fpsr 0x%x, arm_fpe 0x%x\n",fpsr,arm_fpe); - - if (fpsr & (arm_fpe << 16)) { /* exception enabled? */ - info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; - - /* ordered by priority, least first */ - if (arm_fpe & BIT_IXC) info.si_code = TARGET_FPE_FLTRES; - if (arm_fpe & BIT_UFC) info.si_code = TARGET_FPE_FLTUND; - if (arm_fpe & BIT_OFC) info.si_code = TARGET_FPE_FLTOVF; - if (arm_fpe & BIT_DZC) info.si_code = TARGET_FPE_FLTDIV; - if (arm_fpe & BIT_IOC) info.si_code = TARGET_FPE_FLTINV; - - info._sifields._sigfault._addr = env->regs[15]; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); - } else { - env->regs[15] += 4; - } - - /* accumulate unenabled exceptions */ - if ((!(fpsr & BIT_IXE)) && (arm_fpe & BIT_IXC)) - fpsr |= BIT_IXC; - if ((!(fpsr & BIT_UFE)) && (arm_fpe & BIT_UFC)) - fpsr |= BIT_UFC; - if ((!(fpsr & BIT_OFE)) && (arm_fpe & BIT_OFC)) - fpsr |= BIT_OFC; - if ((!(fpsr & BIT_DZE)) && (arm_fpe & BIT_DZC)) - fpsr |= BIT_DZC; - if ((!(fpsr & BIT_IOE)) && (arm_fpe & BIT_IOC)) - fpsr |= BIT_IOC; - ts->fpa.fpsr=fpsr; - } else { /* everything OK */ - /* increment PC */ - env->regs[15] += 4; + if (emulate_arm_fpa11(env, opcode)) { + break; } + + info.si_signo = TARGET_SIGILL; + info.si_errno = 0; + info.si_code = TARGET_ILL_ILLOPN; + info._sifields._sigfault._addr = env->regs[15]; + queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); } break; case EXCP_SWI: From patchwork Mon May 17 18:13:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440174 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1329912jac; Mon, 17 May 2021 11:19:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyJPARsrdciXZ71sTAroBmmiysX4ipjqu4qcUQT68RQpYkKdp4qf7AEmtC4N1RyIzRCR0xW X-Received: by 2002:a05:6602:21c2:: with SMTP id c2mr1058022ioc.11.1621275566162; Mon, 17 May 2021 11:19:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621275566; cv=none; d=google.com; s=arc-20160816; b=uQUg9aFgWOnVfm6KyKfSotVwc7Iwv6MOz9ss5kc9UhjlmVQvk7YO7rb+TDu0AFkwSb yjLNg7byFL8hB0CYyFBo0d6E5Vq1cie8GBRWPV2dEES3ZbneDiPG+Q6x7U8o31uiYqU7 4tI5evVNYsyc+c/02nMt9P6gsLUIZU10frewodl7aGLa2PgdnwdN9q+PlLDcO8hDfBri 5Uf+al860Ch+RWG0vntLiejZtcubHbCF4ZF3heakDJilw6Cn1c8G23YrcIzZyC6i94Kg JzCzppTjYlf55KLpaG6/fI2qX+bYYulDDY97lSl8v0xLsppIDMCCCRK91eWBx2NM3Jgr CvAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=EUyuP9k8Q3Q3Q42KyC1NZZ/MAhyG0Df1OfgfvPgi4+k=; b=TyGR5Gr8iJjWtZh9500R17QasZVtEnWFVbKQM3vSqnjbUMFqzihpZGLjrb3f2pP6r8 gXJ8cIn+wL2dEKrcM1F8xYFfhKl1pDn0IFBqWw7MP6qomk/C9ywrGB9d/FEaauUgcvD4 Ja1pA2z2b/Sz2oF/5+kUW5o+ebyZgltviOsbz1BxUeH2koM/1gqVdwKspPXRg2Apw4fU 7NObExKdbXg4RJ7Bd+GL4IaGXe17UFKjQTY7Mc3863ohY4g5qc1ZjAPmqSop/6Il4LQ7 /ajCwEdO6jX+IcKhUsnigUAFX/n2A9OHctARLTY894/SB6NXEP2r5XBznu8XQObL1DFK nLCw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id w36si5718948jal.44.2021.05.17.11.19.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:19:26 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:60910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihpt-0003fs-F4 for patch@linaro.org; Mon, 17 May 2021 14:19:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33722) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlN-0005w9-GP for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:45 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:35047) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihl9-0004Kg-Ei for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:45 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1Macf4-1lB1dW00V8-00cCQP; Mon, 17 May 2021 20:14:28 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 04/59] linux-user/arm: Do not emulate fpa11 in thumb mode Date: Mon, 17 May 2021 20:13:29 +0200 Message-Id: <20210517181424.8093-5-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:d96SM/HLBvhtLhPbYHHN+LETS6rwnq2tQ60xxhuBCndKIvxL2nA ySOo64RqgZrpjPtQywLgZXWJCSSUuP+mwf/dfisD4Qaw7PYMcVgw6HT54Sm4bN/jkeWRRbJ dJ776HDHuwErUnwTNH+Fo7dfSTMP9o8TwKK3dnR33pugIPv9Pgy6g2AK6KCOt5I3mCRZqTW uAamgr3Nra/eMQ+LvcTQg== X-UI-Out-Filterresults: notjunk:1; V03:K0:MaP+6qbNF+0=:cKBPXUikNh8K7boY4BahJU A5eYWA1ouL/6NxQAborjI2E15aVz0v3Aj4TRZEt/KMnCk62nsdq6kRLNvInuxAAmeoqMZRbIO 8GBVzP3csrkaoF+C7T726DQQ34qDBcD/4T0BMU4EOQo4w1eQxi7/YIfngV7AAizEi+1GQuf0Z GPLad2q6GIscqhq7wdMJH1qBZvV07/IQ7Suwahs/OD5k4pZfE3Be7G1J8TAWo5eaKDzKt71QY DUGX9DTUXKRYZPI+4qb4rulM5BSq428VECF0rYN/mDpyHMdmVPpLstuTLzxOjZT586ft6NlKM ZdcaKYrJ9PN7LFIC1LCVHaQvBuifVW2fdqP5P4qcx16asZ78Gs4Jxpc3CbH4sf1Rs2s+61T43 2mTRe19coBhj9hCpwmIN7YHSwj8nd2IQOonFct9296xSOavmWS04ORNZUi2Kw8yMgLLfnR/uF G2rGTDbsv8r5Mo0f+QfAspPkfF/gzu/QU9SvHv+BXW8ypunImDW+DNoraZ2GphrYk/b9711Cq 5XPs3Z6+Ysc/wYt2IPAhiw= Received-SPF: none client-ip=212.227.126.135; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson These antiquated instructions are arm-mode only. Buglink: https://bugs.launchpad.net/bugs/1925512 Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-Id: <20210423165413.338259-3-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/arm/cpu_loop.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.31.1 diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c index 106909c7d880..e2a1496b9fe7 100644 --- a/linux-user/arm/cpu_loop.c +++ b/linux-user/arm/cpu_loop.c @@ -347,7 +347,7 @@ void cpu_loop(CPUARMState *env) goto excp_debug; } - if (emulate_arm_fpa11(env, opcode)) { + if (!env->thumb && emulate_arm_fpa11(env, opcode)) { break; } From patchwork Mon May 17 18:13:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440172 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1326770jac; Mon, 17 May 2021 11:15:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzCkbI2VPs7cQjht3Rn1kdOAapYndq7RmA8b5Sc+ElUHZiF1KW0mxk+uaOV4E1gMTw4zPv3 X-Received: by 2002:a6b:7714:: with SMTP id n20mr993497iom.126.1621275329344; Mon, 17 May 2021 11:15:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621275329; cv=none; d=google.com; s=arc-20160816; b=rnPBpznQsZvPG5+SrYO1unt9kgWlRaIsAloksnnANGTQq5rh6ZUBKcBHl8QJxDnJUQ CvZliC3+aYtR9WemMfTSlYhc6l3yskANm3Nv3kbjc5Cih2iInl8XA6135J5Fgso2uHg2 p6N6X3CzCU26RdNj/g2Z81/CRIbtYhpvZOxX/bi43OR/EvWlbgxlitnW4gK5Tc0WsmZo i7oUJ676qA5BowdEBqzDTLKu6NugLTe5b2RkvhNSXMYg61gAuTvRV1EqbbyjtkTVaQVn lXASXnVgAIxqq0MwbiAxdxq0pgdPZUODBbxhnUpp1GYjZYizfd7z2kfYZv3Z0og5kpZ/ Dffg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=Gwtu2bwOjeV8nx3q69g5zVj7qdW0SsuFeyNbW1BIYQo=; b=dDQ400sgUUH9VUVYJIqF2Ofl1xmlOHIxpLOfgwMVadZHUuRT2+r+XP2APZgsAIvc/9 EfBBbzeyZRuR7Zr9XNz455mMIOmGPHHuucdxozayAGg7YDq9GaJHsNqT8hhgTZ9Xg+3M 7FXeJu/iZd/WrOfGSFJJ2EpZ4hFm935dhg412saAT8Iy5W3eA1jqoQUTf6m4o4SbJbZx vSg6riz3iAsN/BlM1o7lVBbjYvXGyLuLz4FuEjrcpfWjn9zr7LtFpGpOjTErQqYONYyZ Lov86iH6a/Evm7jMNAXXt3N/21gZerje/+SIhz6ZNPPDmMAm26fS/6FrJdfMijacCRJZ p+2g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id x7si6350089ior.77.2021.05.17.11.15.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:15:29 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:52566 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihm4-0005wT-JA for patch@linaro.org; Mon, 17 May 2021 14:15:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33586) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlC-0005u8-DF for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:35 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:40453) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihl9-0004Kj-Am for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:34 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MyJx6-1lYjSS1ujU-00yhMJ; Mon, 17 May 2021 20:14:28 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 05/59] linux-user/arm: Do not fill in si_code for fpa11 exceptions Date: Mon, 17 May 2021 20:13:30 +0200 Message-Id: <20210517181424.8093-6-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:rg9AVIG0sjYD3n7Givh8BQA4Ai+VHIKD10s4ZcYPPoq/biiojII d9NsXUQ1WYqxecHnDgrCwC1D0p2WNAWlpFo2Hof6jZd42grydQD6rYDAHl6N3nUcLqPqWG/ c/lUECeJ7jFdx+cLXMtzKYekWxCIcKdgckpGqxWS4wyES9Yn17WWacqb6uMkL1ebIY/tMdG p5xuUXnASqw6C4WYvVViA== X-UI-Out-Filterresults: notjunk:1; V03:K0:a9gGb7MCQMY=:s7h7DidPhQs0V7J+EYSA4T UawweaEm9L2q6RaC5p8FHMVUXryK1zuzaanYwgyxBXuFvoDTxlJHj73zTC5Vlj4T7y7kdon8r BNw+mbxABlDnptQD9SLpOKjlMOSxqUXrgIy2rN7xndMMlZ0e5/sU/1xplvS60KTRLSq23UA+t 36EWGjfX1X1OmN2o944Nhh3eP8jYasXkPg/mk62EouFl8J3YLgPtn6DSXx3R9pJ38VvwiKpAu i/Qy9vLWQ4XdfNLYJfPZEYp2frUBz0uAOfjr7XIGENwBDFQjj/N7R/zQoVQIy+o8s63IDX9Uz YEbG7goe/nwhx2oG+WEX/gFeUhkwBgZkSosWAkl5Ckj+M8p+FVaSoXSAZ3ZCpkiVRXMONIKTW 4Qy3wg38uNlHtnlG8tJb712giYgAtDYQ3YivnxvyfZC3Jm9VVuek+9hPvrHtJmPwhoiC9v4t2 N4BrjG6Lso3przSMZAYuef/wZfaHRhTAr5mg9Ud1FjSYrCDw9zloxQ5uVvvIRr4D4xoVnKPjS AxZ9u1kSiJtWX6TWXOXjZE= Received-SPF: none client-ip=212.227.126.134; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson There is no such decoding in linux/arch/arm/nwfpe/fpmodule.c. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-Id: <20210423165413.338259-4-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/arm/cpu_loop.c | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) -- 2.31.1 diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c index e2a1496b9fe7..5f61d25717c3 100644 --- a/linux-user/arm/cpu_loop.c +++ b/linux-user/arm/cpu_loop.c @@ -262,29 +262,15 @@ static bool emulate_arm_fpa11(CPUARMState *env, uint32_t opcode) /* Exception enabled? */ FPSR fpsr = ts->fpa.fpsr; if (fpsr & (arm_fpe << 16)) { - target_siginfo_t info; + target_siginfo_t info = { }; + /* + * The kernel's nwfpe emulator does not pass a real si_code. + * It merely uses send_sig(SIGFPE, current, 1). + */ info.si_signo = TARGET_SIGFPE; - info.si_errno = 0; - - /* ordered by priority, least first */ - if (arm_fpe & BIT_IXC) { - info.si_code = TARGET_FPE_FLTRES; - } - if (arm_fpe & BIT_UFC) { - info.si_code = TARGET_FPE_FLTUND; - } - if (arm_fpe & BIT_OFC) { - info.si_code = TARGET_FPE_FLTOVF; - } - if (arm_fpe & BIT_DZC) { - info.si_code = TARGET_FPE_FLTDIV; - } - if (arm_fpe & BIT_IOC) { - info.si_code = TARGET_FPE_FLTINV; - } + info.si_code = TARGET_SI_KERNEL; - info._sifields._sigfault._addr = env->regs[15]; queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); } else { env->regs[15] += 4; From patchwork Mon May 17 18:13:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440173 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1326769jac; Mon, 17 May 2021 11:15:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxbPauQFrAFICvRp9k93LyYD+HOT32GC78Kpib3PJ+QwNkAWBlW+GoCx100ASMWiAMYd4FS X-Received: by 2002:a05:6e02:2149:: with SMTP id d9mr827918ilv.162.1621275329354; Mon, 17 May 2021 11:15:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621275329; cv=none; d=google.com; s=arc-20160816; b=GZ1+2mpETZVhPaMeQ7rcAH4DcFp+j0jc+B7dCvBWgpAxk/N00SRF6kG8tRG5YmOEtr r5ywLxxXhj+aAZL9Rzlam8RGANYF5014vhgTLbxBsxMn9HRZYOaowZkgEH1fxDkfVg3w TYYiyOn+wcskXJh/ulvyYEXNrVloSIpa3YrlZiRogwgKZJg8a8erGVXKe4COjHcCYUkQ tvZzRPscRGrQuRhRHAQWo/zPj9Org1Q+WZ4I83P1xxHjwtU1G8F/j1rUtIGBRNGGZxED C+DoWfWbYOvcW/u8BW6extz83j50tdilRrkz2BNJN1rLvFfaQaYcdCLC3j5QA97zU699 0U+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=jbdI/CHaHgWq/cOVm0TK8wMMliI9NiY7E7zqifqtDpU=; b=lQbDXtLf4kAWLGKjUGNWjdeX0nzdIzTtVGZE0xqyipWBtov+ZrHB5a98mkAu22wEDC d2uNeNA4RwrW2//kmmsc4F4Ahretb4BZKbGoQ+oGABh4GGvHve/TBbuhgIjdZ6cLg7w/ mQXUn389yXUO6yZolg1jTWd8gJV7o9EFQndRScVdh6Oe3SD90F9LE7sppPlYlVUc9Gc+ TUxiZT/DWes1TwVFBGVGNGv9Nikr+wr61wH8o3bqztbdC40LrjBdQPqfEEC7f4iSj44n vZHhjgK0+BTQpsnINo70mVTCejWKMC6AX0iIjcBdanFl7gfxCaKUjvm4Bj58kZapMJEv wgDA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q145si20964813iod.36.2021.05.17.11.15.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:15:29 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:52574 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihm4-0005xU-JX for patch@linaro.org; Mon, 17 May 2021 14:15:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33646) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlF-0005ua-Q1 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:37 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:60007) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihl9-0004Kp-Ed for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:37 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MhlXE-1lDkf63wBM-00dr7n; Mon, 17 May 2021 20:14:29 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 06/59] linux-user/arm: Simplify accumulating and raising fpa11 exceptions Date: Mon, 17 May 2021 20:13:31 +0200 Message-Id: <20210517181424.8093-7-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:0YAoTbXnbC6iGb9edyFhAr5Hobsf0tJgXBmf2naxTYBYYwtM0CS JATKoO2dDef5GGuf/MBZrxOQf9ZK3UEefuUXJwCfjRFPaQfIbUrMn5lqWoee/TUkQ8uXj4E ABzJJZEMiqffNtmFEies1eJUgrN6ZkuCjZeIO0lX8kjtdqjQDGZyC9pssxyHXDAZwgBCTaH yvDsbUy8V20d97uHydn1g== X-UI-Out-Filterresults: notjunk:1; V03:K0:6eAcCOPt7PA=:y9JF4kPYGHTljrQvgNRABp zoUNNfZPoJDQP7xO4Cj2mHF5KyVfoCsHhnTQMYsUNC3t7izGGFaGZ2Ox7RN/7EynUFP8c2HdT mI+g0DTVbgt/c+IEQneAqN8Tya8C9JZf/ZY4CwuHrX0IcHIQUtfnGD2YpbTkdvSUXP9gNEmeM w5vm9cTNMLVlt6vzsZGqJZ2Q958av34RqihseY3F8rPIYxWlDCINLlONWs7/ype0WVvHvWTRc YUyI/jPQvWdoQZSi5hpt9HYX/7SkTzlevVM3puEI/Inhp6hSAl4O5f0XIUIaJ9NgAyH4nH1Xb AKzqAmVs6N2Gk+SbnvVQIgTiOxKQaLMs/nMI+205fOXa4XMxGsJa4bb64e2kFUXzNKZ8HbJeR pnWDkJYOIyiei7egHGwy3UmrbNszVJAX+p/GrfXcPu4A2w8jgZkv0FdcHOPLWA3W1jvggO62q dSkI0SI6cFCkXX6UjiCcZykYLQbMTYJkfaJYJ7qdBgAxJeUYrYlYam2FIVxShAqv8vzZh9TmK AylcTIQ7JSULpW1LRmYotM= Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Use bit masking instead of an if tree. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Message-Id: <20210423165413.338259-5-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/arm/cpu_loop.c | 50 ++++++++++++++------------------------- 1 file changed, 18 insertions(+), 32 deletions(-) -- 2.31.1 diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c index 5f61d25717c3..69632d15be18 100644 --- a/linux-user/arm/cpu_loop.c +++ b/linux-user/arm/cpu_loop.c @@ -228,6 +228,7 @@ static bool emulate_arm_fpa11(CPUARMState *env, uint32_t opcode) { TaskState *ts = env_cpu(env)->opaque; int rc = EmulateAll(opcode, &ts->fpa, env); + int raise, enabled; if (rc == 0) { /* Illegal instruction */ @@ -240,28 +241,31 @@ static bool emulate_arm_fpa11(CPUARMState *env, uint32_t opcode) } /* FP exception */ - int arm_fpe = 0; + rc = -rc; + raise = 0; /* Translate softfloat flags to FPSR flags */ - if (-rc & float_flag_invalid) { - arm_fpe |= BIT_IOC; + if (rc & float_flag_invalid) { + raise |= BIT_IOC; } - if (-rc & float_flag_divbyzero) { - arm_fpe |= BIT_DZC; + if (rc & float_flag_divbyzero) { + raise |= BIT_DZC; } - if (-rc & float_flag_overflow) { - arm_fpe |= BIT_OFC; + if (rc & float_flag_overflow) { + raise |= BIT_OFC; } - if (-rc & float_flag_underflow) { - arm_fpe |= BIT_UFC; + if (rc & float_flag_underflow) { + raise |= BIT_UFC; } - if (-rc & float_flag_inexact) { - arm_fpe |= BIT_IXC; + if (rc & float_flag_inexact) { + raise |= BIT_IXC; } - /* Exception enabled? */ - FPSR fpsr = ts->fpa.fpsr; - if (fpsr & (arm_fpe << 16)) { + /* Accumulate unenabled exceptions */ + enabled = ts->fpa.fpsr >> 16; + ts->fpa.fpsr |= raise & ~enabled; + + if (raise & enabled) { target_siginfo_t info = { }; /* @@ -275,24 +279,6 @@ static bool emulate_arm_fpa11(CPUARMState *env, uint32_t opcode) } else { env->regs[15] += 4; } - - /* Accumulate unenabled exceptions */ - if ((!(fpsr & BIT_IXE)) && (arm_fpe & BIT_IXC)) { - fpsr |= BIT_IXC; - } - if ((!(fpsr & BIT_UFE)) && (arm_fpe & BIT_UFC)) { - fpsr |= BIT_UFC; - } - if ((!(fpsr & BIT_OFE)) && (arm_fpe & BIT_OFC)) { - fpsr |= BIT_OFC; - } - if ((!(fpsr & BIT_DZE)) && (arm_fpe & BIT_DZC)) { - fpsr |= BIT_DZC; - } - if ((!(fpsr & BIT_IOE)) && (arm_fpe & BIT_IOC)) { - fpsr |= BIT_IOC; - } - ts->fpa.fpsr = fpsr; return true; } From patchwork Mon May 17 18:13:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440178 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1334302jac; Mon, 17 May 2021 11:25:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxs+3gpDAsIYXSVeQh3nvjLgcM1+ZtOwYYEMWJanigAEO8KuLIFI6tEj3vpjKa0JjyDnhrB X-Received: by 2002:a05:6e02:1a2e:: with SMTP id g14mr837358ile.135.1621275937090; Mon, 17 May 2021 11:25:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621275937; cv=none; d=google.com; s=arc-20160816; b=ATwfC6MWjVOO1Omj+ZEpCKkQJoxiI2d0zGG5eCcBSkO6B7evyop5BGtaWXRTTZsTsZ 1hGRHpqkkdaOp8TUgRRT7aBkGeVOZqcHRdw8il55pZqDy8R9m4nVVGQl8b3lH8Pp4/+G 97M82UOKg5H/gXWfea00XsJU0oCbvh/+aK3+jvnAT7eVfuCPX8FU89qK6ic/2VPivx0j D7Cp0kVfKW1wchLqwBRpp5pDTgIp2mreF2dtgTCs3GwNLIXoDF3rSuFWPDOy2O9Nta3p rJiKBj8/SuS5YwKzWYDdKTiz6/n0FoQtrnxMYmiZAhMK5bymjYpNLeaTRBd7sUN/ZpmR zxeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=wZoLARSpdvqVLNjjpLNZp9I6FDFZTQJ9G7VRoh3dCdc=; b=XWiGDP531WOnasQxZAnc0Y+iyJ9Ye1qPjYqhnqVGh+3ocsYadVq7BSFDvZqkeWYDpO ZfQmcF+7QKd7O4TXQOsv+oaA3RVnyeaPuqNIjIl0IajtVfhCkPZG3cMR8bjTafVmY1F8 ApBpXAZiaCP2UyvsIL0MJ9aT77vExG0Du2OA8Le1UyAYvWnKffkPl8CBJYjsUSBgY/fg ZIgGpmEDN5G1C4P7Za05P+LAmAzfRlNrvF52iiaDv8+ziJBOl9eOPtxW8BQs2RtlqXzA B89/NtTvlP0IPZYmUs7ej1W0luYOEb5Rtk0ftGN0VDG7DXusD36znCmo1LvJCWHNln62 725w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id l3si20175430jad.55.2021.05.17.11.25.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:25:37 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:50274 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihvs-0006zv-GL for patch@linaro.org; Mon, 17 May 2021 14:25:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33704) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlM-0005vQ-Uq for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:45 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:39197) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlA-0004L6-0p for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:44 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MsqIi-1lTFHB3vrc-00tB2t; Mon, 17 May 2021 20:14:30 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 08/59] linux-user: Split out target_restore_altstack Date: Mon, 17 May 2021 20:13:33 +0200 Message-Id: <20210517181424.8093-9-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:fQ51b/TGu93NUvQ/+nqC4BBZbw0kPNf29QORwf+QaL/NVmmWEik 12QwGET5Hbs7M7G6RC0vt8R1DzhS4inVYnaac///+0J5KPBg8v8HGAHw3h/RKha3cTYnsup kG6C9c3IV4xi84tWh7MNcslKLOWAtoeAQOWh43B0uPAkV+vlSYoeA3kydPmntotI6NhyaXb BMnBreZQvhJWeqJ/eFUrQ== X-UI-Out-Filterresults: notjunk:1; V03:K0:pZpDfgMqruY=:UD7UUkmJx/n219Z1JT0TX/ dL4qnh7rIeAFNPZCMG2m05smb5JXviJEAAqBYWCYBNpOSwZT0uragXzZ9Cii+YOkFYwHbtiYK wmP0EMOZGzSqXwh9vm5bGH9rEp5tDURq9OELsZUiHHfLdH3dl61TjBEg5/vDFW7nTkirh6Kz8 H5rd3T5cdkc/haEsi5r/FH6PZnOv9VUKeSWE/zdJh/f55a8qovjWyUsIFecBWiC0gb4lQroh9 5swqDR0nsAmyPCG7QxH1o+AQJlOMkL1m1o7KOdZz7FQU2GCDQzuVWsDYTdzsKoJcPeOda8cPl EJqk8uya8mhmrLMLeBdBKQsFCFSwWEYewcSEoRu0PIcc+7buPqL3CttLLLnhgSLUYbIzqS5qG dEuPHhgDDq+d6/mmQ2RUrM+4DVYdNh+/jZa9I/PjSkIXc8XiOGf7yXFPpIDQiFFpBtLL729P4 PPsSWnPBWDnEHvjNZSqL4/7TsS+8mDRi2Da8/9NDK8gWC5fpdlzVFjrW9qKs7ERxLq/N2l2xB mGJvsCd5anJuYnI6dNJKS0= Received-SPF: none client-ip=212.227.126.133; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Create a function to match target_save_altstack. Fix some style and unlock issues in do_sigaltstack. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-2-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/signal-common.h | 1 + linux-user/signal.c | 115 +++++++++++++++++++++---------------- 2 files changed, 66 insertions(+), 50 deletions(-) -- 2.31.1 diff --git a/linux-user/signal-common.h b/linux-user/signal-common.h index 1df1068552fb..34b963af9abc 100644 --- a/linux-user/signal-common.h +++ b/linux-user/signal-common.h @@ -24,6 +24,7 @@ int on_sig_stack(unsigned long sp); int sas_ss_flags(unsigned long sp); abi_ulong target_sigsp(abi_ulong sp, struct target_sigaction *ka); void target_save_altstack(target_stack_t *uss, CPUArchState *env); +abi_long target_restore_altstack(target_stack_t *uss, abi_ulong sp); static inline void target_sigemptyset(target_sigset_t *set) { diff --git a/linux-user/signal.c b/linux-user/signal.c index 7eecec46c407..9daa89eac5db 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -297,6 +297,50 @@ void target_save_altstack(target_stack_t *uss, CPUArchState *env) __put_user(ts->sigaltstack_used.ss_size, &uss->ss_size); } +abi_long target_restore_altstack(target_stack_t *uss, abi_ulong sp) +{ + TaskState *ts = (TaskState *)thread_cpu->opaque; + size_t minstacksize = TARGET_MINSIGSTKSZ; + target_stack_t ss; + +#if defined(TARGET_PPC64) + /* ELF V2 for PPC64 has a 4K minimum stack size for signal handlers */ + struct image_info *image = ts->info; + if (get_ppc64_abi(image) > 1) { + minstacksize = 4096; + } +#endif + + __get_user(ss.ss_sp, &uss->ss_sp); + __get_user(ss.ss_size, &uss->ss_size); + __get_user(ss.ss_flags, &uss->ss_flags); + + if (on_sig_stack(sp)) { + return -TARGET_EPERM; + } + + switch (ss.ss_flags) { + default: + return -TARGET_EINVAL; + + case TARGET_SS_DISABLE: + ss.ss_size = 0; + ss.ss_sp = 0; + break; + + case TARGET_SS_ONSTACK: + case 0: + if (ss.ss_size < minstacksize) { + return -TARGET_ENOMEM; + } + break; + } + + ts->sigaltstack_used.ss_sp = ss.ss_sp; + ts->sigaltstack_used.ss_size = ss.ss_size; + return 0; +} + /* siginfo conversion */ static inline void host_to_target_siginfo_noswap(target_siginfo_t *tinfo, @@ -758,73 +802,44 @@ static void host_signal_handler(int host_signum, siginfo_t *info, /* compare linux/kernel/signal.c:do_sigaltstack() */ abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, abi_ulong sp) { - int ret; - struct target_sigaltstack oss; - TaskState *ts = (TaskState *)thread_cpu->opaque; + target_stack_t oss, *uoss = NULL; + abi_long ret = -TARGET_EFAULT; + + if (uoss_addr) { + TaskState *ts = (TaskState *)thread_cpu->opaque; - /* XXX: test errors */ - if(uoss_addr) - { + /* Verify writability now, but do not alter user memory yet. */ + if (!lock_user_struct(VERIFY_WRITE, uoss, uoss_addr, 0)) { + goto out; + } __put_user(ts->sigaltstack_used.ss_sp, &oss.ss_sp); __put_user(ts->sigaltstack_used.ss_size, &oss.ss_size); __put_user(sas_ss_flags(sp), &oss.ss_flags); } - if(uss_addr) - { - struct target_sigaltstack *uss; - struct target_sigaltstack ss; - size_t minstacksize = TARGET_MINSIGSTKSZ; + if (uss_addr) { + target_stack_t *uss; -#if defined(TARGET_PPC64) - /* ELF V2 for PPC64 has a 4K minimum stack size for signal handlers */ - struct image_info *image = ((TaskState *)thread_cpu->opaque)->info; - if (get_ppc64_abi(image) > 1) { - minstacksize = 4096; - } -#endif - - ret = -TARGET_EFAULT; if (!lock_user_struct(VERIFY_READ, uss, uss_addr, 1)) { goto out; } - __get_user(ss.ss_sp, &uss->ss_sp); - __get_user(ss.ss_size, &uss->ss_size); - __get_user(ss.ss_flags, &uss->ss_flags); - unlock_user_struct(uss, uss_addr, 0); - - ret = -TARGET_EPERM; - if (on_sig_stack(sp)) + ret = target_restore_altstack(uss, sp); + if (ret) { goto out; - - ret = -TARGET_EINVAL; - if (ss.ss_flags != TARGET_SS_DISABLE - && ss.ss_flags != TARGET_SS_ONSTACK - && ss.ss_flags != 0) - goto out; - - if (ss.ss_flags == TARGET_SS_DISABLE) { - ss.ss_size = 0; - ss.ss_sp = 0; - } else { - ret = -TARGET_ENOMEM; - if (ss.ss_size < minstacksize) { - goto out; - } } - - ts->sigaltstack_used.ss_sp = ss.ss_sp; - ts->sigaltstack_used.ss_size = ss.ss_size; } if (uoss_addr) { - ret = -TARGET_EFAULT; - if (copy_to_user(uoss_addr, &oss, sizeof(oss))) - goto out; + memcpy(uoss, &oss, sizeof(oss)); + unlock_user_struct(uoss, uoss_addr, 1); + uoss = NULL; } - ret = 0; -out: + + out: + if (uoss) { + unlock_user_struct(uoss, uoss_addr, 0); + } return ret; } From patchwork Mon May 17 18:13:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440184 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1337420jac; Mon, 17 May 2021 11:30:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJywggiHsHvHjnfRbGczPIpajjvOhjmBfGQ52sd4QPW7/sO2wFV3E7mGd5cpfakJsq3Aqrnc X-Received: by 2002:a9d:7a92:: with SMTP id l18mr733465otn.355.1621276229826; Mon, 17 May 2021 11:30:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276229; cv=none; d=google.com; s=arc-20160816; b=v183D1ILXfNRPiODl2eq6XSNs1PsqmXY2z3ONLW2rQeCuwyVDoQNsjx1hw4Y2xvnFw 1YPZW1h4xvrgeV8wmVH9QCtq8ZK4oB69wD/4mRvyVCREzxZr5XeR7Cbc8R/yCxrtFat5 2dEkhex6WYb8DNlg2T0X7KyoGKpEhTmqHHSCJ6PGF+6Va+wg4Fz9yLwHxWghkOvhhDcS wSvWbWpXWQQpHDmp+kOG+Kw+omHcPg0OOeQR64TfuLjkjPs0yCUwCoIh9YJgZPF3WnRd qBU/3B1m0+OuWdzDW2pe5AIYgWpt7Bt0buWcA3Uls/YREGEhcG7Y5p8+2Dsh/0E5wgjK 9SFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=w4zO68ONdyQCIfIsEC3jbLljXfT8nYkAHXAT2D0uYKA=; b=PAGQXfJhyZdyQyAR70+MFINNmSPD4VuqUtUoC+aWx3uSu8WlsRWSIVzkFK4bXP4daO Xve3uMrWGLWbT+w+3qmuIMddT94+qSRbiahNoO1uEvU0TE/EoHS39/2vLq4xNDC8W2/W RAByuMwsrstz+BGZB21uK8RN6aCEpDiheQQCZJSkvzq2jcIP4jR/Xz7XxdC9oHXan1FX is5M/362O7X7O5Tk0kdV0zbwVzuykSB3g16BoDw4gS2FNLAz+sjfa6yIFTp3SvGLtjU8 W23OfEQCSPry1aeFqDTeUysaisldnHoOAMSEijDNA4o11hT/cg7oGse69V3OiJFBL1EN OxqQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id l16si16342313otk.70.2021.05.17.11.30.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:30:29 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:59038 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii0b-0004Zc-58 for patch@linaro.org; Mon, 17 May 2021 14:30:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33744) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlO-0005wU-4i for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:46 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:50157) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlB-0004LG-Rh for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:45 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MZCvh-1lwCJj1bzV-00V5dG; Mon, 17 May 2021 20:14:30 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 09/59] linux-user: Use target_restore_altstack in all sigreturn Date: Mon, 17 May 2021 20:13:34 +0200 Message-Id: <20210517181424.8093-10-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:iFN+cImS2y9vJCQ8GlM7Tg4y8B+SOBuWxFznwXpysevEG4bov4p gCf2Zcnl5/Mfw7BONoA7olTh/ammwxK42VR33Kf9o1f2NIMLuE6PEXy78BwpQWwZIINI11o J2pPJ6qlwtKhVU0atGIk6OCKByRDCe3cyHfqVuSa1WZdG0zE6aZN0X/Z/9vZ4W2DQViui1K 8rih/XGiyY8AhnjvW+Cxw== X-UI-Out-Filterresults: notjunk:1; V03:K0:h/CTGCyXH6k=:ycLowW03RVV8nKvgE8Q4FK tS+pCgEwJroGLiIK3lKj5m4C+zwn1JrbudUSKFXAReyjFJGBxvt5geO8hCeZGcOZ/+8O6IC+F PDyL1TEaUepCLljdsnxaUnSr7879W2ET+03nHe8oT8HO5kJq0jQzr6NKJbgiurHPOwsKpDIcR QHPdeuiA8p0fc5X5WUCM/AnDN0RkvM0O6DInJoOWVkTWMyuXEU/vdD6itmL9kSfWe+oOyQpXh pAxYoEwkZU0Slo5FPnWrTIJwD0iE8yVPF/YtACIgPwDEgyAoKc/SFJaTp5lZDvSklUmjrt0Cn kihZvhLNTl5OKyxT2Sb/jApc07h/2Ot3tmCiniMPjGVbHCn7WNi8tPcgCeY0e/eRZluGkGWqT guoF3eiC1UqDQgPDPAAzyCSP71pKdOJ1eWuYyblwNiVqqQiPY5h5QwjFDYZUzICXk/5HL6u0y egogHgGl2iThymkj+1S7J59RICl4JqAsQbpa3Dg4tvRMGZUyUtSNshzlGaL5qoMzbPi3ZRO5m YDLlgAR++X9nnDHI4YbC10= Received-SPF: none client-ip=212.227.126.133; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Note that target_restore_altstack uses the host memory pointer that we have already verified, so TARGET_EFAULT is not a possible return value. Note that using -EFAULT was a bug. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-3-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/aarch64/signal.c | 6 +----- linux-user/alpha/signal.c | 6 +----- linux-user/arm/signal.c | 9 ++------- linux-user/hexagon/signal.c | 6 +----- linux-user/hppa/signal.c | 8 +------- linux-user/i386/signal.c | 5 +---- linux-user/m68k/signal.c | 5 +---- linux-user/microblaze/signal.c | 6 +----- linux-user/mips/signal.c | 6 +----- linux-user/nios2/signal.c | 8 +------- linux-user/openrisc/signal.c | 5 +---- linux-user/ppc/signal.c | 4 +--- linux-user/riscv/signal.c | 6 +----- linux-user/s390x/signal.c | 6 ++---- linux-user/sh4/signal.c | 7 +------ linux-user/xtensa/signal.c | 6 +----- 16 files changed, 18 insertions(+), 81 deletions(-) -- 2.31.1 diff --git a/linux-user/aarch64/signal.c b/linux-user/aarch64/signal.c index b591790c22ed..2a1b7dbcdc2b 100644 --- a/linux-user/aarch64/signal.c +++ b/linux-user/aarch64/signal.c @@ -561,11 +561,7 @@ long do_rt_sigreturn(CPUARMState *env) goto badframe; } - if (do_sigaltstack(frame_addr + - offsetof(struct target_rt_sigframe, uc.tuc_stack), - 0, get_sp_from_cpustate(env)) == -EFAULT) { - goto badframe; - } + target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/alpha/signal.c b/linux-user/alpha/signal.c index c5c27ce08419..0af022711815 100644 --- a/linux-user/alpha/signal.c +++ b/linux-user/alpha/signal.c @@ -257,11 +257,7 @@ long do_rt_sigreturn(CPUAlphaState *env) set_sigmask(&set); restore_sigcontext(env, &frame->uc.tuc_mcontext); - if (do_sigaltstack(frame_addr + offsetof(struct target_rt_sigframe, - uc.tuc_stack), - 0, env->ir[IR_SP]) == -EFAULT) { - goto badframe; - } + target_restore_altstack(&frame->uc.tuc_stack, env->ir[IR_SP]); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/arm/signal.c b/linux-user/arm/signal.c index f21d1535e4d9..b7a772302f45 100644 --- a/linux-user/arm/signal.c +++ b/linux-user/arm/signal.c @@ -685,11 +685,7 @@ static int do_sigframe_return_v2(CPUARMState *env, } } - if (do_sigaltstack(context_addr - + offsetof(struct target_ucontext_v2, tuc_stack), - 0, get_sp_from_cpustate(env)) == -EFAULT) { - return 1; - } + target_restore_altstack(&uc->tuc_stack, get_sp_from_cpustate(env)); #if 0 /* Send SIGTRAP if we're single-stepping */ @@ -773,8 +769,7 @@ static long do_rt_sigreturn_v1(CPUARMState *env) goto badframe; } - if (do_sigaltstack(frame_addr + offsetof(struct rt_sigframe_v1, uc.tuc_stack), 0, get_sp_from_cpustate(env)) == -EFAULT) - goto badframe; + target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); #if 0 /* Send SIGTRAP if we're single-stepping */ diff --git a/linux-user/hexagon/signal.c b/linux-user/hexagon/signal.c index fde8dc93b7a6..3854eb4709be 100644 --- a/linux-user/hexagon/signal.c +++ b/linux-user/hexagon/signal.c @@ -260,11 +260,7 @@ long do_rt_sigreturn(CPUHexagonState *env) } restore_ucontext(env, &frame->uc); - - if (do_sigaltstack(frame_addr + offsetof(struct target_rt_sigframe, - uc.uc_stack), 0, get_sp_from_cpustate(env)) == -EFAULT) { - goto badframe; - } + target_restore_altstack(&frame->uc.uc_stack, get_sp_from_cpustate(env)); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/hppa/signal.c b/linux-user/hppa/signal.c index d1a58feeb36f..578874cf27e6 100644 --- a/linux-user/hppa/signal.c +++ b/linux-user/hppa/signal.c @@ -187,13 +187,7 @@ long do_rt_sigreturn(CPUArchState *env) set_sigmask(&set); restore_sigcontext(env, &frame->uc.tuc_mcontext); - unlock_user_struct(frame, frame_addr, 0); - - if (do_sigaltstack(frame_addr + offsetof(struct target_rt_sigframe, - uc.tuc_stack), - 0, env->gr[30]) == -EFAULT) { - goto badframe; - } + target_restore_altstack(&frame->uc.tuc_stack, env->gr[30]); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/i386/signal.c b/linux-user/i386/signal.c index 9320e1d47267..3a0a1546a63e 100644 --- a/linux-user/i386/signal.c +++ b/linux-user/i386/signal.c @@ -581,10 +581,7 @@ long do_rt_sigreturn(CPUX86State *env) goto badframe; } - if (do_sigaltstack(frame_addr + offsetof(struct rt_sigframe, uc.tuc_stack), 0, - get_sp_from_cpustate(env)) == -EFAULT) { - goto badframe; - } + target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/m68k/signal.c b/linux-user/m68k/signal.c index 49ff87c77bce..004b59fb6118 100644 --- a/linux-user/m68k/signal.c +++ b/linux-user/m68k/signal.c @@ -400,10 +400,7 @@ long do_rt_sigreturn(CPUM68KState *env) if (target_rt_restore_ucontext(env, &frame->uc)) goto badframe; - if (do_sigaltstack(frame_addr + - offsetof(struct target_rt_sigframe, uc.tuc_stack), - 0, get_sp_from_cpustate(env)) == -EFAULT) - goto badframe; + target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/microblaze/signal.c b/linux-user/microblaze/signal.c index cf0707b5564b..f59a1faf47bb 100644 --- a/linux-user/microblaze/signal.c +++ b/linux-user/microblaze/signal.c @@ -209,11 +209,7 @@ long do_rt_sigreturn(CPUMBState *env) restore_sigcontext(&frame->uc.tuc_mcontext, env); - if (do_sigaltstack(frame_addr + - offsetof(struct target_rt_sigframe, uc.tuc_stack), - 0, get_sp_from_cpustate(env)) == -EFAULT) { - goto badframe; - } + target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/mips/signal.c b/linux-user/mips/signal.c index 455a8a229a83..456fa64f41cd 100644 --- a/linux-user/mips/signal.c +++ b/linux-user/mips/signal.c @@ -368,11 +368,7 @@ long do_rt_sigreturn(CPUMIPSState *env) set_sigmask(&blocked); restore_sigcontext(env, &frame->rs_uc.tuc_mcontext); - - if (do_sigaltstack(frame_addr + - offsetof(struct target_rt_sigframe, rs_uc.tuc_stack), - 0, get_sp_from_cpustate(env)) == -EFAULT) - goto badframe; + target_restore_altstack(&frame->rs_uc.tuc_stack, get_sp_from_cpustate(env)); env->active_tc.PC = env->CP0_EPC; mips_set_hflags_isa_mode_from_pc(env); diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index 7d535065ed98..751ea88811f8 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -82,9 +82,7 @@ static int rt_restore_ucontext(CPUNios2State *env, struct target_ucontext *uc, int *pr2) { int temp; - abi_ulong off, frame_addr = env->regs[R_SP]; unsigned long *gregs = uc->tuc_mcontext.gregs; - int err; /* Always make any pending restarted system calls return -EINTR */ /* current->restart_block.fn = do_no_restart_syscall; */ @@ -130,11 +128,7 @@ static int rt_restore_ucontext(CPUNios2State *env, struct target_ucontext *uc, __get_user(env->regs[R_RA], &gregs[23]); __get_user(env->regs[R_SP], &gregs[28]); - off = offsetof(struct target_rt_sigframe, uc.tuc_stack); - err = do_sigaltstack(frame_addr + off, 0, get_sp_from_cpustate(env)); - if (err == -EFAULT) { - return 1; - } + target_restore_altstack(&uc->tuc_stack, get_sp_from_cpustate(env)); *pr2 = env->regs[2]; return 0; diff --git a/linux-user/openrisc/signal.c b/linux-user/openrisc/signal.c index 232ad82b98be..86f94d7f766d 100644 --- a/linux-user/openrisc/signal.c +++ b/linux-user/openrisc/signal.c @@ -158,10 +158,7 @@ long do_rt_sigreturn(CPUOpenRISCState *env) set_sigmask(&set); restore_sigcontext(env, &frame->uc.tuc_mcontext); - if (do_sigaltstack(frame_addr + offsetof(target_rt_sigframe, uc.tuc_stack), - 0, frame_addr) == -EFAULT) { - goto badframe; - } + target_restore_altstack(&frame->uc.tuc_stack, frame_addr); unlock_user_struct(frame, frame_addr, 0); return cpu_get_gpr(env, 11); diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c index bad38f8ed9b1..b44d5ce73c31 100644 --- a/linux-user/ppc/signal.c +++ b/linux-user/ppc/signal.c @@ -655,9 +655,7 @@ long do_rt_sigreturn(CPUPPCState *env) if (do_setcontext(&rt_sf->uc, env, 1)) goto sigsegv; - do_sigaltstack(rt_sf_addr - + offsetof(struct target_rt_sigframe, uc.tuc_stack), - 0, env->gpr[1]); + target_restore_altstack(&rt_sf->uc.tuc_stack, env->gpr[1]); unlock_user_struct(rt_sf, rt_sf_addr, 1); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/riscv/signal.c b/linux-user/riscv/signal.c index 67a95dbc7b91..81d1129da3d2 100644 --- a/linux-user/riscv/signal.c +++ b/linux-user/riscv/signal.c @@ -192,11 +192,7 @@ long do_rt_sigreturn(CPURISCVState *env) } restore_ucontext(env, &frame->uc); - - if (do_sigaltstack(frame_addr + offsetof(struct target_rt_sigframe, - uc.uc_stack), 0, get_sp_from_cpustate(env)) == -EFAULT) { - goto badframe; - } + target_restore_altstack(&frame->uc.uc_stack, get_sp_from_cpustate(env)); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 7107c5fb5335..73806f547270 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -307,10 +307,8 @@ long do_rt_sigreturn(CPUS390XState *env) goto badframe; } - if (do_sigaltstack(frame_addr + offsetof(rt_sigframe, uc.tuc_stack), 0, - get_sp_from_cpustate(env)) == -EFAULT) { - goto badframe; - } + target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); + unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/sh4/signal.c b/linux-user/sh4/signal.c index 29c1ee30e6d6..684f18da5862 100644 --- a/linux-user/sh4/signal.c +++ b/linux-user/sh4/signal.c @@ -323,12 +323,7 @@ long do_rt_sigreturn(CPUSH4State *regs) set_sigmask(&blocked); restore_sigcontext(regs, &frame->uc.tuc_mcontext); - - if (do_sigaltstack(frame_addr + - offsetof(struct target_rt_sigframe, uc.tuc_stack), - 0, get_sp_from_cpustate(regs)) == -EFAULT) { - goto badframe; - } + target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(regs)); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/xtensa/signal.c b/linux-user/xtensa/signal.c index 590f0313ffe9..22ec6cdeb98e 100644 --- a/linux-user/xtensa/signal.c +++ b/linux-user/xtensa/signal.c @@ -253,12 +253,8 @@ long do_rt_sigreturn(CPUXtensaState *env) set_sigmask(&set); restore_sigcontext(env, frame); + target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); - if (do_sigaltstack(frame_addr + - offsetof(struct target_rt_sigframe, uc.tuc_stack), - 0, get_sp_from_cpustate(env)) == -TARGET_EFAULT) { - goto badframe; - } unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; From patchwork Mon May 17 18:13:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440181 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1336255jac; Mon, 17 May 2021 11:28:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw0BBYVDef3HoD3SXEGayh1SjRHw9FZ0jL4Sw6HzVoCvCOP8dS+MYXUp3FTO2pvAJyVBBN8 X-Received: by 2002:a4a:c1:: with SMTP id 184mr979137ooh.25.1621276123779; Mon, 17 May 2021 11:28:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276123; cv=none; d=google.com; s=arc-20160816; b=RAsdG5qECAFrrgKy7Eea8zkevy3ur4Rm3wHhB9FRtxdogN/rbKoHJXjfI94KCrO6in T0387zk9JN9aN96QX22neRG5sMbCkYJzOqgYTHPA8r1ldMRiPrG0mSGgH09xXk4JOBYn Czt7n375laPh4JjedHAURBXRbw/BpefSgn0ayyRV+mmHZyr4do6i4Y74ilDMvxNvsUa2 q/qac259gjrSmyWG3uQAbPwXevK/S36M9Tok0a8FZRHwt8REKgX/W0oHVYBgz+GeXYo6 duQZ5UShwT1vsTeiCsOGobpV4fimS7UxIdY/yIC4Mm8u8htCcha1p31L3J6koNWjR/WN ibDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=FsBmKb5yhr2M5OsIL5COxS7Do7okkyTuDNGVTS8LN8E=; b=Ud0lBhjs5ySRrHb7Y0/wBSbEl887D9WahmNbfqOq6LGjhycMssc0+E9mkmP53almpx iJvF8mvFGmgY7cRPzQ1FyXnkSa/jwUnOwxSm3WgadSLplNfnx3xOEdu/dqR38XhzQEhJ zEEQbfl+uhTuG+63dpH/n/HpSgjr11tUW4r7nBIC2nmy4HQxcbBghpZycyIRh/JH6eg7 jqHDsYTzyuTfjV2vOck+Vd0lRwG3QM6wqXDrV7Z03x0UYdme227MXM/AyRJ+EwQxUDyP t1IyJPcZ4CwEio6zWyxF1yoIg17+obKDa7gjSRNQbcCFTuq9mG+4yR9EGjya7RoYThoq S47w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id m17si16215503otk.210.2021.05.17.11.28.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:28:43 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:58070 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihyt-0003vf-4C for patch@linaro.org; Mon, 17 May 2021 14:28:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33752) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlO-0005wX-As for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:46 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:56609) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlC-0004MN-2X for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:46 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MGQWr-1lhqIN42cX-00GsAE; Mon, 17 May 2021 20:14:31 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 10/59] linux-user: Pass CPUArchState to do_sigaltstack Date: Mon, 17 May 2021 20:13:35 +0200 Message-Id: <20210517181424.8093-11-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:rUPu/Ygw+LvHp9Wjf8l2RpYT6LpUCOl6JEMc0tmqKV5B78E6zj6 K3GtAATnkBgR1MC1UNCU89t42CR5pHZ/X5m5782YT9o8igQAi378WpzdeQ16AvlOIaNbH7r D1anWo6btLVOYOCrpKPf3R+frQJo4DkfapG/RaWWMLzH4GF26tCxez2xLau23Y4wccKdc8p pt83h5AKn4+SFQRVibvHw== X-UI-Out-Filterresults: notjunk:1; V03:K0:OUgD/KsezNg=:0ELVijqLDOxQn7t7W0VpOi InhouWLt25pUedyT8bnL3LwWRBuF18Q9hu3awogNBXBSiE/OH0DwkTDC3S9+0WGOxBqUcaoNc GWkN80xpZJtAKXNUKkA0+9ljk9fg/XplD1/8CZ4Hxs22dG97cE4hVlUyN6q0k4s0ETh7PDK/j nb6o8Rv4t7bGCMN0Md4+jICBj93KhChBykC2P5hB2J8mvzwiMwaMPSFpHkY5Mtc7EDRka6WNb PD2iAnzZ2c2JSctN7XEWSmy69/OjAWVn/87WnwalvbhNUfR/7NY4OAhx33kwue0N2kEZJZTG2 z+2dQmR2h9qxJtxon3G140ape9xWuNwp3CYB8VNObl3lpp6cmqhHB1jMIOvJJubAzJkoRarOf G1HETELeQjNnyBoSGYMr+JPB9dNa/0GMyAmLYFvJKC9xkqQid8T5mTQBBYy+R3TduWslQaPgv PeG9/aGGWMLeXqGJEpE0o+9ND6HtN2/h/moKWthsKj0zdaPb85Vc/2nnhfDAxhpIa1ehXFBYb mvI3hfG11i/ZjCsr6ZQDCs= Received-SPF: none client-ip=212.227.126.133; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Now that we have exactly one call, it's easy to pass in env instead of passing in the sp value. Use target_save_altstack, which required env. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-4-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/qemu.h | 3 ++- linux-user/signal.c | 11 ++++------- linux-user/syscall.c | 3 +-- 3 files changed, 7 insertions(+), 10 deletions(-) -- 2.31.1 diff --git a/linux-user/qemu.h b/linux-user/qemu.h index 74e06e7121c5..3b0b6b75fe8f 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -432,7 +432,8 @@ int target_to_host_signal(int sig); int host_to_target_signal(int sig); long do_sigreturn(CPUArchState *env); long do_rt_sigreturn(CPUArchState *env); -abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, abi_ulong sp); +abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, + CPUArchState *env); int do_sigprocmask(int how, const sigset_t *set, sigset_t *oldset); abi_long do_swapcontext(CPUArchState *env, abi_ulong uold_ctx, abi_ulong unew_ctx, abi_long ctx_size); diff --git a/linux-user/signal.c b/linux-user/signal.c index 9daa89eac5db..2e1095055b7c 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -800,21 +800,18 @@ static void host_signal_handler(int host_signum, siginfo_t *info, /* do_sigaltstack() returns target values and errnos. */ /* compare linux/kernel/signal.c:do_sigaltstack() */ -abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, abi_ulong sp) +abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, + CPUArchState *env) { target_stack_t oss, *uoss = NULL; abi_long ret = -TARGET_EFAULT; if (uoss_addr) { - TaskState *ts = (TaskState *)thread_cpu->opaque; - /* Verify writability now, but do not alter user memory yet. */ if (!lock_user_struct(VERIFY_WRITE, uoss, uoss_addr, 0)) { goto out; } - __put_user(ts->sigaltstack_used.ss_sp, &oss.ss_sp); - __put_user(ts->sigaltstack_used.ss_size, &oss.ss_size); - __put_user(sas_ss_flags(sp), &oss.ss_flags); + target_save_altstack(&oss, env); } if (uss_addr) { @@ -823,7 +820,7 @@ abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, abi_ulong sp) if (!lock_user_struct(VERIFY_READ, uss, uss_addr, 1)) { goto out; } - ret = target_restore_altstack(uss, sp); + ret = target_restore_altstack(uss, get_sp_from_cpustate(env)); if (ret) { goto out; } diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 95d79ddc437a..4d52b2cfe36d 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -11195,8 +11195,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, return ret; } case TARGET_NR_sigaltstack: - return do_sigaltstack(arg1, arg2, - get_sp_from_cpustate((CPUArchState *)cpu_env)); + return do_sigaltstack(arg1, arg2, cpu_env); #ifdef CONFIG_SENDFILE #ifdef TARGET_NR_sendfile From patchwork Mon May 17 18:13:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440189 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1341498jac; Mon, 17 May 2021 11:36:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyxw5joJ0ZNIjsx6OuNcH5fa0QbM/WtwRPTapVr/4rthTTRNPdQsPG/Tc6TNvNlEJAFYCtM X-Received: by 2002:a92:c246:: with SMTP id k6mr911433ilo.155.1621276601063; Mon, 17 May 2021 11:36:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276601; cv=none; d=google.com; s=arc-20160816; b=uN5bRbU7YEgEuw9y8LcN7feMls9hqaKNyWNJ7yPegxf9qp3VUlbm4A0hjUzwdBAuKN aeqJMQ39l9IP+S4oTtL/Y1sEvpJOe/wa3AyyueX1iRwFZ3jRh+OwPY97stafFSdc2gHf +00HuWupqao2pTveLLNO/6OgpPbbZOeI9a4HUi0ab1DJp+YwwMtWIznWreL9gzNg5fs8 Mk/n381vEzIgc4WKzCtXnpav1U2HZ9IDP12Xz5pzn1QERIFoMzhX2p89m6ZJpDtXcbGM OTDbTsMk7CF4ml3XRmqBlsuTo7d/UcT2CIYT3qoI8u8Q6PnAmDwF97R11oopYG01BmJS 91Vw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=pjD9GeDa8UaqAnMFx0NE4NNxldE8HgDuAyrgOLsUNyU=; b=G3gt8uflSQ1uMkx0hADs0ymHdxhgO6LO8EZYHTFggX4evvGh+ASzQLP9uyYgjlJMM3 uXiQkLfRRY3446ctyOCT9+/9AgoYY+LICSCtN0z/b3CRm7UsP8N5ZzAU/NffeDyEntA3 2+/nO33+vNAC1t3ax63Kdwkx6ZPFILinQ9XG5bJx+zGWpm8lbg2Ad8BxOibsMHBwU1QX cBrR2uH4jNzqZiIMxER6gLyLc81EUDOTX8/dBi+c2fviihxvuyttL6D/WjPmd6Go4B38 hOMY9+pDSJUngGSelOw67N4Uy+VgGxdiBgjlSRSc4Q2dzde+ap1XPmCPDP/Gfkr1JCUi oY8Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q13si17048528ilj.21.2021.05.17.11.36.40 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:36:41 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:46836 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii6a-000712-Di for patch@linaro.org; Mon, 17 May 2021 14:36:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33788) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlQ-0005z8-Ak for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:48 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:53361) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlC-0004NM-4q for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:48 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1M6lUk-1lpqdV1cMw-008NzF; Mon, 17 May 2021 20:14:31 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 11/59] linux-user: Pass CPUArchState to target_restore_altstack Date: Mon, 17 May 2021 20:13:36 +0200 Message-Id: <20210517181424.8093-12-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:pxX+Ud+nyTpfMOSh0JmlPwl7Z1ewicgJFW60XBmMEKk4duLBMCz 0iFO/mNciOYB1quJmuk+cCAkeMk41HkQvMkE59bjJMB8mP8Y9T9h5qwI5P36scZ0dT/7yIr kqUYFDmI1DzpnFSSj78t1uFSOZRRH3WQIAq3OY5xeikt/eUlnLPKbN9RiMPu7yjfsKKdN7v DWMmeDOHhJgBMOG8pg2Sw== X-UI-Out-Filterresults: notjunk:1; V03:K0:1cHA4Ei/fjk=:tNxbERXGKgB83lCKabrvb3 UFidUbhzHRDhvrirbKeXRh5+BtkCKySZyY4GADuhu0Z+X+MlXDHzcu/JX3KU6Rb70a3odYljp AWGcKU79EG1Ha/VlreypPHuPYJ8Zmv5Ot9WqFDeVQr5a78rwathbLvYltiAhmEXcNY8U3vYNr MR4Lswr5Aq6OiKST7dK7ld2vZ5dk8Di5FrhWC9ycOa9qs/hDr2Hr9FYa0EyTg24e0ZirkDZgY P532lE20bwAATa34A5MpY7XECilCV0QOT4CtvX1BQOcs0iuL/Q52TMKUUPapqPlp37YyNuvM9 PMOPM/fJW5EknRu0F2A8VNHwgn6//bS2qemNkaulKWwWlNkxbaA4frYcA1SsIRyx6SzUI/BGd 9IJWKGELoU+ftg50IhwckdyXq4ykhRV0TOrO7MlCrzqdiuTTmNroTeAjJM+fGy3mT/n6xHeJF tZgBe9C6zLnbGyoBSuakqc1kyNRGL9XHu+B4wFIJqfo1LE4VXwwy4xnRg4ig00O3ULeI9zli1 5wuRlkrGIiOUNlPwo0z2cs= Received-SPF: none client-ip=212.227.126.134; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson In most cases we were already passing get_sp_from_cpustate directly to the function. In other cases, we were passing a local variable which already contained the same value. In the rest of the cases, we were passing the stack pointer out of env directly. Reviewed by: Warner Losh Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-5-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/aarch64/signal.c | 2 +- linux-user/alpha/signal.c | 2 +- linux-user/arm/signal.c | 4 ++-- linux-user/hexagon/signal.c | 2 +- linux-user/hppa/signal.c | 2 +- linux-user/i386/signal.c | 2 +- linux-user/m68k/signal.c | 2 +- linux-user/microblaze/signal.c | 2 +- linux-user/mips/signal.c | 2 +- linux-user/nios2/signal.c | 2 +- linux-user/openrisc/signal.c | 2 +- linux-user/ppc/signal.c | 2 +- linux-user/riscv/signal.c | 2 +- linux-user/s390x/signal.c | 2 +- linux-user/sh4/signal.c | 2 +- linux-user/signal-common.h | 2 +- linux-user/signal.c | 6 +++--- linux-user/xtensa/signal.c | 2 +- 18 files changed, 21 insertions(+), 21 deletions(-) -- 2.31.1 diff --git a/linux-user/aarch64/signal.c b/linux-user/aarch64/signal.c index 2a1b7dbcdc2b..662bcd1c4e57 100644 --- a/linux-user/aarch64/signal.c +++ b/linux-user/aarch64/signal.c @@ -561,7 +561,7 @@ long do_rt_sigreturn(CPUARMState *env) goto badframe; } - target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&frame->uc.tuc_stack, env); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/alpha/signal.c b/linux-user/alpha/signal.c index 0af022711815..d4e4666874e3 100644 --- a/linux-user/alpha/signal.c +++ b/linux-user/alpha/signal.c @@ -257,7 +257,7 @@ long do_rt_sigreturn(CPUAlphaState *env) set_sigmask(&set); restore_sigcontext(env, &frame->uc.tuc_mcontext); - target_restore_altstack(&frame->uc.tuc_stack, env->ir[IR_SP]); + target_restore_altstack(&frame->uc.tuc_stack, env); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/arm/signal.c b/linux-user/arm/signal.c index b7a772302f45..32b68ee302ba 100644 --- a/linux-user/arm/signal.c +++ b/linux-user/arm/signal.c @@ -685,7 +685,7 @@ static int do_sigframe_return_v2(CPUARMState *env, } } - target_restore_altstack(&uc->tuc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&uc->tuc_stack, env); #if 0 /* Send SIGTRAP if we're single-stepping */ @@ -769,7 +769,7 @@ static long do_rt_sigreturn_v1(CPUARMState *env) goto badframe; } - target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&frame->uc.tuc_stack, env); #if 0 /* Send SIGTRAP if we're single-stepping */ diff --git a/linux-user/hexagon/signal.c b/linux-user/hexagon/signal.c index 3854eb4709be..85eab5e94382 100644 --- a/linux-user/hexagon/signal.c +++ b/linux-user/hexagon/signal.c @@ -260,7 +260,7 @@ long do_rt_sigreturn(CPUHexagonState *env) } restore_ucontext(env, &frame->uc); - target_restore_altstack(&frame->uc.uc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&frame->uc.uc_stack, env); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/hppa/signal.c b/linux-user/hppa/signal.c index 578874cf27e6..0e266f472d5a 100644 --- a/linux-user/hppa/signal.c +++ b/linux-user/hppa/signal.c @@ -187,7 +187,7 @@ long do_rt_sigreturn(CPUArchState *env) set_sigmask(&set); restore_sigcontext(env, &frame->uc.tuc_mcontext); - target_restore_altstack(&frame->uc.tuc_stack, env->gr[30]); + target_restore_altstack(&frame->uc.tuc_stack, env); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/i386/signal.c b/linux-user/i386/signal.c index 3a0a1546a63e..8701774e3791 100644 --- a/linux-user/i386/signal.c +++ b/linux-user/i386/signal.c @@ -581,7 +581,7 @@ long do_rt_sigreturn(CPUX86State *env) goto badframe; } - target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&frame->uc.tuc_stack, env); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/m68k/signal.c b/linux-user/m68k/signal.c index 004b59fb6118..d06230655e98 100644 --- a/linux-user/m68k/signal.c +++ b/linux-user/m68k/signal.c @@ -400,7 +400,7 @@ long do_rt_sigreturn(CPUM68KState *env) if (target_rt_restore_ucontext(env, &frame->uc)) goto badframe; - target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&frame->uc.tuc_stack, env); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/microblaze/signal.c b/linux-user/microblaze/signal.c index f59a1faf47bb..4c483bd8c606 100644 --- a/linux-user/microblaze/signal.c +++ b/linux-user/microblaze/signal.c @@ -209,7 +209,7 @@ long do_rt_sigreturn(CPUMBState *env) restore_sigcontext(&frame->uc.tuc_mcontext, env); - target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&frame->uc.tuc_stack, env); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/mips/signal.c b/linux-user/mips/signal.c index 456fa64f41cd..e6be807a81ae 100644 --- a/linux-user/mips/signal.c +++ b/linux-user/mips/signal.c @@ -368,7 +368,7 @@ long do_rt_sigreturn(CPUMIPSState *env) set_sigmask(&blocked); restore_sigcontext(env, &frame->rs_uc.tuc_mcontext); - target_restore_altstack(&frame->rs_uc.tuc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&frame->rs_uc.tuc_stack, env); env->active_tc.PC = env->CP0_EPC; mips_set_hflags_isa_mode_from_pc(env); diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index 751ea88811f8..cc3872f11da2 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -128,7 +128,7 @@ static int rt_restore_ucontext(CPUNios2State *env, struct target_ucontext *uc, __get_user(env->regs[R_RA], &gregs[23]); __get_user(env->regs[R_SP], &gregs[28]); - target_restore_altstack(&uc->tuc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&uc->tuc_stack, env); *pr2 = env->regs[2]; return 0; diff --git a/linux-user/openrisc/signal.c b/linux-user/openrisc/signal.c index 86f94d7f766d..5c5640a28487 100644 --- a/linux-user/openrisc/signal.c +++ b/linux-user/openrisc/signal.c @@ -158,7 +158,7 @@ long do_rt_sigreturn(CPUOpenRISCState *env) set_sigmask(&set); restore_sigcontext(env, &frame->uc.tuc_mcontext); - target_restore_altstack(&frame->uc.tuc_stack, frame_addr); + target_restore_altstack(&frame->uc.tuc_stack, env); unlock_user_struct(frame, frame_addr, 0); return cpu_get_gpr(env, 11); diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c index b44d5ce73c31..edfad28a375a 100644 --- a/linux-user/ppc/signal.c +++ b/linux-user/ppc/signal.c @@ -655,7 +655,7 @@ long do_rt_sigreturn(CPUPPCState *env) if (do_setcontext(&rt_sf->uc, env, 1)) goto sigsegv; - target_restore_altstack(&rt_sf->uc.tuc_stack, env->gpr[1]); + target_restore_altstack(&rt_sf->uc.tuc_stack, env); unlock_user_struct(rt_sf, rt_sf_addr, 1); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/riscv/signal.c b/linux-user/riscv/signal.c index 81d1129da3d2..9405c7fd9af6 100644 --- a/linux-user/riscv/signal.c +++ b/linux-user/riscv/signal.c @@ -192,7 +192,7 @@ long do_rt_sigreturn(CPURISCVState *env) } restore_ucontext(env, &frame->uc); - target_restore_altstack(&frame->uc.uc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&frame->uc.uc_stack, env); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 73806f547270..b68b44ae7e99 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -307,7 +307,7 @@ long do_rt_sigreturn(CPUS390XState *env) goto badframe; } - target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&frame->uc.tuc_stack, env); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/sh4/signal.c b/linux-user/sh4/signal.c index 684f18da5862..0451e65806a1 100644 --- a/linux-user/sh4/signal.c +++ b/linux-user/sh4/signal.c @@ -323,7 +323,7 @@ long do_rt_sigreturn(CPUSH4State *regs) set_sigmask(&blocked); restore_sigcontext(regs, &frame->uc.tuc_mcontext); - target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(regs)); + target_restore_altstack(&frame->uc.tuc_stack, regs); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; diff --git a/linux-user/signal-common.h b/linux-user/signal-common.h index 34b963af9abc..ea86328b289a 100644 --- a/linux-user/signal-common.h +++ b/linux-user/signal-common.h @@ -24,7 +24,7 @@ int on_sig_stack(unsigned long sp); int sas_ss_flags(unsigned long sp); abi_ulong target_sigsp(abi_ulong sp, struct target_sigaction *ka); void target_save_altstack(target_stack_t *uss, CPUArchState *env); -abi_long target_restore_altstack(target_stack_t *uss, abi_ulong sp); +abi_long target_restore_altstack(target_stack_t *uss, CPUArchState *env); static inline void target_sigemptyset(target_sigset_t *set) { diff --git a/linux-user/signal.c b/linux-user/signal.c index 2e1095055b7c..cbd80b28cf5a 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -297,7 +297,7 @@ void target_save_altstack(target_stack_t *uss, CPUArchState *env) __put_user(ts->sigaltstack_used.ss_size, &uss->ss_size); } -abi_long target_restore_altstack(target_stack_t *uss, abi_ulong sp) +abi_long target_restore_altstack(target_stack_t *uss, CPUArchState *env) { TaskState *ts = (TaskState *)thread_cpu->opaque; size_t minstacksize = TARGET_MINSIGSTKSZ; @@ -315,7 +315,7 @@ abi_long target_restore_altstack(target_stack_t *uss, abi_ulong sp) __get_user(ss.ss_size, &uss->ss_size); __get_user(ss.ss_flags, &uss->ss_flags); - if (on_sig_stack(sp)) { + if (on_sig_stack(get_sp_from_cpustate(env))) { return -TARGET_EPERM; } @@ -820,7 +820,7 @@ abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, if (!lock_user_struct(VERIFY_READ, uss, uss_addr, 1)) { goto out; } - ret = target_restore_altstack(uss, get_sp_from_cpustate(env)); + ret = target_restore_altstack(uss, env); if (ret) { goto out; } diff --git a/linux-user/xtensa/signal.c b/linux-user/xtensa/signal.c index 22ec6cdeb98e..72771e1294b6 100644 --- a/linux-user/xtensa/signal.c +++ b/linux-user/xtensa/signal.c @@ -253,7 +253,7 @@ long do_rt_sigreturn(CPUXtensaState *env) set_sigmask(&set); restore_sigcontext(env, frame); - target_restore_altstack(&frame->uc.tuc_stack, get_sp_from_cpustate(env)); + target_restore_altstack(&frame->uc.tuc_stack, env); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; From patchwork Mon May 17 18:13:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440177 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1332656jac; Mon, 17 May 2021 11:23:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzVYzjueIWy7x0C+xNsOgTm9fvmTS7BlmaGlh+mhpdGrXREtkQbg2VXt454bCq6RixteGIW X-Received: by 2002:a5e:8a42:: with SMTP id o2mr1050026iom.144.1621275804576; Mon, 17 May 2021 11:23:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621275804; cv=none; d=google.com; s=arc-20160816; b=zpztwPS3a8MMpzwUDiT6bhyl7dkA2++kimpEwIGYjdZQN1UIR3NYkNS2aaISKwRES+ g/PiFY+Kf8HJyyCjrHSxNWSy7fh1gUw/ByEtbfbdO3/qMM/BF6PnRctp2SdpBzkVg+ZZ oXie6La8YN2bc6n7qJsHu5wmn9kyRhNcCbx/RQFiXOhFuaE9dm/c72tmvmyimHg6OmyM bEqvvihSTJi5TCrr+F9mFSayrQqi2AZzJOdVI/E1pUlVXkQ9aj7rSx9NLp0qMqBtlr6u tAIi14xNg4YCubVsYi11dzRlCAulpfqcRl9sEA59kVGXjNo5A6cs6PTl5o7wsfPps+G4 V6tw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=lmBK7zyqk3ylGczsALndLJqVjWyb/57GyLpftSij1OU=; b=yCwhMjyw9nPQAGC1QaEgAwPLDFA+LCorFMncWj+D9F7Evl4yzvbz5Q2MKN8D3zedLN pB0C6sMNmWTrAKcejB18A8HPCLHcyoOTLDDKTsl6AT/vXH8Mceyd0u/jEig3wWb3PFCF qIvEDG+z3oWPAhN7W8L2mGxFXfYH767wtlhBiV6NUkOzRshe3U390bAF0HnPCGz0XTw7 ZG8R2MIrrOeb5omSy98k7Jy7BYdxOyCSftWsCDF/xTypSTPwpNIlBrACMmLZNAN0jb1u Nl4fUuxKO40I71oy8xoXYHvExZK6V6iRdp/5mJTmGZqh+jRhvMocVPIm+SfeJdOOOGZQ xXLw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id u12si18128934jak.73.2021.05.17.11.23.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:23:24 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:41132 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihtj-0000wn-I1 for patch@linaro.org; Mon, 17 May 2021 14:23:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33758) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlO-0005wY-En for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:46 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:34505) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlC-0004NR-4f for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:46 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MBUZr-1lcuLI3slD-00D0Xg; Mon, 17 May 2021 20:14:32 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 12/59] linux-user/sparc: Include TARGET_STACK_BIAS in get_sp_from_cpustate Date: Mon, 17 May 2021 20:13:37 +0200 Message-Id: <20210517181424.8093-13-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:exQXnhcczEgG0LKZpn9R2hvIN9yt/NiRD1k6sCajxK0NuMgRK6T LgslzWFxadNoiEtIQ93sQba9ZY2ds8lEDYWGg8ssu2KXNVlbaNlJ2eRdQz81gAvIhcuHA3m n6rPODD7PCXOYOcvI0n+r4ak1R/qfxATEAGKKxEuILXUzHoFnY46Z/kx2luaQ+wObQY3ljl nGRVArOIgf/NX3tRYAPcQ== X-UI-Out-Filterresults: notjunk:1; V03:K0:TQPmuRlPzHw=:udbgYnfD+KntZ2t/vI8A6a 7xa4SrdDr2Y5AEsSMIS7vsnsAy/gzXc6wU33jPT+hsMw6uLWTK+2JFyZlNtcUR/UJQ97Ovb+s WnTJorzlGCBF80pKlt0ewa6/lrL5V7iQJSxiPgZ1aSkVEiO2GWPMAMJI7b9ib+glvgZIK0tnG I5RO1kIqF/HOguoI/xL9txVfnaeX+6nxGV3IbLqQVgkD3LQzCeytX7xJhGNtkxr8Lr7QRsJ36 D0wSpRQz70kR36jC03+P+1SKGpKItsFAYqmoBbRc0WnNXYhIV95rRz0EXbvEN7spsEORdkbEi IkHU9Kv0AOMSS63KyaIw+g1Qyv2ZK9oD6iaaghGD3F16osxpX+478V+hmfOiN+G0TzGKI/Ysg Gnoah3vYgfLlW3VMiF7y9UmP29uXr+baD230FRRf7ifH8UX3/LI3NGTodjBVptqxVuX+fmKAq yFlYB4L+iuOJ7/4A7CbjfXuN3swULnYPcS8PPMLKTaHyMhkKA+nUDqWXgsLmzDN2K6K9AwEHL dpjcDFZ3+GWZTvTWt+MkPQ= Received-SPF: none client-ip=212.227.126.134; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Move TARGET_STACK_BIAS from signal.c. Generic code cares about the logical stack pointer, not the physical one that has a bias applied for sparc64. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-6-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 2 -- linux-user/sparc/target_cpu.h | 9 ++++++++- 2 files changed, 8 insertions(+), 3 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index d27b7a3af79d..76579093a88c 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -394,8 +394,6 @@ struct target_reg_window { abi_ulong ins[8]; }; -#define TARGET_STACK_BIAS 2047 - /* {set, get}context() needed for 64-bit SparcLinux userland. */ void sparc64_set_context(CPUSPARCState *env) { diff --git a/linux-user/sparc/target_cpu.h b/linux-user/sparc/target_cpu.h index 1fa1011775a1..1f4bed50f476 100644 --- a/linux-user/sparc/target_cpu.h +++ b/linux-user/sparc/target_cpu.h @@ -20,6 +20,12 @@ #ifndef SPARC_TARGET_CPU_H #define SPARC_TARGET_CPU_H +#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) +# define TARGET_STACK_BIAS 2047 +#else +# define TARGET_STACK_BIAS 0 +#endif + static inline void cpu_clone_regs_child(CPUSPARCState *env, target_ulong newsp, unsigned flags) { @@ -40,6 +46,7 @@ static inline void cpu_clone_regs_child(CPUSPARCState *env, target_ulong newsp, #endif /* ??? The kernel appears to copy one stack frame to the new stack. */ /* ??? The kernel force aligns the new stack. */ + /* Userspace provides a biased stack pointer value. */ env->regwptr[WREG_SP] = newsp; } @@ -77,7 +84,7 @@ static inline void cpu_set_tls(CPUSPARCState *env, target_ulong newtls) static inline abi_ulong get_sp_from_cpustate(CPUSPARCState *state) { - return state->regwptr[WREG_SP]; + return state->regwptr[WREG_SP] + TARGET_STACK_BIAS; } #endif From patchwork Mon May 17 18:13:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440180 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1335927jac; Mon, 17 May 2021 11:28:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyyMYK5zElRuaxBm2wzciKpSNHisjQ0Sy8307e835e3P9tQDslIq7nspmMQbpB72lVsjNrZ X-Received: by 2002:aca:ebc1:: with SMTP id j184mr791051oih.125.1621276086739; Mon, 17 May 2021 11:28:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276086; cv=none; d=google.com; s=arc-20160816; b=Ana9LdEMsyIVMFpLFOK5LAYsa6gbJSWkpwxhvhI0eOrTk3syUpmByEM374d91+rSDG KV7DsGBjzkeNGl7mJTJvTfuoyekYwrCcKQXBYUi9yBjKI38a41iwo97z7Z4rIY/TxYJU qLTqcZnZDhQyScUBowpG78e2YX2Hc7MFSQjWgY8L9b0BQx60cmHcVM0M2Q4JPLpZqMYv OsVfkyD7Os9guILy+1GzuyRWWMqxbCdfRO9sFOZe/qP7U9cz9CeQ/hncq/SbaWFVMepw 1Z5ewU/RmxmTPCI71N42bLGHvU5SMA5SQXrFL8G44MEtjDDs2rmPWUYtEZvw/8Pmjr3/ adEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=bCwwniDfTG1rZnrmEjNm3NAale83yCCFDAqoQ9sm3I0=; b=kCOPgNXwBgaqHVTpBT2GcWzqHRCaIqVKB++fFyTWRVuUelsTZ1G6zVE0RxQxjBd84N /fxRnLYKGp1RRYia2z5Eo5XXBp4kfIlyQGMU0XDA/qP0+oo4cBPXuZ62hn8FVGNx/gw2 QU+jBOaWVUseRF5YqYbHUaUWVGsizGd7vpjiigjlcSmzvGzf5Ty7PmhsRKx9VJDCSsqn E86RWEzZBs2R1sJ2rXkgF1y9nqMqaJIeDp3RVks+k2vfDK9q2b3Ak60mTT6Yv3Q4Ktxp kkIbja+K7DBG8Bp0qW6OZaZTeBQ4dj1FVqWe4ETtngecO1ldd0KmObXgpfMeKDKbSL5Q p5lw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id f19si14948772oig.272.2021.05.17.11.28.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:28:06 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:52820 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihyI-0000JZ-26 for patch@linaro.org; Mon, 17 May 2021 14:28:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33774) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlP-0005xt-IF for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:47 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:42955) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlC-0004NT-A0 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:47 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MKKIZ-1m3PRH1SWd-00Lly4; Mon, 17 May 2021 20:14:32 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 13/59] linux-user/sparc: Clean up init_thread Date: Mon, 17 May 2021 20:13:38 +0200 Message-Id: <20210517181424.8093-14-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:MdJeTTAapOhwkAst6sAs6yOLfu+KbboABLZoAAFiPmHdCGdqNuU 9OGa2IgPFsQOHV3OIgFtHXDypfWQlmPSrE14Ors/5Y2CnwV+SyiaPtJGVInL99Wdt6pr6d9 3NoS5GzgaPKNg85yS38Fxd2e5iabT461+95pgKXBgcqomXO60qqkUHq2xfuGq7ueF5ZdLJN 59iUtkqhVtccNR6mYuPDA== X-UI-Out-Filterresults: notjunk:1; V03:K0:dA9xL49SBV0=:bjNKeyydv/skOY7pt3gRcl h/m/4cYqWGicIN7JktKIgRmN05j6RR/8lHAqmmzDho4e0RsZUK7UROy5pryl74fGIc2CmpmSj u29EdHW1N+AjGCQeI4SS0ETwFnCjE4wUIH2cHmdoyf6UWmvucfFddnCWSe9ehB37DmzOU1Txc ckQPkgCeEAndvHS7BWIT0llQG5LXK4cz6lJPwETAvm9v2mp8CmZj7NC5kbd6ghWHmuzGA2MZI UFvaHdHw7ZaHRwtHFFiCR2ty3OOkrjN8WN/8Z/WN0sWlOl9udPRrvJN57G0stJsgC55ptlB90 2o1y6/8Q5RpvuNs58t72IzouoUyIZb0vJ71jyyAgcpOHuIHAQfJ291j5a0g7q1W8gLzb3PrAO BXAdR3wVHSFThgpNs/3Lsm63fuDnPK6Vn2ucz2pxJCXVah/qkNB1SCQ13/miBEk+Pg94u9Ehn aJNOqr0jv7MfiwdF7mI1jiQb+mfN/kYNi+wbILzYAe+cMVTmO6mNFvzcDKwVGGFiZKk9bTdCl pl9tsbenp1AopZBpqTn3pA= Received-SPF: none client-ip=212.227.126.134; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Share code between sparc32 and sparc64, removing a bit of pointless difference wrt psr/tstate. Use sizeof(abi_ulong) for allocating initial register window. Use TARGET_STACK_BIAS. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-7-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/elfload.c | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) -- 2.31.1 diff --git a/linux-user/elfload.c b/linux-user/elfload.c index fc9c4f12be92..ffc03d72f935 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -676,48 +676,25 @@ static uint32_t get_elf_hwcap2(void) #define ELF_CLASS ELFCLASS64 #define ELF_ARCH EM_SPARCV9 - -#define STACK_BIAS 2047 - -static inline void init_thread(struct target_pt_regs *regs, - struct image_info *infop) -{ -#ifndef TARGET_ABI32 - regs->tstate = 0; -#endif - regs->pc = infop->entry; - regs->npc = regs->pc + 4; - regs->y = 0; -#ifdef TARGET_ABI32 - regs->u_regs[14] = infop->start_stack - 16 * 4; -#else - if (personality(infop->personality) == PER_LINUX32) - regs->u_regs[14] = infop->start_stack - 16 * 4; - else - regs->u_regs[14] = infop->start_stack - 16 * 8 - STACK_BIAS; -#endif -} - #else #define ELF_START_MMAP 0x80000000 #define ELF_HWCAP (HWCAP_SPARC_FLUSH | HWCAP_SPARC_STBAR | HWCAP_SPARC_SWAP \ | HWCAP_SPARC_MULDIV) - #define ELF_CLASS ELFCLASS32 #define ELF_ARCH EM_SPARC +#endif /* TARGET_SPARC64 */ static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) { - regs->psr = 0; + /* Note that target_cpu_copy_regs does not read psr/tstate. */ regs->pc = infop->entry; regs->npc = regs->pc + 4; regs->y = 0; - regs->u_regs[14] = infop->start_stack - 16 * 4; + regs->u_regs[14] = (infop->start_stack - 16 * sizeof(abi_ulong) + - TARGET_STACK_BIAS); } - -#endif -#endif +#endif /* TARGET_SPARC */ #ifdef TARGET_PPC From patchwork Mon May 17 18:13:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440187 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1339413jac; Mon, 17 May 2021 11:33:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy8Uryy0YXEbdFzQnS3yu/naY8NY6HlxwhDq+q27GWOmOr3kskMzAW/8RAi065Ft64fBVDY X-Received: by 2002:a5e:880b:: with SMTP id l11mr1096591ioj.9.1621276409874; Mon, 17 May 2021 11:33:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276409; cv=none; d=google.com; s=arc-20160816; b=QO2u6v3Hcehe4hNtf7F3/lh/8zfpQKhuDKcTdjMSu+n2BKIYcTIZUA6QM4uD0GbzYE FsD4X49XCSG7DRZji+9nqqp9aj9vZMsl/ZCyvcgI/md345YhEiRvnbX7YjlHB6go78W7 8voeRwzCO9Si9UDkF1+rXknUY9ucYmgf+NRk9+32E6c2HEnPVphsC036S8pKjv6+Lyfr RIc+jCoMPjDoO2rNhVEldxFs/3hJ0JrU6y15YmqeB2hV22L5lGhsGePnv0imjcR47spT wyNKSuUX3REug7Xcq48EQx0ChzCPoB063NJC/CbYAm457q8RQ6JS49ynCT3mgNj5qgG6 pODw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=lUpMGKO8CkYSHYgN2OoUn+D46OvBXXnaP6fght3wCgk=; b=xNBLlemcd88KqbnxYlTayDqNfOT6lBShu34FcJ4U2QF56WfEwZPQiO2gvU3NvlwCou gURvgsVA3+BZwVRIOwXEFkBnfoshYAtFVAwNQY0iGMrtRVYIFFG2NS/HDzNou8KGJ+bh fjGc478z84uex0mbUZCFx+Zo7AtaoMIDrhhmB+OqGA3uMZ+3kImXAUoKyuWUckUIg3Md ctQ/a3cpdmnU0Ywdml4m+bH1JV/umG5CVN54NgJ/3xQn1hxfIg8xPvgiWS9ysaThF1rw J7OE8+QwDTeIOyeBZLgfkFjpITIeShpqJunihokqAdgEnHD7gDD3zazSDHgQ11h7L21l KP/Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id s9si19620343jat.121.2021.05.17.11.33.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:33:29 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:38392 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii3V-0001LE-AD for patch@linaro.org; Mon, 17 May 2021 14:33:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33772) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlP-0005xQ-E9 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:47 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:48091) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlC-0004NZ-Qi for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:47 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MdvVu-1l9vAs3MkY-00b5xp; Mon, 17 May 2021 20:14:33 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 14/59] linux-user/sparc: Merge sparc64 target_syscall.h Date: Mon, 17 May 2021 20:13:39 +0200 Message-Id: <20210517181424.8093-15-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:cbR/02FLLQ0yDrCPYtd5CApOX0Vs4qrX4OpouixJzj6xl/q4EP4 i5DroAiFiUoQtzxDIctf/9BEeTuZJxrHfYAgKvplE9CA6Sx2Ck6PpYNoQDSeMaLJx6LKnmK 7cghCju45PwlfKYZ8f1dWBnedytr7OgBauOjey3edoSHzaQhOggQdwN3NFg0JrbT5Hgdg4x rbx1oZzDRiOYd2+5bKvZA== X-UI-Out-Filterresults: notjunk:1; V03:K0:cgcr21gFkfI=:uDAF0vIgwkiuiykHeADYB/ 8R9T0CD3IGhKI7+23OyuhyLuGMZGaKQzDesZA2e7byP8o99SP15fMaEH8xbi+LMl5FLErXjNk FvLWpdJpG1puNcdgHiXAKsPWkALES0he/kL+mVc9F83WORqzsJUqE8ah8fdZQUDvJojHIOqyL 7eeHfwDrYkzg0//tHmj7MWlA5qBL9N5536rngoM99csFfeV+32R3jF3FzKtvmQrqmUtHoFEwy 7XfT3ydM+sPiQ0l2x3f3LNL6hgvcbDpIH6MaynXftVnjIZY8eA3eeKitF+XlJqohUelYkhodS +x4BAjzs3e+FZ1Q55dp/yvxYu99PSyekB2dY2cljN7aTf41ziO0+VyKeyso22OjAR9wJqgLAE dfiSk3sLeCt87vKkBISL8ry+ou7dmbti5Dj+Njl2r+CmTV6pPGKPmSGwRCVkA8N8/hvK/5Wch n3hdSEN9Y1y2qiX0b6wcfYA44j0kA5gaAX9rv+nvkorAzNWe6iXSn5R53ACcatYAnUJrKjJWR QPJLFUKOSuR86FAvHzTCGs= Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson There are only a few differences in sparc32 vs sparc64. This fixes target_shmlba for sparc32plus, which is v9. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-8-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/target_syscall.h | 42 +++++++++++++++++++++-------- linux-user/sparc64/target_syscall.h | 36 +------------------------ 2 files changed, 32 insertions(+), 46 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/target_syscall.h b/linux-user/sparc/target_syscall.h index d8ea04ea837a..15d531f38978 100644 --- a/linux-user/sparc/target_syscall.h +++ b/linux-user/sparc/target_syscall.h @@ -3,18 +3,34 @@ #include "target_errno.h" +#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) struct target_pt_regs { - abi_ulong psr; - abi_ulong pc; - abi_ulong npc; - abi_ulong y; - abi_ulong u_regs[16]; + abi_ulong u_regs[16]; + abi_ulong tstate; + abi_ulong pc; + abi_ulong npc; + uint32_t y; + uint32_t magic; }; +#else +struct target_pt_regs { + abi_ulong psr; + abi_ulong pc; + abi_ulong npc; + abi_ulong y; + abi_ulong u_regs[16]; +}; +#endif -#define UNAME_MACHINE "sparc" +#ifdef TARGET_SPARC64 +# define UNAME_MACHINE "sparc64" +#else +# define UNAME_MACHINE "sparc" +#endif #define UNAME_MINIMUM_RELEASE "2.6.32" -/* SPARC kernels don't define this in their Kconfig, but they have the +/* + * SPARC kernels don't define this in their Kconfig, but they have the * same ABI as if they did, implemented by sparc-specific code which fishes * directly in the u_regs() struct for half the parameters in sparc_do_fork() * and copy_thread(). @@ -25,20 +41,24 @@ struct target_pt_regs { #define TARGET_MCL_FUTURE 0x4000 #define TARGET_MCL_ONFAULT 0x8000 -/* For SPARC SHMLBA is determined at runtime in the kernel, and - * libc has to runtime-detect it using the hwcaps (see glibc - * sysdeps/unix/sysv/linux/sparc/getshmlba; we follow the same - * logic here, though we know we're not the sparc v9 64-bit case). +/* + * For SPARC SHMLBA is determined at runtime in the kernel, and + * libc has to runtime-detect it using the hwcaps. + * See glibc sysdeps/unix/sysv/linux/sparc/getshmlba. */ #define TARGET_FORCE_SHMLBA static inline abi_ulong target_shmlba(CPUSPARCState *env) { +#ifdef TARGET_SPARC64 + return MAX(TARGET_PAGE_SIZE, 16 * 1024); +#else if (!(env->def.features & CPU_FEATURE_FLUSH)) { return 64 * 1024; } else { return 256 * 1024; } +#endif } #endif /* SPARC_TARGET_SYSCALL_H */ diff --git a/linux-user/sparc64/target_syscall.h b/linux-user/sparc64/target_syscall.h index 696a68b1ed4e..164a5fc6322f 100644 --- a/linux-user/sparc64/target_syscall.h +++ b/linux-user/sparc64/target_syscall.h @@ -1,35 +1 @@ -#ifndef SPARC64_TARGET_SYSCALL_H -#define SPARC64_TARGET_SYSCALL_H - -#include "../sparc/target_errno.h" - -struct target_pt_regs { - abi_ulong u_regs[16]; - abi_ulong tstate; - abi_ulong pc; - abi_ulong npc; - abi_ulong y; - abi_ulong fprs; -}; - -#define UNAME_MACHINE "sparc64" -#define UNAME_MINIMUM_RELEASE "2.6.32" - -/* SPARC kernels don't define this in their Kconfig, but they have the - * same ABI as if they did, implemented by sparc-specific code which fishes - * directly in the u_regs() struct for half the parameters in sparc_do_fork() - * and copy_thread(). - */ -#define TARGET_CLONE_BACKWARDS -#define TARGET_MINSIGSTKSZ 4096 -#define TARGET_MCL_CURRENT 0x2000 -#define TARGET_MCL_FUTURE 0x4000 -#define TARGET_MCL_ONFAULT 0x8000 - -#define TARGET_FORCE_SHMLBA - -static inline abi_ulong target_shmlba(CPUSPARCState *env) -{ - return MAX(TARGET_PAGE_SIZE, 16 * 1024); -} -#endif /* SPARC64_TARGET_SYSCALL_H */ +#include "../sparc/target_syscall.h" From patchwork Mon May 17 18:13:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440186 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1338890jac; Mon, 17 May 2021 11:32:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxFzZChWrwcSsfr/7B9JOYK4XGn3kQP3XigfOAlr4hCzHXvjElF2kiK505G4EgOWvsSyG12 X-Received: by 2002:a5e:dc48:: with SMTP id s8mr1090118iop.128.1621276361538; Mon, 17 May 2021 11:32:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276361; cv=none; d=google.com; s=arc-20160816; b=IAunEQpZFQ7oRHuuUAic7vSBoRIjWrWLEp7sJsX3IhhIJfrcYrLPFeJSZkLiCJt4jv MCaAoX6Aff2OQCDZRqTNF0sLiYD5GHvnE6For46vI9cJ/+k8YtgoI9stecRVkWZx/wZO Eoewng1WH9264UuDXZEmlZYsKbYmZpKUgOoWEAVcntkiASqfbYUF/S8w61rF90pt5Jn2 eCTZhLBRpmaUtO25geZUzq0US3kHjbv+UW6LULJJ8SWDymQLGpFOfprv7l/SNhLjgknX UbCOawY6CaNpkCW6g9n5dpjqBM3A1BMZCOpmpS3j9PtnKcBWg5WhOkZgi4kl4CElAn9N JMpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=QrU0R4+MjaqHnZGG5ahAsDJLIlHibI0q6LOwclpupAc=; b=y8dI4/DXV3JPOkw6+0lBoCg79ZChHDfkfo5PvuweTer/AAHiRMOA8g3gA0D8NL9zhO OzX/VuhTld6XA+lShR75+AJHTX+GXw+2UZykzFa+6Zg0aKOZMsqA2RzGcNnBXTdmRUCO 7t4QQvrMH71+VncsgqldcqVensijBbF/uxNQKIweUvmv5GIZMR/7Bx2VCU+Z6KClxV7j DPKBZNpiP0BwuIhhNEr+O/Xq2EGt9rVMDdEqdHynI9kWm/NXQQkRyCAiqXh7xE8S1oot aaHzOoBEVKYVGPJSyauIKG8xJnEXpa7DAzCEa4JX6setQx50oiyQnsLdhCs4Gv2prQYl Npug== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id f5si387663ilk.147.2021.05.17.11.32.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:32:41 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:39404 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii2j-00020m-0o for patch@linaro.org; Mon, 17 May 2021 14:32:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33776) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlP-0005yH-NL for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:47 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:42343) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlD-0004Ns-Up for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:47 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MGQWr-1lhqIG1nxt-00GsAE; Mon, 17 May 2021 20:14:33 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 15/59] linux-user/sparc: Merge sparc64 target_elf.h Date: Mon, 17 May 2021 20:13:40 +0200 Message-Id: <20210517181424.8093-16-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:j3nCLG7BqGWs0O5uHVozDY/dlKQjotgbamzgzCFv1iMu+4T5n/z V0MHWxCou0Lztm+PCOkAarwjsTcMTvcdifNVODXiR185RtjlqP9nf7xslsoYf1m23Ek/1pN 33GJ4qkTSUp13vkwbNvWC6o7DXBOnK91niHzCmu0H0rvg3S6imOAgbX1Syast9qikK92vnX qjI8lv4SmoqNTuy7gHz8w== X-UI-Out-Filterresults: notjunk:1; V03:K0:sDa8f22ue2o=:lVatV8I0j60j0hDevxpMVp fW9xcwH+Y3JeILzBgfds+moXbXD+F3NhkFyunRoGenOAc2+rLMglr6tq7+4Xyf1znW3eeSQpw GlnUGOC2vCB5Io6l6NB5Z7n8a/UQg8jwZCUt39bdBKp0lHOcvweMq+G4SVD/R7C4cN2uQKVPH ZVGOr/ApYXhK3azVS3T8D+0rTuJWypOSwpjVCDir+LC7FaLwCjNsldoYa7WsM569FY5AMRibw kpz+XUfsoePjcAEHScBB+xJxaZ2GeDxP05IT5ocVonKwtH9UNVyPQzqFDAHs1oeTROLp0Qdmj pkVivXxxYtXamhe9++Z+jWjtFqgUDS49jIiVLmD3nCtYDNDo8uTULyCWa/0l6qzGVoLJRHRm0 HSLSaWSfv1WGvEzMKmz/Ba2rZ2VxL4wbQcQ7typtDfVd9ExVchJeg8nEUiuxZ8eSbOduj2IYw HvDacSZ7r0rh5rK5unWESRzShHZ15h1Zk6Oxkf3eLniMYKL4ZiGR6Js+Y6WItwZRnsbepALYC FWBZH5rEBje6WGCapVZOK0= Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-9-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc64/target_elf.h | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc64/target_elf.h b/linux-user/sparc64/target_elf.h index d6e388f1cf60..023b49b74375 100644 --- a/linux-user/sparc64/target_elf.h +++ b/linux-user/sparc64/target_elf.h @@ -1,14 +1 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation, or (at your option) any - * later version. See the COPYING file in the top-level directory. - */ - -#ifndef SPARC64_TARGET_ELF_H -#define SPARC64_TARGET_ELF_H -static inline const char *cpu_get_model(uint32_t eflags) -{ - return "TI UltraSparc II"; -} -#endif +#include "../sparc/target_elf.h" From patchwork Mon May 17 18:13:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440192 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1343528jac; Mon, 17 May 2021 11:39:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyvaZ/Q0BpfRwXOm8J0dzPUSbeXeBzas3CrAN6selVnjXtjVgHNLdjwqaK1hii9LKKqS30Z X-Received: by 2002:a02:3506:: with SMTP id k6mr1360529jaa.39.1621276788300; Mon, 17 May 2021 11:39:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276788; cv=none; d=google.com; s=arc-20160816; b=PdvshtcMMtaezEb2OIbaaYpC0HCJ0nVJj3CBQlYQRqx6aY0epcOY5Jq6UT1aKovZGn TBoF87GwAVNf4cyaoq3mpbwnAkDMXtORB2e3+Jqe9USGjp2cuL7BqnYoqm6UOFyTz+fU S4etGJlbWEHcFz08f8znkC/YfeyzKOme6tpbGRAx8mvE++RtuP6CnsGvNmZTdFL/aYuF ViQOPz/YX7C2skf7encs931pgbq6OqObJRoyFeb1OJtkZeipC0xy5cegJEgSDO4LdQKz BRckYVrjEy9UrwXu6Aw/hxHR0ufasL54DHR7GkGh6Wv15lO6T5M6Tn5pbpO8pnV6v3WB /k8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=yWWXTh1Hbxk+I3QUwRZEbg/TQnxDZILf8UepXp5Wz1c=; b=Iy7Z4fkXoJUhNIbGGfCb854nNonpGdhZCysFdDDrmmLTp6hJ+5aoaJZQ9aFB/kyA49 JDCMqQ/LZCSt3TecPs9QqR+WderxKo6SWaPA2p5+5TpAJp2Y55+6oga0hhN1UmV/GZW2 CIiiYHmOV2CPwJe+PZHXsud6CkTfR+YEIxAQieJag/aSmfX/mHAUViESEeUVozv+uf1Y XhmGN6e8xeR1uAotuEFCg8kurg2HFdJS3WXw+jDREP/u/q2ZpAZnJF+KqA6xZppGPyn3 1n80IplRsqyuZccCUf9s7hUrmBoONKWAzR4o6nNT/YrzahPXQDfpDezEenPecQbOpybH B6CQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id k7si13842304iok.65.2021.05.17.11.39.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:39:48 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:55284 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii9a-0004Jl-Sn for patch@linaro.org; Mon, 17 May 2021 14:39:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33818) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlR-00060S-1B for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:49 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:59191) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlD-0004OG-VL for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:48 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MMoKq-1m1TdF3lNE-00Ijpj; Mon, 17 May 2021 20:14:34 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 16/59] linux-user/sparc: Merge sparc64 target_structs.h Date: Mon, 17 May 2021 20:13:41 +0200 Message-Id: <20210517181424.8093-17-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:enHmvZuSmU6C3CSJYrj6fn29jI2IGRFx/PKUzekrTvKjy/gJM2J s94FzHpZNELNSK6pCG3gFLWEHGtpU8GJHoLMHUlnpSkjsE0Jz3UpfvbIaFL+yMqGAhSt51p DozUa1VIIDn07jBZfxJYa4gPbZ+EaJmL4sgFW1enl2vMnQMpbECxcaLIM2ysS9z1oiYSX9g 0LwJjI/ZKBY8cYzCl59iw== X-UI-Out-Filterresults: notjunk:1; V03:K0:Ak3lWduQk04=:KMxRgaacdF2Y9RH1h5GQTB EYkF0QvnHMoyw5jolcbacU+aet1pR4RW4v/7NxRJTLncFdA8Y+ZsHp4QmnjqkCTaFA3OygdeQ wKImvm5OP2AdLldCkVMxHUq8+IHETAS1wmCIqs4ZJh0FqlbbOy50kUC/XO3VIDi37DHnoOaxK 7t0lUy1ODK3vQKiTsmKCyuGlUDmx0lm1Yl3OEnJiAOiUw/E3Np1MPtMhUlx81Qim8l+RWU9Ir Bwt4G29kt+TOsVu7CR4bmfyRorgpiSkCFFXmYP/li735lX1AAcV4nQAlzzn0D5jmGTLRLxd1z lPxUEPONqjUgTHc8AK6hUqhglU8Hwg5iN0z8vUvE/Y7Jjclh6w3B/mASakfuHKE6R6D23veOL FMgEh6EvjwsYtDVTAQYufuNJRCCwSY0BDbxmWlg4uLPRRBseoTORo0Os9cMmwxnuJVesFcF5D co38/hOdoFDUVZTvH3E+gAyrRcD3fDdfNCCOUleGs8SYG9A8+mSx/P7iiqXsiVT8/4+hxGAFu 5Mtc03JBgPj1tKCWTKygyU= Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-10-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/target_structs.h | 34 +++++++---------- linux-user/sparc64/target_structs.h | 59 +---------------------------- 2 files changed, 14 insertions(+), 79 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/target_structs.h b/linux-user/sparc/target_structs.h index 995354075950..beeace8fb237 100644 --- a/linux-user/sparc/target_structs.h +++ b/linux-user/sparc/target_structs.h @@ -26,13 +26,10 @@ struct target_ipc_perm { abi_uint cuid; /* Creator's user ID. */ abi_uint cgid; /* Creator's group ID. */ #if TARGET_ABI_BITS == 32 - abi_ushort __pad1; + abi_ushort __pad0; +#endif abi_ushort mode; /* Read/write permission. */ - abi_ushort __pad2; -#else - abi_ushort mode; abi_ushort __pad1; -#endif abi_ushort __seq; /* Sequence number. */ uint64_t __unused1; uint64_t __unused2; @@ -40,22 +37,17 @@ struct target_ipc_perm { struct target_shmid_ds { struct target_ipc_perm shm_perm; /* operation permission struct */ -#if TARGET_ABI_BITS == 32 - abi_uint __pad1; -#endif - abi_ulong shm_atime; /* time of last shmat() */ -#if TARGET_ABI_BITS == 32 - abi_uint __pad2; -#endif - abi_ulong shm_dtime; /* time of last shmdt() */ -#if TARGET_ABI_BITS == 32 - abi_uint __pad3; -#endif - abi_ulong shm_ctime; /* time of last change by shmctl() */ - abi_long shm_segsz; /* size of segment in bytes */ - abi_ulong shm_cpid; /* pid of creator */ - abi_ulong shm_lpid; /* pid of last shmop */ - abi_long shm_nattch; /* number of current attaches */ + /* + * Note that sparc32 splits these into hi/lo parts. + * For simplicity in qemu, always use a 64-bit type. + */ + int64_t shm_atime; /* last attach time */ + int64_t shm_dtime; /* last detach time */ + int64_t shm_ctime; /* last change time */ + abi_ulong shm_segsz; /* size of segment in bytes */ + abi_int shm_cpid; /* pid of creator */ + abi_int shm_lpid; /* pid of last shmop */ + abi_ulong shm_nattch; /* number of current attaches */ abi_ulong __unused1; abi_ulong __unused2; }; diff --git a/linux-user/sparc64/target_structs.h b/linux-user/sparc64/target_structs.h index 4a8ed48df742..cbcbc4602a69 100644 --- a/linux-user/sparc64/target_structs.h +++ b/linux-user/sparc64/target_structs.h @@ -1,58 +1 @@ -/* - * SPARC64 specific structures for linux-user - * - * Copyright (c) 2013 Fabrice Bellard - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, see . - */ -#ifndef SPARC64_TARGET_STRUCTS_H -#define SPARC64_TARGET_STRUCTS_H - -struct target_ipc_perm { - abi_int __key; /* Key. */ - abi_uint uid; /* Owner's user ID. */ - abi_uint gid; /* Owner's group ID. */ - abi_uint cuid; /* Creator's user ID. */ - abi_uint cgid; /* Creator's group ID. */ - abi_ushort mode; /* Read/write permission. */ - abi_ushort __pad1; - abi_ushort __seq; /* Sequence number. */ - abi_ushort __pad2; - abi_ulong __unused1; - abi_ulong __unused2; -}; - -struct target_shmid_ds { - struct target_ipc_perm shm_perm; /* operation permission struct */ - abi_long shm_segsz; /* size of segment in bytes */ - abi_ulong shm_atime; /* time of last shmat() */ -#if TARGET_ABI_BITS == 32 - abi_ulong __unused1; -#endif - abi_ulong shm_dtime; /* time of last shmdt() */ -#if TARGET_ABI_BITS == 32 - abi_ulong __unused2; -#endif - abi_ulong shm_ctime; /* time of last change by shmctl() */ -#if TARGET_ABI_BITS == 32 - abi_ulong __unused3; -#endif - abi_int shm_cpid; /* pid of creator */ - abi_int shm_lpid; /* pid of last shmop */ - abi_ulong shm_nattch; /* number of current attaches */ - abi_ulong __unused4; - abi_ulong __unused5; -}; - -#endif +#include "../sparc/target_structs.h" From patchwork Mon May 17 18:13:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440195 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1344553jac; Mon, 17 May 2021 11:41:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzjSgLgQ3puRRIK8G4rvPNABFGXS7igWThUFnVlZ1oph8+8Q6ABUiiDOLkI6JpdTT47QVR4 X-Received: by 2002:a05:6602:189:: with SMTP id m9mr1128093ioo.88.1621276869268; Mon, 17 May 2021 11:41:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276869; cv=none; d=google.com; s=arc-20160816; b=Ncg5tV8bF2YjVQf3ML4BgXGXwgeWLh0OLAjFp+pqM7gf6OjH/nIhcav96cFXFk8xh8 tWHfqPKFBW2DRg0zYxqCPPwG9kvA0hDQVTJi3heQkZf0cAg9659ijnLduwE6O2K8rdDL w98Cmw6QrgWL5Y620LMoQcZKpLNmbA3HBtkJW1n8wfabzzYTG8v4K1mnMU9mhHo/tycn KD0sKpbHPcYz4Ax68nRPt/616+HCgaWfisBapkh+mofU4AXzTSpMXz/odtRq9tbg2vIZ LlIVNIvBfwZaHUFIFbhmVT28WNlKwRW07WbRZZgKPmn9EESiwQTWclBiJV/Uf7LDAMIK 7tUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=XqXZdoRvTQUvVpQHQda9mWJNRXyQRJ3RgwVX2zjfWIc=; b=yv827g24XafKf61BNj154Say9zSqC6eXzfp6BbLS4Qzf1RWGpmfcvgHkvBUEASGJGB jGOR4vkACFWueVGbfphlIZ7Wdmi/LBpqojo9z7gBMfog+gDZYlvPUWqkL8PxA56juDw0 ieKxTp6Mn53A0LhGjQQP/kSzv4Z03alTZdkJyJ9W6li5Yp+soJ0abdk0wSxgCrzkXjjP AJGNwSzdJviQQHrF7BSJq1CEI4gpAvKQ7js8EImDn0XmFFN3ItoKlF95xG9UmdC/QtMZ HuPOX6tDRdAeOZ8C5YUe19ITPpk40FpQi5Ho5oJbJgj34XF6FDfc9xrJ9k6Psxpvqmxp 567g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id j19si16409432ilq.159.2021.05.17.11.41.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:41:09 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:56140 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiAu-0004uL-DS for patch@linaro.org; Mon, 17 May 2021 14:41:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33862) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlS-000687-W0 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:51 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:46265) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlF-0004Om-H2 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:50 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1McGp2-1lCgKM1MY0-00ckeh; Mon, 17 May 2021 20:14:34 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 17/59] linux-user/sparc: Merge sparc64 termbits.h Date: Mon, 17 May 2021 20:13:42 +0200 Message-Id: <20210517181424.8093-18-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:jFeiwATG10GHuXuf+19ETDAO29oQYj7+7CBRmbxyg5a3G9BRw2d r359li6k7EdQGxAB5Z51Mynvr+K3g4NHCqwGEk3clWiOne3RoxoW4aQ9JeUWBLrp58NRc7X mJe5wWCIb13znpWBFMDuDX8yIq3DaxRSnE3+S9J62x0Q0d9n2A7W2E07MvSlWUGiPNMRLQg XqjRkUNjfeUieEeib37Sg== X-UI-Out-Filterresults: notjunk:1; V03:K0:BeppgcUgEnU=:5eoo+5t9Y5KJznsM22ZRWb +YIZYD7XDbIyUUqTVfnH/a1+iNcmCAmmDpR65Y3E2WOm7uLwpN0/U2FsSM1VxbId4wXthdUtP 5ae5laYJ5/qihVLCR+StOiDeGYt5hnUsm3OOh5kGhF2kN0lKe8CJfN2ZXf+4oKNrqerFTRcnY +MXVLDm58E23T7NEFhawaZLvD8HEPMX/lV8phsoyy2stcJkS7MxDlS93UjsMD6U3TyModhjKM mVxwXbCk884eVWNHSWUXplJAGLvyxoxkUIWXz1UJGmPwPD0vQFWrMPO+QBF4Dgx0C18ujWewj I90+70Wwoj/zWPEac632oI9MU+a/tXPCKmWdN8DhNtyH+yFNqA1dZTvY/vHPq5YVTGdARF7w0 zPgslfP8/mY4j4Lz/+BGQtAuytEJt0YhJ+yn54c3voq1RHEgjOsbyOVoUgMe6TbqLprONMANg Df9EEOu5zrYmmRTYD5tH8eAT6tIGPplV7NMcxhH4e6+sIa9FPKCvbE/DReDeqWFw2Ht/H/6h3 3tJr0gJ1NwQnXy2cTqlwgU= Received-SPF: none client-ip=212.227.126.131; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-11-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc64/termbits.h | 292 +--------------------------------- 1 file changed, 1 insertion(+), 291 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc64/termbits.h b/linux-user/sparc64/termbits.h index 1ab1e80db548..54ddfee3ba34 100644 --- a/linux-user/sparc64/termbits.h +++ b/linux-user/sparc64/termbits.h @@ -1,291 +1 @@ -/* from asm/termbits.h */ - -#ifndef LINUX_USER_SPARC64_TERMBITS_H -#define LINUX_USER_SPARC64_TERMBITS_H - -#define TARGET_NCCS 19 - -typedef unsigned char target_cc_t; /* cc_t */ -typedef unsigned int target_speed_t; /* speed_t */ -typedef unsigned int target_tcflag_t; /* tcflag_t */ - -struct target_termios { - target_tcflag_t c_iflag; /* input mode flags */ - target_tcflag_t c_oflag; /* output mode flags */ - target_tcflag_t c_cflag; /* control mode flags */ - target_tcflag_t c_lflag; /* local mode flags */ - target_cc_t c_line; /* line discipline */ - target_cc_t c_cc[TARGET_NCCS]; /* control characters */ -}; - - -/* c_cc characters */ -#define TARGET_VINTR 0 -#define TARGET_VQUIT 1 -#define TARGET_VERASE 2 -#define TARGET_VKILL 3 -#define TARGET_VEOF 4 -#define TARGET_VEOL 5 -#define TARGET_VEOL2 6 -#define TARGET_VSWTC 7 -#define TARGET_VSTART 8 -#define TARGET_VSTOP 9 - -#define TARGET_VSUSP 10 -#define TARGET_VDSUSP 11 /* SunOS POSIX nicety I do believe... */ -#define TARGET_VREPRINT 12 -#define TARGET_VDISCARD 13 -#define TARGET_VWERASE 14 -#define TARGET_VLNEXT 15 - -/* Kernel keeps vmin/vtime separated, user apps assume vmin/vtime is - * shared with eof/eol - */ -#define TARGET_VMIN TARGET_VEOF -#define TARGET_VTIME TARGET_VEOL - -/* c_iflag bits */ -#define TARGET_IGNBRK 0x00000001 -#define TARGET_BRKINT 0x00000002 -#define TARGET_IGNPAR 0x00000004 -#define TARGET_PARMRK 0x00000008 -#define TARGET_INPCK 0x00000010 -#define TARGET_ISTRIP 0x00000020 -#define TARGET_INLCR 0x00000040 -#define TARGET_IGNCR 0x00000080 -#define TARGET_ICRNL 0x00000100 -#define TARGET_IUCLC 0x00000200 -#define TARGET_IXON 0x00000400 -#define TARGET_IXANY 0x00000800 -#define TARGET_IXOFF 0x00001000 -#define TARGET_IMAXBEL 0x00002000 -#define TARGET_IUTF8 0x00004000 - -/* c_oflag bits */ -#define TARGET_OPOST 0x00000001 -#define TARGET_OLCUC 0x00000002 -#define TARGET_ONLCR 0x00000004 -#define TARGET_OCRNL 0x00000008 -#define TARGET_ONOCR 0x00000010 -#define TARGET_ONLRET 0x00000020 -#define TARGET_OFILL 0x00000040 -#define TARGET_OFDEL 0x00000080 -#define TARGET_NLDLY 0x00000100 -#define TARGET_NL0 0x00000000 -#define TARGET_NL1 0x00000100 -#define TARGET_CRDLY 0x00000600 -#define TARGET_CR0 0x00000000 -#define TARGET_CR1 0x00000200 -#define TARGET_CR2 0x00000400 -#define TARGET_CR3 0x00000600 -#define TARGET_TABDLY 0x00001800 -#define TARGET_TAB0 0x00000000 -#define TARGET_TAB1 0x00000800 -#define TARGET_TAB2 0x00001000 -#define TARGET_TAB3 0x00001800 -#define TARGET_XTABS 0x00001800 -#define TARGET_BSDLY 0x00002000 -#define TARGET_BS0 0x00000000 -#define TARGET_BS1 0x00002000 -#define TARGET_VTDLY 0x00004000 -#define TARGET_VT0 0x00000000 -#define TARGET_VT1 0x00004000 -#define TARGET_FFDLY 0x00008000 -#define TARGET_FF0 0x00000000 -#define TARGET_FF1 0x00008000 -#define TARGET_PAGEOUT 0x00010000 /* SUNOS specific */ -#define TARGET_WRAP 0x00020000 /* SUNOS specific */ - -/* c_cflag bit meaning */ -#define TARGET_CBAUD 0x0000100f -#define TARGET_B0 0x00000000 /* hang up */ -#define TARGET_B50 0x00000001 -#define TARGET_B75 0x00000002 -#define TARGET_B110 0x00000003 -#define TARGET_B134 0x00000004 -#define TARGET_B150 0x00000005 -#define TARGET_B200 0x00000006 -#define TARGET_B300 0x00000007 -#define TARGET_B600 0x00000008 -#define TARGET_B1200 0x00000009 -#define TARGET_B1800 0x0000000a -#define TARGET_B2400 0x0000000b -#define TARGET_B4800 0x0000000c -#define TARGET_B9600 0x0000000d -#define TARGET_B19200 0x0000000e -#define TARGET_B38400 0x0000000f -#define TARGET_EXTA B19200 -#define TARGET_EXTB B38400 -#define TARGET_CSIZE 0x00000030 -#define TARGET_CS5 0x00000000 -#define TARGET_CS6 0x00000010 -#define TARGET_CS7 0x00000020 -#define TARGET_CS8 0x00000030 -#define TARGET_CSTOPB 0x00000040 -#define TARGET_CREAD 0x00000080 -#define TARGET_PARENB 0x00000100 -#define TARGET_PARODD 0x00000200 -#define TARGET_HUPCL 0x00000400 -#define TARGET_CLOCAL 0x00000800 -#define TARGET_CBAUDEX 0x00001000 -/* We'll never see these speeds with the Zilogs, but for completeness... */ -#define TARGET_B57600 0x00001001 -#define TARGET_B115200 0x00001002 -#define TARGET_B230400 0x00001003 -#define TARGET_B460800 0x00001004 -/* This is what we can do with the Zilogs. */ -#define TARGET_B76800 0x00001005 -/* This is what we can do with the SAB82532. */ -#define TARGET_B153600 0x00001006 -#define TARGET_B307200 0x00001007 -#define TARGET_B614400 0x00001008 -#define TARGET_B921600 0x00001009 -/* And these are the rest... */ -#define TARGET_B500000 0x0000100a -#define TARGET_B576000 0x0000100b -#define TARGET_B1000000 0x0000100c -#define TARGET_B1152000 0x0000100d -#define TARGET_B1500000 0x0000100e -#define TARGET_B2000000 0x0000100f -/* These have totally bogus values and nobody uses them - so far. Later on we'd have to use say 0x10000x and - adjust CBAUD constant and drivers accordingly. -#define B2500000 0x00001010 -#define B3000000 0x00001011 -#define B3500000 0x00001012 -#define B4000000 0x00001013 */ -#define TARGET_CIBAUD 0x100f0000 /* input baud rate (not used) */ -#define TARGET_CMSPAR 0x40000000 /* mark or space (stick) parity */ -#define TARGET_CRTSCTS 0x80000000 /* flow control */ - -/* c_lflag bits */ -#define TARGET_ISIG 0x00000001 -#define TARGET_ICANON 0x00000002 -#define TARGET_XCASE 0x00000004 -#define TARGET_ECHO 0x00000008 -#define TARGET_ECHOE 0x00000010 -#define TARGET_ECHOK 0x00000020 -#define TARGET_ECHONL 0x00000040 -#define TARGET_NOFLSH 0x00000080 -#define TARGET_TOSTOP 0x00000100 -#define TARGET_ECHOCTL 0x00000200 -#define TARGET_ECHOPRT 0x00000400 -#define TARGET_ECHOKE 0x00000800 -#define TARGET_DEFECHO 0x00001000 /* SUNOS thing, what is it? */ -#define TARGET_FLUSHO 0x00002000 -#define TARGET_PENDIN 0x00004000 -#define TARGET_IEXTEN 0x00008000 -#define TARGET_EXTPROC 0x00010000 - -/* ioctls */ - -/* Big T */ -#define TARGET_TCGETA TARGET_IOR('T', 1, struct target_termio) -#define TARGET_TCSETA TARGET_IOW('T', 2, struct target_termio) -#define TARGET_TCSETAW TARGET_IOW('T', 3, struct target_termio) -#define TARGET_TCSETAF TARGET_IOW('T', 4, struct target_termio) -#define TARGET_TCSBRK TARGET_IO('T', 5) -#define TARGET_TCXONC TARGET_IO('T', 6) -#define TARGET_TCFLSH TARGET_IO('T', 7) -#define TARGET_TCGETS TARGET_IOR('T', 8, struct target_termios) -#define TARGET_TCSETS TARGET_IOW('T', 9, struct target_termios) -#define TARGET_TCSETSW TARGET_IOW('T', 10, struct target_termios) -#define TARGET_TCSETSF TARGET_IOW('T', 11, struct target_termios) - -/* Note that all the ioctls that are not available in Linux have a - * double underscore on the front to: a) avoid some programs to - * thing we support some ioctls under Linux (autoconfiguration stuff) - */ -/* Little t */ -#define TARGET_TIOCGETD TARGET_IOR('t', 0, int) -#define TARGET_TIOCSETD TARGET_IOW('t', 1, int) -//#define __TIOCHPCL _IO('t', 2) /* SunOS Specific */ -//#define __TIOCMODG _IOR('t', 3, int) /* SunOS Specific */ -//#define __TIOCMODS _IOW('t', 4, int) /* SunOS Specific */ -//#define __TIOCGETP _IOR('t', 8, struct sgttyb) /* SunOS Specific */ -//#define __TIOCSETP _IOW('t', 9, struct sgttyb) /* SunOS Specific */ -//#define __TIOCSETN _IOW('t', 10, struct sgttyb) /* SunOS Specific */ -#define TARGET_TIOCEXCL TARGET_IO('t', 13) -#define TARGET_TIOCNXCL TARGET_IO('t', 14) -//#define __TIOCFLUSH _IOW('t', 16, int) /* SunOS Specific */ -//#define __TIOCSETC _IOW('t', 17, struct tchars) /* SunOS Specific */ -//#define __TIOCGETC _IOR('t', 18, struct tchars) /* SunOS Specific */ -//#define __TIOCTCNTL _IOW('t', 32, int) /* SunOS Specific */ -//#define __TIOCSIGNAL _IOW('t', 33, int) /* SunOS Specific */ -//#define __TIOCSETX _IOW('t', 34, int) /* SunOS Specific */ -//#define __TIOCGETX _IOR('t', 35, int) /* SunOS Specific */ -#define TARGET_TIOCCONS TARGET_IO('t', 36) -//#define __TIOCSSIZE _IOW('t', 37, struct sunos_ttysize) /* SunOS Specific */ -//#define __TIOCGSIZE _IOR('t', 38, struct sunos_ttysize) /* SunOS Specific */ -#define TARGET_TIOCGSOFTCAR TARGET_IOR('t', 100, int) -#define TARGET_TIOCSSOFTCAR TARGET_IOW('t', 101, int) -//#define __TIOCUCNTL _IOW('t', 102, int) /* SunOS Specific */ -#define TARGET_TIOCSWINSZ TARGET_IOW('t', 103, struct winsize) -#define TARGET_TIOCGWINSZ TARGET_IOR('t', 104, struct winsize) -//#define __TIOCREMOTE _IOW('t', 105, int) /* SunOS Specific */ -#define TARGET_TIOCMGET TARGET_IOR('t', 106, int) -#define TARGET_TIOCMBIC TARGET_IOW('t', 107, int) -#define TARGET_TIOCMBIS TARGET_IOW('t', 108, int) -#define TARGET_TIOCMSET TARGET_IOW('t', 109, int) -#define TARGET_TIOCSTART TARGET_IO('t', 110) -#define TARGET_TIOCSTOP TARGET_IO('t', 111) -#define TARGET_TIOCPKT TARGET_IOW('t', 112, int) -#define TARGET_TIOCNOTTY TARGET_IO('t', 113) -#define TARGET_TIOCSTI TARGET_IOW('t', 114, char) -#define TARGET_TIOCOUTQ TARGET_IOR('t', 115, int) -//#define __TIOCGLTC _IOR('t', 116, struct ltchars) /* SunOS Specific */ -//#define __TIOCSLTC _IOW('t', 117, struct ltchars) /* SunOS Specific */ -/* 118 is the non-posix setpgrp tty ioctl */ -/* 119 is the non-posix getpgrp tty ioctl */ -//#define __TIOCCDTR TARGET_IO('t', 120) /* SunOS Specific */ -//#define __TIOCSDTR TARGET_IO('t', 121) /* SunOS Specific */ -#define TARGET_TIOCCBRK TARGET_IO('t', 122) -#define TARGET_TIOCSBRK TARGET_IO('t', 123) -//#define __TIOCLGET TARGET_IOW('t', 124, int) /* SunOS Specific */ -//#define __TIOCLSET TARGET_IOW('t', 125, int) /* SunOS Specific */ -//#define __TIOCLBIC TARGET_IOW('t', 126, int) /* SunOS Specific */ -//#define __TIOCLBIS TARGET_IOW('t', 127, int) /* SunOS Specific */ -//#define __TIOCISPACE TARGET_IOR('t', 128, int) /* SunOS Specific */ -//#define __TIOCISIZE TARGET_IOR('t', 129, int) /* SunOS Specific */ -#define TARGET_TIOCSPGRP TARGET_IOW('t', 130, int) -#define TARGET_TIOCGPGRP TARGET_IOR('t', 131, int) -#define TARGET_TIOCSCTTY TARGET_IO('t', 132) -#define TARGET_TIOCGSID TARGET_IOR('t', 133, int) -/* Get minor device of a pty master's FD -- Solaris equiv is ISPTM */ -#define TARGET_TIOCGPTN TARGET_IOR('t', 134, unsigned int) /* Get Pty Number */ -#define TARGET_TIOCSPTLCK TARGET_IOW('t', 135, int) /* Lock/unlock PTY */ -#define TARGET_TIOCGPTPEER TARGET_IO('t', 137) /* Safely open the slave */ - -/* Little f */ -#define TARGET_FIOCLEX TARGET_IO('f', 1) -#define TARGET_FIONCLEX TARGET_IO('f', 2) -#define TARGET_FIOASYNC TARGET_IOW('f', 125, int) -#define TARGET_FIONBIO TARGET_IOW('f', 126, int) -#define TARGET_FIONREAD TARGET_IOR('f', 127, int) -#define TARGET_TIOCINQ TARGET_FIONREAD - -/* SCARY Rutgers local SunOS kernel hackery, perhaps I will support it - * someday. This is completely bogus, I know... - */ -//#define __TCGETSTAT TARGET_IO('T', 200) /* Rutgers specific */ -//#define __TCSETSTAT TARGET_IO('T', 201) /* Rutgers specific */ - -/* Linux specific, no SunOS equivalent. */ -#define TARGET_TIOCLINUX 0x541C -#define TARGET_TIOCGSERIAL 0x541E -#define TARGET_TIOCSSERIAL 0x541F -#define TARGET_TCSBRKP 0x5425 -#define TARGET_TIOCTTYGSTRUCT 0x5426 -#define TARGET_TIOCSERCONFIG 0x5453 -#define TARGET_TIOCSERGWILD 0x5454 -#define TARGET_TIOCSERSWILD 0x5455 -#define TARGET_TIOCGLCKTRMIOS 0x5456 -#define TARGET_TIOCSLCKTRMIOS 0x5457 -#define TARGET_TIOCSERGSTRUCT 0x5458 /* For debugging only */ -#define TARGET_TIOCSERGETLSR 0x5459 /* Get line status register */ -#define TARGET_TIOCSERGETMULTI 0x545A /* Get multiport config */ -#define TARGET_TIOCSERSETMULTI 0x545B /* Set multiport config */ -#define TARGET_TIOCMIWAIT 0x545C /* Wait input */ -#define TARGET_TIOCGICOUNT 0x545D /* Read serial port inline interrupt counts */ - -#endif +#include "../sparc/termbits.h" From patchwork Mon May 17 18:13:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440188 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1340725jac; Mon, 17 May 2021 11:35:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyTQ/+IGz/1Lw9RI8ZVgb5x0LC1T/PH4vPxSI5k4a7yaj7hor7NyioXryw9YweC/CZw7DaD X-Received: by 2002:a05:6602:54:: with SMTP id z20mr1101470ioz.48.1621276531715; Mon, 17 May 2021 11:35:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276531; cv=none; d=google.com; s=arc-20160816; b=VABuSMQUbCmHI/7kgPeTqyRf0ld7Es/C7k6jQhWzCVJ3Fp50vaJJlwrl5cHn0gY3/Z KkqZ+IEUYPp678USqtugaBu3AOkPzBEOIBIbtaReydhb6eASRQK/RGbTGkwj6dew4iAV dGwnEWylTpDTCXYijSgWnTIyZF3UnscJ72CWNVxqLEoSN1dCv0qzJ4t+9hi7HdnEosU7 mdhj186zqJrfIhdre7geHCakSsP4yYWd0MVx14Bq36U6UGgFAAzygKVRFI79XsCfgUJW rCTL2I3xkMJz1UQMp9OfiT43MrkD2rURecZHfzDgD3cnWND3IlL+Tdb6sTt2Ohn2HSDm Y+7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=4D32jxnjpkkoeXqWlVkLVpoMfRWAUqRU6wkDiQQR2Gk=; b=PBFR9wRAAp2DxQCkUBDMzaBsxrHp0Vt8ezI2mxE6Xqq+J1/ik1zCLYFHBlzSFAUBr6 Vjce0AU+GD/9dbAIYLwM6xh0veXDBA1aj0TK44mr1MdNDhLb6OoinVY9tQb/pFp1vSlR bj8SRiL7HjHXx2HiVe73eYLNZDgVrJzPdA3GzVe9a4A1m3gNtCqJTxiaVnaGjhRtVVJk N/hwnGBMV4jg0OJvsBiP7lYorqdocgL6WgKQDk70zEGG5Xy8ix8aoXC0Wx2ngqqv/3ft ktefU2iJkZJv4RczSpdmgQQgwQpAOdoaUE9vFXDMI42IKJeZNu6S3lP2SvWEVhbMIlt5 AHAQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id 9si12893600ilq.95.2021.05.17.11.35.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:35:31 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:41680 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii5T-0003Yg-0W for patch@linaro.org; Mon, 17 May 2021 14:35:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33922) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlV-0006Gf-19 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:53 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:45075) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlF-0004PZ-HH for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:52 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.167]) with ESMTPSA (Nemesis) id 1Mum6l-1lQlEf3j0d-00rnKu; Mon, 17 May 2021 20:14:35 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 18/59] linux-user/sparc: Merge sparc64/ into sparc/ Date: Mon, 17 May 2021 20:13:43 +0200 Message-Id: <20210517181424.8093-19-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:xhjh9LT98rLFB2M5Xfn0Sqngc+VM2ZPPvzjZGvfVcbAyN7ceWlr g5Ar8Sw+x4Dc8XiHjwChEFWxtLkz67T2g3AuC90tctCEMZ3DvYPzKQXNtuit7s1jq5oNABi regjjHYpFRbPEba6FYEHc1teHotB+EfIooXg5P1enZRKDu4dK/EfBrGqWQm2GOPbyWsCt93 PrbzwqIoyM5bQyjL/rWDg== X-UI-Out-Filterresults: notjunk:1; V03:K0:L5z+JiQ1nzM=:v4TVr86sBoP3qpBa8xZQLN XhV4Tw8ACQ+y7XRfHuPcu0edmxTrbJw1W48+8dfMWfjWXgF200OMZJI6/rao/U4rhCqb/cL1T VxThVUkmsDvAqL8r+JQinFKs4H7rSWp+Cr8uwX7dGlr9ZZW6uiolfSH1fe/aSjTfRQL09zEus bwM3oCPjzyeoufDAmKKcvfHevyS/+eqAtazGrhpAdH6uUCSMrXRyJCqDIITkBIyGnttbQsUrx oya5ilikBpGflFMSvtF5BUZc/4g456PbxlP/OFxHXYnaAL4bWoJHyy3VAbM6aoiYkyTY0dUY3 brd0hbeBF3NRvBkrhDXpmq5qmrjwds4IU3HqcDtcsjvlOnQ/tbywoZqynHu2V4EShWx2MP3iO jsgd7JXqv+diH7j5HzbpgIx/mzV3LRgz8LdJ4lvLMnM9gbgzYdVfRzagclqsOzklzEOTG0cEN RajNdlI1bNyUV+JNM94cbySsEHgLYVy5yvVgZjfZLHqMqdgF0gJCZ4JP4+DYzS8gAXLDxw6p/ kyefphPjdLt6DA1mgr9aMk= Received-SPF: none client-ip=212.227.126.131; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson All of the source and header files already defer to sparc via #include. The syscall.tbl and syscallhdr.sh files could not do the same, but are identical. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-12-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- .../targets/sparc64-linux-user.mak | 1 + linux-user/meson.build | 1 - linux-user/sparc64/cpu_loop.c | 20 - linux-user/sparc64/meson.build | 5 - linux-user/sparc64/signal.c | 19 - linux-user/sparc64/sockbits.h | 1 - linux-user/sparc64/syscall.tbl | 487 ------------------ linux-user/sparc64/syscallhdr.sh | 32 -- linux-user/sparc64/target_cpu.h | 1 - linux-user/sparc64/target_elf.h | 1 - linux-user/sparc64/target_fcntl.h | 1 - linux-user/sparc64/target_signal.h | 1 - linux-user/sparc64/target_structs.h | 1 - linux-user/sparc64/target_syscall.h | 1 - linux-user/sparc64/termbits.h | 1 - 15 files changed, 1 insertion(+), 572 deletions(-) delete mode 100644 linux-user/sparc64/cpu_loop.c delete mode 100644 linux-user/sparc64/meson.build delete mode 100644 linux-user/sparc64/signal.c delete mode 100644 linux-user/sparc64/sockbits.h delete mode 100644 linux-user/sparc64/syscall.tbl delete mode 100644 linux-user/sparc64/syscallhdr.sh delete mode 100644 linux-user/sparc64/target_cpu.h delete mode 100644 linux-user/sparc64/target_elf.h delete mode 100644 linux-user/sparc64/target_fcntl.h delete mode 100644 linux-user/sparc64/target_signal.h delete mode 100644 linux-user/sparc64/target_structs.h delete mode 100644 linux-user/sparc64/target_syscall.h delete mode 100644 linux-user/sparc64/termbits.h -- 2.31.1 diff --git a/default-configs/targets/sparc64-linux-user.mak b/default-configs/targets/sparc64-linux-user.mak index 846924201ae1..9d23ab4a266e 100644 --- a/default-configs/targets/sparc64-linux-user.mak +++ b/default-configs/targets/sparc64-linux-user.mak @@ -1,5 +1,6 @@ TARGET_ARCH=sparc64 TARGET_BASE_ARCH=sparc +TARGET_ABI_DIR=sparc TARGET_SYSTBL_ABI=common,64 TARGET_SYSTBL=syscall.tbl TARGET_ALIGNED_ONLY=y diff --git a/linux-user/meson.build b/linux-user/meson.build index 7fe28d659eff..9549f81682d5 100644 --- a/linux-user/meson.build +++ b/linux-user/meson.build @@ -32,7 +32,6 @@ subdir('mips') subdir('ppc') subdir('s390x') subdir('sh4') -subdir('sparc64') subdir('sparc') subdir('x86_64') subdir('xtensa') diff --git a/linux-user/sparc64/cpu_loop.c b/linux-user/sparc64/cpu_loop.c deleted file mode 100644 index 4fd44e1b1ebd..000000000000 --- a/linux-user/sparc64/cpu_loop.c +++ /dev/null @@ -1,20 +0,0 @@ -/* - * qemu user cpu loop - * - * Copyright (c) 2003-2008 Fabrice Bellard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - */ - -#include "../sparc/cpu_loop.c" diff --git a/linux-user/sparc64/meson.build b/linux-user/sparc64/meson.build deleted file mode 100644 index 9527a40ed440..000000000000 --- a/linux-user/sparc64/meson.build +++ /dev/null @@ -1,5 +0,0 @@ -syscall_nr_generators += { - 'sparc64': generator(sh, - arguments: [ meson.current_source_dir() / 'syscallhdr.sh', '@INPUT@', '@OUTPUT@', '@EXTRA_ARGS@' ], - output: '@BASENAME@_nr.h') -} diff --git a/linux-user/sparc64/signal.c b/linux-user/sparc64/signal.c deleted file mode 100644 index 170ebac232c0..000000000000 --- a/linux-user/sparc64/signal.c +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Emulation of Linux signals - * - * Copyright (c) 2003 Fabrice Bellard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - */ -#include "../sparc/signal.c" diff --git a/linux-user/sparc64/sockbits.h b/linux-user/sparc64/sockbits.h deleted file mode 100644 index 658899e4d363..000000000000 --- a/linux-user/sparc64/sockbits.h +++ /dev/null @@ -1 +0,0 @@ -#include "../sparc/sockbits.h" diff --git a/linux-user/sparc64/syscall.tbl b/linux-user/sparc64/syscall.tbl deleted file mode 100644 index 4af114e84f20..000000000000 --- a/linux-user/sparc64/syscall.tbl +++ /dev/null @@ -1,487 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note -# -# system call numbers and entry vectors for sparc -# -# The format is: -# -# -# The can be common, 64, or 32 for this file. -# -0 common restart_syscall sys_restart_syscall -1 32 exit sys_exit sparc_exit -1 64 exit sparc_exit -2 common fork sys_fork -3 common read sys_read -4 common write sys_write -5 common open sys_open compat_sys_open -6 common close sys_close -7 common wait4 sys_wait4 compat_sys_wait4 -8 common creat sys_creat -9 common link sys_link -10 common unlink sys_unlink -11 32 execv sunos_execv -11 64 execv sys_nis_syscall -12 common chdir sys_chdir -13 32 chown sys_chown16 -13 64 chown sys_chown -14 common mknod sys_mknod -15 common chmod sys_chmod -16 32 lchown sys_lchown16 -16 64 lchown sys_lchown -17 common brk sys_brk -18 common perfctr sys_nis_syscall -19 common lseek sys_lseek compat_sys_lseek -20 common getpid sys_getpid -21 common capget sys_capget -22 common capset sys_capset -23 32 setuid sys_setuid16 -23 64 setuid sys_setuid -24 32 getuid sys_getuid16 -24 64 getuid sys_getuid -25 common vmsplice sys_vmsplice compat_sys_vmsplice -26 common ptrace sys_ptrace compat_sys_ptrace -27 common alarm sys_alarm -28 common sigaltstack sys_sigaltstack compat_sys_sigaltstack -29 32 pause sys_pause -29 64 pause sys_nis_syscall -30 32 utime sys_utime32 -30 64 utime sys_utime -31 32 lchown32 sys_lchown -32 32 fchown32 sys_fchown -33 common access sys_access -34 common nice sys_nice -35 32 chown32 sys_chown -36 common sync sys_sync -37 common kill sys_kill -38 common stat sys_newstat compat_sys_newstat -39 32 sendfile sys_sendfile compat_sys_sendfile -39 64 sendfile sys_sendfile64 -40 common lstat sys_newlstat compat_sys_newlstat -41 common dup sys_dup -42 common pipe sys_sparc_pipe -43 common times sys_times compat_sys_times -44 32 getuid32 sys_getuid -45 common umount2 sys_umount -46 32 setgid sys_setgid16 -46 64 setgid sys_setgid -47 32 getgid sys_getgid16 -47 64 getgid sys_getgid -48 common signal sys_signal -49 32 geteuid sys_geteuid16 -49 64 geteuid sys_geteuid -50 32 getegid sys_getegid16 -50 64 getegid sys_getegid -51 common acct sys_acct -52 64 memory_ordering sys_memory_ordering -53 32 getgid32 sys_getgid -54 common ioctl sys_ioctl compat_sys_ioctl -55 common reboot sys_reboot -56 32 mmap2 sys_mmap2 sys32_mmap2 -57 common symlink sys_symlink -58 common readlink sys_readlink -59 32 execve sys_execve sys32_execve -59 64 execve sys64_execve -60 common umask sys_umask -61 common chroot sys_chroot -62 common fstat sys_newfstat compat_sys_newfstat -63 common fstat64 sys_fstat64 compat_sys_fstat64 -64 common getpagesize sys_getpagesize -65 common msync sys_msync -66 common vfork sys_vfork -67 common pread64 sys_pread64 compat_sys_pread64 -68 common pwrite64 sys_pwrite64 compat_sys_pwrite64 -69 32 geteuid32 sys_geteuid -70 32 getegid32 sys_getegid -71 common mmap sys_mmap -72 32 setreuid32 sys_setreuid -73 32 munmap sys_munmap -73 64 munmap sys_64_munmap -74 common mprotect sys_mprotect -75 common madvise sys_madvise -76 common vhangup sys_vhangup -77 32 truncate64 sys_truncate64 compat_sys_truncate64 -78 common mincore sys_mincore -79 32 getgroups sys_getgroups16 -79 64 getgroups sys_getgroups -80 32 setgroups sys_setgroups16 -80 64 setgroups sys_setgroups -81 common getpgrp sys_getpgrp -82 32 setgroups32 sys_setgroups -83 common setitimer sys_setitimer compat_sys_setitimer -84 32 ftruncate64 sys_ftruncate64 compat_sys_ftruncate64 -85 common swapon sys_swapon -86 common getitimer sys_getitimer compat_sys_getitimer -87 32 setuid32 sys_setuid -88 common sethostname sys_sethostname -89 32 setgid32 sys_setgid -90 common dup2 sys_dup2 -91 32 setfsuid32 sys_setfsuid -92 common fcntl sys_fcntl compat_sys_fcntl -93 common select sys_select -94 32 setfsgid32 sys_setfsgid -95 common fsync sys_fsync -96 common setpriority sys_setpriority -97 common socket sys_socket -98 common connect sys_connect -99 common accept sys_accept -100 common getpriority sys_getpriority -101 common rt_sigreturn sys_rt_sigreturn sys32_rt_sigreturn -102 common rt_sigaction sys_rt_sigaction compat_sys_rt_sigaction -103 common rt_sigprocmask sys_rt_sigprocmask compat_sys_rt_sigprocmask -104 common rt_sigpending sys_rt_sigpending compat_sys_rt_sigpending -105 32 rt_sigtimedwait sys_rt_sigtimedwait_time32 compat_sys_rt_sigtimedwait_time32 -105 64 rt_sigtimedwait sys_rt_sigtimedwait -106 common rt_sigqueueinfo sys_rt_sigqueueinfo compat_sys_rt_sigqueueinfo -107 common rt_sigsuspend sys_rt_sigsuspend compat_sys_rt_sigsuspend -108 32 setresuid32 sys_setresuid -108 64 setresuid sys_setresuid -109 32 getresuid32 sys_getresuid -109 64 getresuid sys_getresuid -110 32 setresgid32 sys_setresgid -110 64 setresgid sys_setresgid -111 32 getresgid32 sys_getresgid -111 64 getresgid sys_getresgid -112 32 setregid32 sys_setregid -113 common recvmsg sys_recvmsg compat_sys_recvmsg -114 common sendmsg sys_sendmsg compat_sys_sendmsg -115 32 getgroups32 sys_getgroups -116 common gettimeofday sys_gettimeofday compat_sys_gettimeofday -117 common getrusage sys_getrusage compat_sys_getrusage -118 common getsockopt sys_getsockopt sys_getsockopt -119 common getcwd sys_getcwd -120 common readv sys_readv compat_sys_readv -121 common writev sys_writev compat_sys_writev -122 common settimeofday sys_settimeofday compat_sys_settimeofday -123 32 fchown sys_fchown16 -123 64 fchown sys_fchown -124 common fchmod sys_fchmod -125 common recvfrom sys_recvfrom -126 32 setreuid sys_setreuid16 -126 64 setreuid sys_setreuid -127 32 setregid sys_setregid16 -127 64 setregid sys_setregid -128 common rename sys_rename -129 common truncate sys_truncate compat_sys_truncate -130 common ftruncate sys_ftruncate compat_sys_ftruncate -131 common flock sys_flock -132 common lstat64 sys_lstat64 compat_sys_lstat64 -133 common sendto sys_sendto -134 common shutdown sys_shutdown -135 common socketpair sys_socketpair -136 common mkdir sys_mkdir -137 common rmdir sys_rmdir -138 32 utimes sys_utimes_time32 -138 64 utimes sys_utimes -139 common stat64 sys_stat64 compat_sys_stat64 -140 common sendfile64 sys_sendfile64 -141 common getpeername sys_getpeername -142 32 futex sys_futex_time32 -142 64 futex sys_futex -143 common gettid sys_gettid -144 common getrlimit sys_getrlimit compat_sys_getrlimit -145 common setrlimit sys_setrlimit compat_sys_setrlimit -146 common pivot_root sys_pivot_root -147 common prctl sys_prctl -148 common pciconfig_read sys_pciconfig_read -149 common pciconfig_write sys_pciconfig_write -150 common getsockname sys_getsockname -151 common inotify_init sys_inotify_init -152 common inotify_add_watch sys_inotify_add_watch -153 common poll sys_poll -154 common getdents64 sys_getdents64 -155 32 fcntl64 sys_fcntl64 compat_sys_fcntl64 -156 common inotify_rm_watch sys_inotify_rm_watch -157 common statfs sys_statfs compat_sys_statfs -158 common fstatfs sys_fstatfs compat_sys_fstatfs -159 common umount sys_oldumount -160 common sched_set_affinity sys_sched_setaffinity compat_sys_sched_setaffinity -161 common sched_get_affinity sys_sched_getaffinity compat_sys_sched_getaffinity -162 common getdomainname sys_getdomainname -163 common setdomainname sys_setdomainname -164 64 utrap_install sys_utrap_install -165 common quotactl sys_quotactl -166 common set_tid_address sys_set_tid_address -167 common mount sys_mount compat_sys_mount -168 common ustat sys_ustat compat_sys_ustat -169 common setxattr sys_setxattr -170 common lsetxattr sys_lsetxattr -171 common fsetxattr sys_fsetxattr -172 common getxattr sys_getxattr -173 common lgetxattr sys_lgetxattr -174 common getdents sys_getdents compat_sys_getdents -175 common setsid sys_setsid -176 common fchdir sys_fchdir -177 common fgetxattr sys_fgetxattr -178 common listxattr sys_listxattr -179 common llistxattr sys_llistxattr -180 common flistxattr sys_flistxattr -181 common removexattr sys_removexattr -182 common lremovexattr sys_lremovexattr -183 32 sigpending sys_sigpending compat_sys_sigpending -183 64 sigpending sys_nis_syscall -184 common query_module sys_ni_syscall -185 common setpgid sys_setpgid -186 common fremovexattr sys_fremovexattr -187 common tkill sys_tkill -188 32 exit_group sys_exit_group sparc_exit_group -188 64 exit_group sparc_exit_group -189 common uname sys_newuname -190 common init_module sys_init_module -191 32 personality sys_personality sys_sparc64_personality -191 64 personality sys_sparc64_personality -192 32 remap_file_pages sys_sparc_remap_file_pages sys_remap_file_pages -192 64 remap_file_pages sys_remap_file_pages -193 common epoll_create sys_epoll_create -194 common epoll_ctl sys_epoll_ctl -195 common epoll_wait sys_epoll_wait -196 common ioprio_set sys_ioprio_set -197 common getppid sys_getppid -198 32 sigaction sys_sparc_sigaction compat_sys_sparc_sigaction -198 64 sigaction sys_nis_syscall -199 common sgetmask sys_sgetmask -200 common ssetmask sys_ssetmask -201 32 sigsuspend sys_sigsuspend -201 64 sigsuspend sys_nis_syscall -202 common oldlstat sys_newlstat compat_sys_newlstat -203 common uselib sys_uselib -204 32 readdir sys_old_readdir compat_sys_old_readdir -204 64 readdir sys_nis_syscall -205 common readahead sys_readahead compat_sys_readahead -206 common socketcall sys_socketcall sys32_socketcall -207 common syslog sys_syslog -208 common lookup_dcookie sys_lookup_dcookie compat_sys_lookup_dcookie -209 common fadvise64 sys_fadvise64 compat_sys_fadvise64 -210 common fadvise64_64 sys_fadvise64_64 compat_sys_fadvise64_64 -211 common tgkill sys_tgkill -212 common waitpid sys_waitpid -213 common swapoff sys_swapoff -214 common sysinfo sys_sysinfo compat_sys_sysinfo -215 32 ipc sys_ipc compat_sys_ipc -215 64 ipc sys_sparc_ipc -216 32 sigreturn sys_sigreturn sys32_sigreturn -216 64 sigreturn sys_nis_syscall -217 common clone sys_clone -218 common ioprio_get sys_ioprio_get -219 32 adjtimex sys_adjtimex_time32 -219 64 adjtimex sys_sparc_adjtimex -220 32 sigprocmask sys_sigprocmask compat_sys_sigprocmask -220 64 sigprocmask sys_nis_syscall -221 common create_module sys_ni_syscall -222 common delete_module sys_delete_module -223 common get_kernel_syms sys_ni_syscall -224 common getpgid sys_getpgid -225 common bdflush sys_bdflush -226 common sysfs sys_sysfs -227 common afs_syscall sys_nis_syscall -228 common setfsuid sys_setfsuid16 -229 common setfsgid sys_setfsgid16 -230 common _newselect sys_select compat_sys_select -231 32 time sys_time32 -232 common splice sys_splice -233 32 stime sys_stime32 -233 64 stime sys_stime -234 common statfs64 sys_statfs64 compat_sys_statfs64 -235 common fstatfs64 sys_fstatfs64 compat_sys_fstatfs64 -236 common _llseek sys_llseek -237 common mlock sys_mlock -238 common munlock sys_munlock -239 common mlockall sys_mlockall -240 common munlockall sys_munlockall -241 common sched_setparam sys_sched_setparam -242 common sched_getparam sys_sched_getparam -243 common sched_setscheduler sys_sched_setscheduler -244 common sched_getscheduler sys_sched_getscheduler -245 common sched_yield sys_sched_yield -246 common sched_get_priority_max sys_sched_get_priority_max -247 common sched_get_priority_min sys_sched_get_priority_min -248 32 sched_rr_get_interval sys_sched_rr_get_interval_time32 -248 64 sched_rr_get_interval sys_sched_rr_get_interval -249 32 nanosleep sys_nanosleep_time32 -249 64 nanosleep sys_nanosleep -250 32 mremap sys_mremap -250 64 mremap sys_64_mremap -251 common _sysctl sys_ni_syscall -252 common getsid sys_getsid -253 common fdatasync sys_fdatasync -254 32 nfsservctl sys_ni_syscall sys_nis_syscall -254 64 nfsservctl sys_nis_syscall -255 common sync_file_range sys_sync_file_range compat_sys_sync_file_range -256 32 clock_settime sys_clock_settime32 -256 64 clock_settime sys_clock_settime -257 32 clock_gettime sys_clock_gettime32 -257 64 clock_gettime sys_clock_gettime -258 32 clock_getres sys_clock_getres_time32 -258 64 clock_getres sys_clock_getres -259 32 clock_nanosleep sys_clock_nanosleep_time32 -259 64 clock_nanosleep sys_clock_nanosleep -260 common sched_getaffinity sys_sched_getaffinity compat_sys_sched_getaffinity -261 common sched_setaffinity sys_sched_setaffinity compat_sys_sched_setaffinity -262 32 timer_settime sys_timer_settime32 -262 64 timer_settime sys_timer_settime -263 32 timer_gettime sys_timer_gettime32 -263 64 timer_gettime sys_timer_gettime -264 common timer_getoverrun sys_timer_getoverrun -265 common timer_delete sys_timer_delete -266 common timer_create sys_timer_create compat_sys_timer_create -# 267 was vserver -267 common vserver sys_nis_syscall -268 common io_setup sys_io_setup compat_sys_io_setup -269 common io_destroy sys_io_destroy -270 common io_submit sys_io_submit compat_sys_io_submit -271 common io_cancel sys_io_cancel -272 32 io_getevents sys_io_getevents_time32 -272 64 io_getevents sys_io_getevents -273 common mq_open sys_mq_open compat_sys_mq_open -274 common mq_unlink sys_mq_unlink -275 32 mq_timedsend sys_mq_timedsend_time32 -275 64 mq_timedsend sys_mq_timedsend -276 32 mq_timedreceive sys_mq_timedreceive_time32 -276 64 mq_timedreceive sys_mq_timedreceive -277 common mq_notify sys_mq_notify compat_sys_mq_notify -278 common mq_getsetattr sys_mq_getsetattr compat_sys_mq_getsetattr -279 common waitid sys_waitid compat_sys_waitid -280 common tee sys_tee -281 common add_key sys_add_key -282 common request_key sys_request_key -283 common keyctl sys_keyctl compat_sys_keyctl -284 common openat sys_openat compat_sys_openat -285 common mkdirat sys_mkdirat -286 common mknodat sys_mknodat -287 common fchownat sys_fchownat -288 32 futimesat sys_futimesat_time32 -288 64 futimesat sys_futimesat -289 common fstatat64 sys_fstatat64 compat_sys_fstatat64 -290 common unlinkat sys_unlinkat -291 common renameat sys_renameat -292 common linkat sys_linkat -293 common symlinkat sys_symlinkat -294 common readlinkat sys_readlinkat -295 common fchmodat sys_fchmodat -296 common faccessat sys_faccessat -297 32 pselect6 sys_pselect6_time32 compat_sys_pselect6_time32 -297 64 pselect6 sys_pselect6 -298 32 ppoll sys_ppoll_time32 compat_sys_ppoll_time32 -298 64 ppoll sys_ppoll -299 common unshare sys_unshare -300 common set_robust_list sys_set_robust_list compat_sys_set_robust_list -301 common get_robust_list sys_get_robust_list compat_sys_get_robust_list -302 common migrate_pages sys_migrate_pages compat_sys_migrate_pages -303 common mbind sys_mbind compat_sys_mbind -304 common get_mempolicy sys_get_mempolicy compat_sys_get_mempolicy -305 common set_mempolicy sys_set_mempolicy compat_sys_set_mempolicy -306 common kexec_load sys_kexec_load compat_sys_kexec_load -307 common move_pages sys_move_pages compat_sys_move_pages -308 common getcpu sys_getcpu -309 common epoll_pwait sys_epoll_pwait compat_sys_epoll_pwait -310 32 utimensat sys_utimensat_time32 -310 64 utimensat sys_utimensat -311 common signalfd sys_signalfd compat_sys_signalfd -312 common timerfd_create sys_timerfd_create -313 common eventfd sys_eventfd -314 common fallocate sys_fallocate compat_sys_fallocate -315 32 timerfd_settime sys_timerfd_settime32 -315 64 timerfd_settime sys_timerfd_settime -316 32 timerfd_gettime sys_timerfd_gettime32 -316 64 timerfd_gettime sys_timerfd_gettime -317 common signalfd4 sys_signalfd4 compat_sys_signalfd4 -318 common eventfd2 sys_eventfd2 -319 common epoll_create1 sys_epoll_create1 -320 common dup3 sys_dup3 -321 common pipe2 sys_pipe2 -322 common inotify_init1 sys_inotify_init1 -323 common accept4 sys_accept4 -324 common preadv sys_preadv compat_sys_preadv -325 common pwritev sys_pwritev compat_sys_pwritev -326 common rt_tgsigqueueinfo sys_rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo -327 common perf_event_open sys_perf_event_open -328 32 recvmmsg sys_recvmmsg_time32 compat_sys_recvmmsg_time32 -328 64 recvmmsg sys_recvmmsg -329 common fanotify_init sys_fanotify_init -330 common fanotify_mark sys_fanotify_mark compat_sys_fanotify_mark -331 common prlimit64 sys_prlimit64 -332 common name_to_handle_at sys_name_to_handle_at -333 common open_by_handle_at sys_open_by_handle_at compat_sys_open_by_handle_at -334 32 clock_adjtime sys_clock_adjtime32 -334 64 clock_adjtime sys_sparc_clock_adjtime -335 common syncfs sys_syncfs -336 common sendmmsg sys_sendmmsg compat_sys_sendmmsg -337 common setns sys_setns -338 common process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv -339 common process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev -340 32 kern_features sys_ni_syscall sys_kern_features -340 64 kern_features sys_kern_features -341 common kcmp sys_kcmp -342 common finit_module sys_finit_module -343 common sched_setattr sys_sched_setattr -344 common sched_getattr sys_sched_getattr -345 common renameat2 sys_renameat2 -346 common seccomp sys_seccomp -347 common getrandom sys_getrandom -348 common memfd_create sys_memfd_create -349 common bpf sys_bpf -350 32 execveat sys_execveat sys32_execveat -350 64 execveat sys64_execveat -351 common membarrier sys_membarrier -352 common userfaultfd sys_userfaultfd -353 common bind sys_bind -354 common listen sys_listen -355 common setsockopt sys_setsockopt sys_setsockopt -356 common mlock2 sys_mlock2 -357 common copy_file_range sys_copy_file_range -358 common preadv2 sys_preadv2 compat_sys_preadv2 -359 common pwritev2 sys_pwritev2 compat_sys_pwritev2 -360 common statx sys_statx -361 32 io_pgetevents sys_io_pgetevents_time32 compat_sys_io_pgetevents -361 64 io_pgetevents sys_io_pgetevents -362 common pkey_mprotect sys_pkey_mprotect -363 common pkey_alloc sys_pkey_alloc -364 common pkey_free sys_pkey_free -365 common rseq sys_rseq -# room for arch specific syscalls -392 64 semtimedop sys_semtimedop -393 common semget sys_semget -394 common semctl sys_semctl compat_sys_semctl -395 common shmget sys_shmget -396 common shmctl sys_shmctl compat_sys_shmctl -397 common shmat sys_shmat compat_sys_shmat -398 common shmdt sys_shmdt -399 common msgget sys_msgget -400 common msgsnd sys_msgsnd compat_sys_msgsnd -401 common msgrcv sys_msgrcv compat_sys_msgrcv -402 common msgctl sys_msgctl compat_sys_msgctl -403 32 clock_gettime64 sys_clock_gettime sys_clock_gettime -404 32 clock_settime64 sys_clock_settime sys_clock_settime -405 32 clock_adjtime64 sys_clock_adjtime sys_clock_adjtime -406 32 clock_getres_time64 sys_clock_getres sys_clock_getres -407 32 clock_nanosleep_time64 sys_clock_nanosleep sys_clock_nanosleep -408 32 timer_gettime64 sys_timer_gettime sys_timer_gettime -409 32 timer_settime64 sys_timer_settime sys_timer_settime -410 32 timerfd_gettime64 sys_timerfd_gettime sys_timerfd_gettime -411 32 timerfd_settime64 sys_timerfd_settime sys_timerfd_settime -412 32 utimensat_time64 sys_utimensat sys_utimensat -413 32 pselect6_time64 sys_pselect6 compat_sys_pselect6_time64 -414 32 ppoll_time64 sys_ppoll compat_sys_ppoll_time64 -416 32 io_pgetevents_time64 sys_io_pgetevents sys_io_pgetevents -417 32 recvmmsg_time64 sys_recvmmsg compat_sys_recvmmsg_time64 -418 32 mq_timedsend_time64 sys_mq_timedsend sys_mq_timedsend -419 32 mq_timedreceive_time64 sys_mq_timedreceive sys_mq_timedreceive -420 32 semtimedop_time64 sys_semtimedop sys_semtimedop -421 32 rt_sigtimedwait_time64 sys_rt_sigtimedwait compat_sys_rt_sigtimedwait_time64 -422 32 futex_time64 sys_futex sys_futex -423 32 sched_rr_get_interval_time64 sys_sched_rr_get_interval sys_sched_rr_get_interval -424 common pidfd_send_signal sys_pidfd_send_signal -425 common io_uring_setup sys_io_uring_setup -426 common io_uring_enter sys_io_uring_enter -427 common io_uring_register sys_io_uring_register -428 common open_tree sys_open_tree -429 common move_mount sys_move_mount -430 common fsopen sys_fsopen -431 common fsconfig sys_fsconfig -432 common fsmount sys_fsmount -433 common fspick sys_fspick -434 common pidfd_open sys_pidfd_open -# 435 reserved for clone3 -436 common close_range sys_close_range -437 common openat2 sys_openat2 -438 common pidfd_getfd sys_pidfd_getfd -439 common faccessat2 sys_faccessat2 diff --git a/linux-user/sparc64/syscallhdr.sh b/linux-user/sparc64/syscallhdr.sh deleted file mode 100644 index 08c7e39bb3fe..000000000000 --- a/linux-user/sparc64/syscallhdr.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/sh -# SPDX-License-Identifier: GPL-2.0 - -in="$1" -out="$2" -my_abis=`echo "($3)" | tr ',' '|'` -prefix="$4" -offset="$5" - -fileguard=LINUX_USER_SPARC64_`basename "$out" | sed \ - -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ - -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'` -grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | ( - printf "#ifndef %s\n" "${fileguard}" - printf "#define %s\n" "${fileguard}" - printf "\n" - - nxt=0 - while read nr abi name entry compat ; do - if [ -z "$offset" ]; then - printf "#define TARGET_NR_%s%s\t%s\n" \ - "${prefix}" "${name}" "${nr}" - else - printf "#define TARGET_NR_%s%s\t(%s + %s)\n" \ - "${prefix}" "${name}" "${offset}" "${nr}" - fi - nxt=$((nr+1)) - done - - printf "\n" - printf "#endif /* %s */" "${fileguard}" -) > "$out" diff --git a/linux-user/sparc64/target_cpu.h b/linux-user/sparc64/target_cpu.h deleted file mode 100644 index b22263d2dbe9..000000000000 --- a/linux-user/sparc64/target_cpu.h +++ /dev/null @@ -1 +0,0 @@ -#include "../sparc/target_cpu.h" diff --git a/linux-user/sparc64/target_elf.h b/linux-user/sparc64/target_elf.h deleted file mode 100644 index 023b49b74375..000000000000 --- a/linux-user/sparc64/target_elf.h +++ /dev/null @@ -1 +0,0 @@ -#include "../sparc/target_elf.h" diff --git a/linux-user/sparc64/target_fcntl.h b/linux-user/sparc64/target_fcntl.h deleted file mode 100644 index 053c7742579f..000000000000 --- a/linux-user/sparc64/target_fcntl.h +++ /dev/null @@ -1 +0,0 @@ -#include "../sparc/target_fcntl.h" diff --git a/linux-user/sparc64/target_signal.h b/linux-user/sparc64/target_signal.h deleted file mode 100644 index 6a7d57d0243c..000000000000 --- a/linux-user/sparc64/target_signal.h +++ /dev/null @@ -1 +0,0 @@ -#include "../sparc/target_signal.h" diff --git a/linux-user/sparc64/target_structs.h b/linux-user/sparc64/target_structs.h deleted file mode 100644 index cbcbc4602a69..000000000000 --- a/linux-user/sparc64/target_structs.h +++ /dev/null @@ -1 +0,0 @@ -#include "../sparc/target_structs.h" diff --git a/linux-user/sparc64/target_syscall.h b/linux-user/sparc64/target_syscall.h deleted file mode 100644 index 164a5fc6322f..000000000000 --- a/linux-user/sparc64/target_syscall.h +++ /dev/null @@ -1 +0,0 @@ -#include "../sparc/target_syscall.h" diff --git a/linux-user/sparc64/termbits.h b/linux-user/sparc64/termbits.h deleted file mode 100644 index 54ddfee3ba34..000000000000 --- a/linux-user/sparc64/termbits.h +++ /dev/null @@ -1 +0,0 @@ -#include "../sparc/termbits.h" From patchwork Mon May 17 18:13:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440191 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1342099jac; Mon, 17 May 2021 11:37:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxdEksrwEoO3Jgq3PInRHDzscwz0DqIx6ihEY3wGzvEL7DDpBy2Qmo5aqGQ3uXhXPCIYnox X-Received: by 2002:a05:6e02:507:: with SMTP id d7mr892896ils.19.1621276657682; Mon, 17 May 2021 11:37:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276657; cv=none; d=google.com; s=arc-20160816; b=GaMWBnnJDfQcNxvXxAvGm518M+kz/LkGeyAv9rw5kd96tjlofcqc1e2vMOzXCv3K20 684BT7XrfXCWaJv/D98pY55U+jLzJoA5A3SNRW3mjpJwR46/ML5efsIkZ8Z9qomFPCnu j2UFzRhQhRaEQ07dZGnSW9uGn1n99StzLGd2wxTcarIg5kXnfIKvttcFljqgnj1P1K/c uqb/9KUHD/tbQSsrS7RKhqPGKWsZGrjj/Xdv0qTjDqZ0vmm/5zJ74vh7t0wiOsX+UQvl T9l7Xy9iegF7sZDhZApn7wvIQ6bMX2XZ/HsAGaXOS7wi0X4wxOEyfpsRy1A4fsKLcwR7 Ip1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=aETM7cX6Fn2IOowAJApdnIrW/Wt3lUGHDrN0sMwrFLc=; b=IZkPtWNT81nm9iWXAEJfeqOHRBCTmwRGFNZIWEfaH5uY8aaLWhh8KCIEh0nlQyXTui TMv+AWSoBa0zxX8u6sUsGitanphnvzy5OnozFGqJ9TSBxrGlICqd8FetFyDv5ltdRgf/ PJj9q0+3hGQ1sAqArCtOX/1kYcz5fIoOAOWbOpPyWQqV+DZQBE2Gy+fJZe7moz5mHxz4 E0OPDK1L1HZElC6kxtzyjfQ7IXSBUyHhPYpNsinsiai3kQCOAIncb8WP5creY+ptHdI2 SoJYDaFS1hn7sYVnJdVxf/tThk/aLfBk0BLPARSSWFQgtzGSAoiGYLqgY78lH/TR8d3e xhyg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id l21si21845896iow.25.2021.05.17.11.37.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:37:37 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:47812 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii7V-0007g8-3O for patch@linaro.org; Mon, 17 May 2021 14:37:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33832) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlR-00062D-JI for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:49 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:58145) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlH-0004Qy-K1 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:49 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MHWvH-1leWuS06TJ-00DW0V; Mon, 17 May 2021 20:14:37 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 19/59] linux-user/sparc: Remove target_sigcontext as unused Date: Mon, 17 May 2021 20:13:44 +0200 Message-Id: <20210517181424.8093-20-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:z1xx6rmZUGv7FNGN31N81HKTc7xt0hSgaJTAHgUyI/0bHxLLuzQ kKYPS0VuvffteZjC0QbasWOW0C7cd9SdSRgsRPFyKc+yTBk4JwT0x6BPqjzCkpsykI5/fst vNXSOvY2hx91Ty04GE1iQJuvyauVoTY06N6/S6FaYPFSH17jLui96AW04bm12xF6UWFgu3v RX6RKgtt+14hDfYcI13dg== X-UI-Out-Filterresults: notjunk:1; V03:K0:AQ3C3vF78lg=:pPEny69aGRRPCAe5Ic9yBw HDFGzoh/0WNndCTehxDNsQ+LAM/sGyzWMCeAoA76OFvLwkfI2fJaqlcZK+sooQAaUpkeyjPy8 i2vc5oxwHdiRDTh06NkVYr5yXPJbn4H+lRuEmZET4tGMXabX/X/ROTcplQx+HT5GTZe89OxvH FZ3GIUYdCFdF6QICIT3yLLLM6Cb8EUCYrMNiKNsCz9Pa3uZor1UFF9mrqlSt2cyuAFX1IDYXV /A22vTLKVhz8Mdod7+Wno34Ji8BngZ1i1XdVAzNVn1U0qNyUHGOyec0S0nj7gR0MFHPh3ES8G ASC0/t4rhevQGlHYnqwLdVhZZ7y4Lvs0PuF9bf5tbgnQoJCwPRsnZ30qHnY5P3g6xRaVBlC30 XKPL6p1UsVpoJ915iP4DuawJwqlDRWys9WueuI7os3HLZNuoUZFnqUWj3Yit2LtHcGlptShir 48iBkYvGc2w5ghYiluj0BtIauZhv5oONS3A3PQRUigEt39cUvoNfiPFDI2woKl9+lVF4a/ab9 FPWTQSAN5OAZgoEUCBj7IY= Received-SPF: none client-ip=217.72.192.75; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-13-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 28 ---------------------------- 1 file changed, 28 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 76579093a88c..3d068e095508 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -21,34 +21,6 @@ #include "signal-common.h" #include "linux-user/trace.h" -#define __SUNOS_MAXWIN 31 - -/* This is what SunOS does, so shall I. */ -struct target_sigcontext { - abi_ulong sigc_onstack; /* state to restore */ - - abi_ulong sigc_mask; /* sigmask to restore */ - abi_ulong sigc_sp; /* stack pointer */ - abi_ulong sigc_pc; /* program counter */ - abi_ulong sigc_npc; /* next program counter */ - abi_ulong sigc_psr; /* for condition codes etc */ - abi_ulong sigc_g1; /* User uses these two registers */ - abi_ulong sigc_o0; /* within the trampoline code. */ - - /* Now comes information regarding the users window set - * at the time of the signal. - */ - abi_ulong sigc_oswins; /* outstanding windows */ - - /* stack ptrs for each regwin buf */ - char *sigc_spbuf[__SUNOS_MAXWIN]; - - /* Windows to restore after signal */ - struct { - abi_ulong locals[8]; - abi_ulong ins[8]; - } sigc_wbuf[__SUNOS_MAXWIN]; -}; /* A Sparc stack frame */ struct sparc_stackf { abi_ulong locals[8]; From patchwork Mon May 17 18:13:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440183 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1337392jac; Mon, 17 May 2021 11:30:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwXES+OXmeKl1Uf7jAseCzTOS5ghJvOZ/BA7JO6MMpLpC2Xpe3fZBuyeHPWcnbiVY9mo3fq X-Received: by 2002:aca:d404:: with SMTP id l4mr355854oig.160.1621276227236; Mon, 17 May 2021 11:30:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276227; cv=none; d=google.com; s=arc-20160816; b=fUNEfz4SkUzPcU/whKlcKfhYg5/HFMTVqvMlcatpQN9Kn6DNJ1LeUjr51RbamwEJA/ EMZ3OvxFaHpCDZEN6Am6cvVmu76pe+MKgqbOeey7mamcUEPeRljZIf5poHObnJwe6MaO MN4LD8zuWQW+mCiipdX6A1y3BuP3XHy9JRAxd5RhTx5ElJQg9J5FZr/cTo2CRY5ELXH/ oj06FwgIWO8WFRdmAVNqezhp8mvLy4J3zoF048AwyqWfZE5/TxTMaR0GwtftwLeE4+58 38eMC0BP8jbYOO4lv7bb3f63kVCkRiPAvgFEZn88F/wEOioMx0s+wx01evwNV2/53XQX xIbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=bKzskBAJgP7icxaeKtmII4rS816hMzGi1KXbx6iXGaE=; b=LqVCCNWXoftG6sfzXhkKjeio4RTROBfFzqe+3xV4BYfcSeBsOsdHICyxp0A2YGDigH jmlHSqUJU8vhqYqC/uzFTEdvmcQKLXWCWxCB26JUhWdlrLiOEZCnKVNcUJFHI4gsymg6 AWIH+RUYHxlPFd4zsq6qHqp2xYbpDjQwLDZoAP2sy2QA1eeRDMRgzlcWOlOLWCWKaumF GnlKqSpOC+P+Re49ofgbWnz5/dsxSZK1qZYpDGU/fI+8CF6tAflGe6MkIKQroxutBNR5 bQV9lzV7WLIc8PUwhql4Y3AB2aHZjMJ3WCsPQ3wjjWhewCywKLY7vTlbgzDwcRje6gLa v2cw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id g16si11472269otq.139.2021.05.17.11.30.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:30:27 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:33190 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii0Y-0006AX-IA for patch@linaro.org; Mon, 17 May 2021 14:30:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33856) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlS-00065L-Al for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:50 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:49879) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlH-0004R1-L2 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:49 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MgNtR-1lGmvq23J9-00hrwH; Mon, 17 May 2021 20:14:37 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 20/59] linux-user/sparc: Remove target_rt_signal_frame as unused Date: Mon, 17 May 2021 20:13:45 +0200 Message-Id: <20210517181424.8093-21-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:BwlfnC64NEJlz4qHut/WAaHeQIyWA/qbhMafmv/KGVtKYplKIsX 7vqcghO50YNSkrwjJxdkBFoE7tseqxqHWVy1/9Xvvku+q//nY2sCX8x8mZKrxNQZ0DopWFh 30NRBB/h7LlV6Bf6uuTo6N2WrubzrOc+abEsQ3sn/3CSjrigcQcWYQUE5cNkHQ7J208Ws1r ns5P7czxMMvQBrefTD+4Q== X-UI-Out-Filterresults: notjunk:1; V03:K0:0NecXZrqtI4=:dpu1kQlkKO7wQ4j9b7F3Qe qD5J3t3jonnVn1CSGYxaaZQOMMHN6d+i8FIOJR/2OFLi6JQMqYKSDu6zc86vRp3CLNR0jBmqL z6N2ken3ylf+MFibJrRymx2lrDkmoGQvZeEwvhCtvVkN9LRhLc+3cH96AS8gcFxCQFskIw/bs ZO+Z7R9sBwmN9Egsw30hVieqnR5Eh3H8AKBWcYUPEQHW7i+OTu6iebk/Ml/LoOUWpV9VRJWXE PPP85s5/CpUXefEeHrsICGgHxOuTsp3gL6CoWOJTt9CMtuaNHn0KRgN03Irjn4iXR7ad695+O N5N73w82tTzy19oOIug+8LsI2IwsDX6cKmP8U/u5bxjcCqnIXQ291AvsfZnVA2cdIhCOt0f42 sabyS1zpZmCyS5Dsdh6xYXFKwWcEdpvzGPakJK3hkO2YxyS/ktj2wGBMzlyekE+QWFGRtqe/+ jfm/v6kHI5MFTeVctCjWs+8YhdcDBEOmJrRCxzh4Vzk2RCRlV4SNkudym+kfcp5krFdbCWUTF F3YEicp7pRbKiNWxuRPeKU= Received-SPF: none client-ip=217.72.192.75; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson It's wrong anyway. Remove it for now. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-14-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 11 ----------- 1 file changed, 11 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 3d068e095508..29c5e3b0c0be 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -64,17 +64,6 @@ struct target_signal_frame { abi_ulong extra_size; /* Should be 0 */ qemu_siginfo_fpu_t fpu_state; }; -struct target_rt_signal_frame { - struct sparc_stackf ss; - siginfo_t info; - abi_ulong regs[20]; - sigset_t mask; - abi_ulong fpu_save; - uint32_t insns[2]; - stack_t stack; - unsigned int extra_size; /* Should be 0 */ - qemu_siginfo_fpu_t fpu_state; -}; static inline abi_ulong get_sigframe(struct target_sigaction *sa, CPUSPARCState *env, From patchwork Mon May 17 18:13:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440176 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1331806jac; Mon, 17 May 2021 11:22:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyPVnrPXuzPZtjLqv4TPs+kuHJuJ4ncZ8P5fVvrI62YTLWlSzClBYAoklx/9zs12ZHKD75l X-Received: by 2002:a02:688:: with SMTP id 130mr1352885jav.48.1621275736529; Mon, 17 May 2021 11:22:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621275736; cv=none; d=google.com; s=arc-20160816; b=YdhR97G80VHMxssdzEVVGLKpWIXA9yRYPv4VD2auE7T/aNhqleRyk66e4i+AZV4KNa kLjWxUFWGn/VsbK9djDpsGdanK5s46OFwS4dEKxwvNVVXPbnQ5rZHdcmOVeip3GhLNTD aRGTNPowWzJrIxVOsMuh51OyxpstMThXjaCPtG5W0UU1ptMwolZFBvidoeXu3IiyYR1b 4mIAeUwwBO5NqG8X0saMekTr7UtOuH7fa+xtk90qtYesdyYdfkpT1/Mn3Z0WRAyPMTJt JUf4QwECZY+ZL2GUKqm2ornTb+u5ygKlCEVYZ6VD0Zu0hsahb1eKZ0PNSjoPfjGdEoun qSmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=B21OUt/81fu6DBqGxWAmFfagh4c68Y/SSrdwK2Mwu7s=; b=Ai+1iVDdXCV/pNmpaVXbCIzcUncI8caIaS8DxcZg5j/Qy7ziR7bRyekMXWK2Bq4lBo Wp8ZtgEankE7AS8LMm35Prt2GtnJv6zvB9oj/D0vJY1vYhXW6f8/xYr+Qyxulp/2etQF pHatbco1AYvWybAROqljPUVcrexFpk73+Z3W6ifx04Ii6pM+vwGNTYnvG9ScWt4+d+bK 2wUv0BU2yPTsKCj6ytZ/EqG/vQJdiqADBJy1ShG7EBIH0n5FaZdameCTWkpro2fbZOUz 3fUydbwvWUk4CU8uo0sZ/24qn4kjKvjvDYIUVmuFTIaLOaVdqqFZyHgmVf0lLyBKz//G QHwA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id o21si19927832jat.63.2021.05.17.11.22.16 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:22:16 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:41264 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihsd-00012E-Ue for patch@linaro.org; Mon, 17 May 2021 14:22:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33884) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlT-0006A6-Lh for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:51 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:34337) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlL-0004RE-KF for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:51 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MCsDe-1lZs4b45Tc-008rAc; Mon, 17 May 2021 20:14:38 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 21/59] linux-user/sparc: Fix the stackframe structure Date: Mon, 17 May 2021 20:13:46 +0200 Message-Id: <20210517181424.8093-22-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:hJQD0zN7sluXRTbQyMIeWsitxY/jEQnLajZroqIKubbs8rtqUAb t2yupmbD6+6+rHEYuRfLtP8Ono1ZcxsDu2bSnLnY+TsxvH3k7id1l8AZuA39hJWLuT8tzi5 KFyG6tetiUthyxjf+PYAKeJgKMYKfeQMTWSYiCpXxA4JozYzQkjHSWWLxU38Mc1GLkFYvuQ IhnOJIL0BOMBzdgjMx7zA== X-UI-Out-Filterresults: notjunk:1; V03:K0:KdQbGm/jwt4=:zevkVLPgm4p5sMnsNi5tWH M7f55QNk2LI61nOdTumMBwWXgfd1QHlOvffS1iM32TcKgs+YsbbMZLeaCH/WyFr+7XXZ5dnoO gUlPeSr1k/GslQL/nRomaD3rqo1M6Pw+4IvmEj1peJorRmnxx7m84OVLym2/24MymgKW3/knc uwD3ZS5kr2/F1t5pbxRt4Mn3xtLYOEZ9C8e90L2aa8J45Kmqt4e17nAR0Df/NamMa6M6YD3dX YVbIZn+SyhiYHR7qgLGKKx/XPLTQo6fTUtxP+8DOcpot9Q2wmw5W8k8E4ag+5a0+pn8ZaFaqU hIxaC+vMyV/z1b8P4cENJXty9VdaP/IIeSBZlHn6k/vblr5Mm3VqHO2IYB48MVLhWGnHqHaSc nRPIqrtHu2kOoV1Md8z/hk+Mg5Kcc8W2F33wolRw/E1HXSJUmQPxc6jJSAy3us7HTt0mNOURr v7s7nSl7pwNf0vWl6SlV0tBVjk8bPBZU0t2xyjNQm0cKnEth7ZdtiuOkYVxeOfpif1+smkC3r hCaZN8kvhOd4aPciQGPbRA= Received-SPF: none client-ip=217.72.192.74; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Move target_reg_window up and use it. Fold structptr and xxargs into xargs -- the use of a host pointer was incorrect anyway. Rename the structure to target_stackf for consistency. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-15-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 29c5e3b0c0be..3474098641a6 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -21,16 +21,26 @@ #include "signal-common.h" #include "linux-user/trace.h" -/* A Sparc stack frame */ -struct sparc_stackf { +/* A Sparc register window */ +struct target_reg_window { abi_ulong locals[8]; abi_ulong ins[8]; - /* It's simpler to treat fp and callers_pc as elements of ins[] - * since we never need to access them ourselves. - */ - char *structptr; - abi_ulong xargs[6]; - abi_ulong xxargs[1]; +}; + +/* A Sparc stack frame. */ +struct target_stackf { + /* + * Since qemu does not reference fp or callers_pc directly, + * it's simpler to treat fp and callers_pc as elements of ins[], + * and then bundle locals[] and ins[] into reg_window. + */ + struct target_reg_window win; + /* + * Similarly, bundle structptr and xxargs into xargs[]. + * This portion of the struct is part of the function call abi, + * and belongs to the callee for spilling argument registers. + */ + abi_ulong xargs[8]; }; typedef struct { @@ -56,7 +66,7 @@ typedef struct { struct target_signal_frame { - struct sparc_stackf ss; + struct target_stackf ss; __siginfo_t info; abi_ulong fpu_save; uint32_t insns[2] QEMU_ALIGNED(8); @@ -150,10 +160,10 @@ void setup_frame(int sig, struct target_sigaction *ka, } for (i = 0; i < 8; i++) { - __put_user(env->regwptr[i + WREG_L0], &sf->ss.locals[i]); + __put_user(env->regwptr[i + WREG_L0], &sf->ss.win.locals[i]); } for (i = 0; i < 8; i++) { - __put_user(env->regwptr[i + WREG_I0], &sf->ss.ins[i]); + __put_user(env->regwptr[i + WREG_I0], &sf->ss.win.ins[i]); } if (err) goto sigsegv; @@ -349,12 +359,6 @@ struct target_ucontext { target_mcontext_t tuc_mcontext; }; -/* A V9 register window */ -struct target_reg_window { - abi_ulong locals[8]; - abi_ulong ins[8]; -}; - /* {set, get}context() needed for 64-bit SparcLinux userland. */ void sparc64_set_context(CPUSPARCState *env) { From patchwork Mon May 17 18:13:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440179 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1334569jac; Mon, 17 May 2021 11:26:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxmWDQ+44PEXKmYPY/L5GUl49bdNwgBCOpqoCiiao5+FqvzgiofLHomxH1MLRlmf2EABImn X-Received: by 2002:a02:6d09:: with SMTP id m9mr1279641jac.131.1621275963262; Mon, 17 May 2021 11:26:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621275963; cv=none; d=google.com; s=arc-20160816; b=UjAgAhhvlKLP83+11hggksHJEsNi6qfxkWarcSFZqrzkNkOuCnmnraFHzF3uCJxUbJ MHI/4ZA7QdldDWHKlYMuwTXTbIL7yD/CBpc+Kf9C7XUZeAjhAaanPWQP9yVRvDqTRZuM T4RsiUWejUjr8WbKiVaR9YPs1eEVaanIA7wduoBHCYUPPqJ5S/lgJjGkv3dBwYlOOLJe oKnrAIm65PDrTctwax/J59wCggmbNbIJqlKwD3/P3mwAj0WhrHv3R/UulnAWkXDjlSOb 4HaKEBFGpqQdg0zePznLPiiCQ4uxtbHqGAz+rHBIQ7Q5Wke9oPE/wVgOPzESHLGK5dV1 BDtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=0+TUh1C+a2WQZAOVDg1ev1i53I0ztM+s+oValm/gNw8=; b=NGZT6aZij0uni47ezqRPilVU6oNm5Iif73lJubt+TKaOeinfw1c/pzKlCti736wlvC bSWD8nn9puw+n50QfhQ/I8wlAGmA9VXLDXhepW1c32vSjGH0+udiYCaAxNwi1vD9MiMv Hg/9ignzfqUC6a9myQDbc6TKeCrWaI/6oiPir26rFXl5Cpu/xVJkS252rXGRpbNctKg3 dtIWGhOWD4LNLMRRaGqGOI3a2V+PXbFCm/s+ZkpaAOw32s6iDcobZM3HMN0AW7nvnERB /TntJ5+snP8Y6O6XIaZ3eYegGV40T3xr217gn8sh4nuJ9OAxy4GKsFuxe1vjnKz7fryB cjBg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id o1si20165421jat.48.2021.05.17.11.26.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:26:03 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:49794 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihwI-0006gO-K1 for patch@linaro.org; Mon, 17 May 2021 14:26:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33898) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlU-0006D3-8E for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:52 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:38877) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlM-0004RM-7U for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:51 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MUXd0-1lrXTy1cv2-00QWZy; Mon, 17 May 2021 20:14:38 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 22/59] linux-user/sparc: Use target_pt_regs Date: Mon, 17 May 2021 20:13:47 +0200 Message-Id: <20210517181424.8093-23-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:kgXNC5uHMrgUj89/WzaMWhJFwKXB8v5LVDi3IWw/jb7LutF0Xw6 upiredvxVsCKIlAAhDBRGU7BesqP5B0pDyjHPpqMcZ5nyVCLksiGPnOI6Ge6X53iqt/6bGM rV+iisr0QoZswDUGM2njRb6lXtFPwJqCvNBvRYE0qBaE/atPOZznkWNRVdwx1XVJOigIUwd jG/AmreJYlYGbg38ogR5A== X-UI-Out-Filterresults: notjunk:1; V03:K0:ZOxVYZvaB9Y=:9zJV8q1cOnUa4BS9mf/wHV TAlOJYJxY2LwTPg39mrq8mpGRZRprhL0WaIneKPV4a8xV5u1rQQ2hNjQUyuAeBrs0FFOM36sr F41gJwHjLBhduJZIkYre+z16KmrUmtQDpSPqXa+XkIp3Zjy6LJUtoGpK7xVudtPBjX5k59DGg TQy54/upNg05CU1IQo4Qq0fGv/RMqC4ks9QZVdx4C+U2S3S2wRx+Hfp0fEtxIoNj3tXHJjFMu qlXteHfiOA0sUpSCHQMl695vdDJa/beBh7Pn8edVf9aREPRYcXjcOCyQYJ0T9tN4LwHjKLHqi dhTm905EwheGguqYz1wP5qaAIviAJfaGIKLU6rec/K2yAiT9ZHSNU+M+Ig11kAHNu7UxZop4Y wS0PgMqvcrjjvaEYJ59EtoPwyclh01Fkbj3IDo14zjUXFtBuxkDfde/IOTPslMr0jxDrY/9l8 4vJiwQ5BNp29cmX8E9t0NBW6/E5wqz4TY9Hb59RoOZZrQnM6jCsdl0qM0Jw95OH4UNbMk7H7t G/wNhwOiP0+LqWDj0SDA3c= Received-SPF: none client-ip=212.227.17.24; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Replace __siginfo_t with target_pt_regs, and move si_mask into target_signal_frame directly. Extract save/restore functions for target_pt_regs. Adjust for sparc64 tstate. Use proper get/put functions for psr. Turns out we were already writing to si_mask twice, so no need to handle that in the new functions. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-16-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 123 ++++++++++++++++++++------------------ 1 file changed, 65 insertions(+), 58 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 3474098641a6..0d9305818f8c 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -43,17 +43,6 @@ struct target_stackf { abi_ulong xargs[8]; }; -typedef struct { - struct { - abi_ulong psr; - abi_ulong pc; - abi_ulong npc; - abi_ulong y; - abi_ulong u_regs[16]; /* globals and ins */ - } si_regs; - int si_mask; -} __siginfo_t; - typedef struct { abi_ulong si_float_regs[32]; unsigned long si_fsr; @@ -67,7 +56,8 @@ typedef struct { struct target_signal_frame { struct target_stackf ss; - __siginfo_t info; + struct target_pt_regs regs; + uint32_t si_mask; abi_ulong fpu_save; uint32_t insns[2] QEMU_ALIGNED(8); abi_ulong extramask[TARGET_NSIG_WORDS - 1]; @@ -103,23 +93,61 @@ static inline abi_ulong get_sigframe(struct target_sigaction *sa, return sp; } -static int -setup___siginfo(__siginfo_t *si, CPUSPARCState *env, abi_ulong mask) +static void save_pt_regs(struct target_pt_regs *regs, CPUSPARCState *env) { - int err = 0, i; - - __put_user(env->psr, &si->si_regs.psr); - __put_user(env->pc, &si->si_regs.pc); - __put_user(env->npc, &si->si_regs.npc); - __put_user(env->y, &si->si_regs.y); - for (i=0; i < 8; i++) { - __put_user(env->gregs[i], &si->si_regs.u_regs[i]); + int i; + +#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) + __put_user(sparc64_tstate(env), ®s->tstate); + /* TODO: magic should contain PT_REG_MAGIC + %tt. */ + __put_user(0, ®s->magic); +#else + __put_user(cpu_get_psr(env), ®s->psr); +#endif + + __put_user(env->pc, ®s->pc); + __put_user(env->npc, ®s->npc); + __put_user(env->y, ®s->y); + + for (i = 0; i < 8; i++) { + __put_user(env->gregs[i], ®s->u_regs[i]); } - for (i=0; i < 8; i++) { - __put_user(env->regwptr[WREG_O0 + i], &si->si_regs.u_regs[i + 8]); + for (i = 0; i < 8; i++) { + __put_user(env->regwptr[WREG_O0 + i], ®s->u_regs[i + 8]); + } +} + +static void restore_pt_regs(struct target_pt_regs *regs, CPUSPARCState *env) +{ + int i; + +#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) + /* User can only change condition codes and %asi in %tstate. */ + uint64_t tstate; + __get_user(tstate, ®s->tstate); + cpu_put_ccr(env, tstate >> 32); + env->asi = extract64(tstate, 24, 8); +#else + /* + * User can only change condition codes and FPU enabling in %psr. + * But don't bother with FPU enabling, since a real kernel would + * just re-enable the FPU upon the next fpu trap. + */ + uint32_t psr; + __get_user(psr, ®s->psr); + env->psr = (psr & PSR_ICC) | (env->psr & ~PSR_ICC); +#endif + + /* Note that pc and npc are handled in the caller. */ + + __get_user(env->y, ®s->y); + + for (i = 0; i < 8; i++) { + __get_user(env->gregs[i], ®s->u_regs[i]); + } + for (i = 0; i < 8; i++) { + __get_user(env->regwptr[WREG_O0 + i], ®s->u_regs[i + 8]); } - __put_user(mask, &si->si_mask); - return err; } #define NF_ALIGNEDSZ (((sizeof(struct target_signal_frame) + 7) & (~7))) @@ -129,7 +157,7 @@ void setup_frame(int sig, struct target_sigaction *ka, { abi_ulong sf_addr; struct target_signal_frame *sf; - int sigframe_size, err, i; + int sigframe_size, i; /* 1. Make sure everything is clean */ //synchronize_user_stack(); @@ -143,18 +171,14 @@ void setup_frame(int sig, struct target_sigaction *ka, if (!sf) { goto sigsegv; } -#if 0 - if (invalid_frame_pointer(sf, sigframe_size)) - goto sigill_and_return; -#endif /* 2. Save the current process state */ - err = setup___siginfo(&sf->info, env, set->sig[0]); + save_pt_regs(&sf->regs, env); __put_user(0, &sf->extra_size); //save_fpu_state(regs, &sf->fpu_state); //__put_user(&sf->fpu_state, &sf->fpu_save); - __put_user(set->sig[0], &sf->info.si_mask); + __put_user(set->sig[0], &sf->si_mask); for (i = 0; i < TARGET_NSIG_WORDS - 1; i++) { __put_user(set->sig[i + 1], &sf->extramask[i]); } @@ -165,16 +189,14 @@ void setup_frame(int sig, struct target_sigaction *ka, for (i = 0; i < 8; i++) { __put_user(env->regwptr[i + WREG_I0], &sf->ss.win.ins[i]); } - if (err) - goto sigsegv; /* 3. signal handler back-trampoline and parameters */ env->regwptr[WREG_SP] = sf_addr; env->regwptr[WREG_O0] = sig; env->regwptr[WREG_O1] = sf_addr + - offsetof(struct target_signal_frame, info); + offsetof(struct target_signal_frame, regs); env->regwptr[WREG_O2] = sf_addr + - offsetof(struct target_signal_frame, info); + offsetof(struct target_signal_frame, regs); /* 4. signal handler */ env->pc = ka->_sa_handler; @@ -218,7 +240,7 @@ long do_sigreturn(CPUSPARCState *env) { abi_ulong sf_addr; struct target_signal_frame *sf; - abi_ulong up_psr, pc, npc; + abi_ulong pc, npc; target_sigset_t set; sigset_t host_set; int i; @@ -234,29 +256,17 @@ long do_sigreturn(CPUSPARCState *env) if (sf_addr & 3) goto segv_and_exit; - __get_user(pc, &sf->info.si_regs.pc); - __get_user(npc, &sf->info.si_regs.npc); + __get_user(pc, &sf->regs.pc); + __get_user(npc, &sf->regs.npc); if ((pc | npc) & 3) { goto segv_and_exit; } /* 2. Restore the state */ - __get_user(up_psr, &sf->info.si_regs.psr); - - /* User can only change condition codes and FPU enabling in %psr. */ - env->psr = (up_psr & (PSR_ICC /* | PSR_EF */)) - | (env->psr & ~(PSR_ICC /* | PSR_EF */)); - + restore_pt_regs(&sf->regs, env); env->pc = pc; env->npc = npc; - __get_user(env->y, &sf->info.si_regs.y); - for (i=0; i < 8; i++) { - __get_user(env->gregs[i], &sf->info.si_regs.u_regs[i]); - } - for (i=0; i < 8; i++) { - __get_user(env->regwptr[i + WREG_O0], &sf->info.si_regs.u_regs[i + 8]); - } /* FIXME: implement FPU save/restore: * __get_user(fpu_save, &sf->fpu_save); @@ -267,11 +277,8 @@ long do_sigreturn(CPUSPARCState *env) * } */ - /* This is pretty much atomic, no amount locking would prevent - * the races which exist anyways. - */ - __get_user(set.sig[0], &sf->info.si_mask); - for(i = 1; i < TARGET_NSIG_WORDS; i++) { + __get_user(set.sig[0], &sf->si_mask); + for (i = 1; i < TARGET_NSIG_WORDS; i++) { __get_user(set.sig[i], &sf->extramask[i - 1]); } From patchwork Mon May 17 18:13:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440197 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1345883jac; Mon, 17 May 2021 11:42:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyKg7r6KJyF8ObkC+MlYejZFlFVOUrFJQr3jzjrptDg8Eobr30CxxIkn++yKmq5AW3KPCta X-Received: by 2002:a05:6602:280d:: with SMTP id d13mr1136975ioe.90.1621276975274; Mon, 17 May 2021 11:42:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276975; cv=none; d=google.com; s=arc-20160816; b=L0K3ADlC1RpG4HxIx9GW6ZtoTpJ21ouEWM+isNkPXDqVVruonoKyfhKjHUnWTLDcT1 i+jsZxgvINQKT2Agl/vtuC28DQWNBR1qS4GSt2aTgufJgS3UaXZzjUlx1VLuOgh3vFm/ ascGuGk022RkWN/qxaUk1knqyE6V+rOOe3lwVMrAh/AMCond7PUIXHci3w5QW34kpKU8 Vu/HoujbYSlQX53XwiMJcIo50o/QXvjuIWje8sujd1ItjwMMkcrzXg2fyVGnK/CTHRl7 EqlEx9kfH7IE9rcGMF6K5MzmBzU/YF9x9zcczopDsb4UoCB6L9XoQFN0KLzs45++kDKs Kvjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=RjmzNiqX/HTvl9sPUYpG2flxCzIiFrj0/u9nqI9FbRc=; b=UxU081IQcc+hmmPu6XWNJYe212lJJ2TmMwnK4hLBGv2looT+GbHB39KUzYQ13ApOmI p1q9fYkxOcqiEMFTRpFyzyx+gWROW15RgxK4vPxgWnFBRoWm8W71isLXqXGRz+UcmoG7 3WIaRF7QbseBYIdtxIllNifwayjjlqyZWhdpQZH/9iCEJtdaCoMsf+3rBxSOtzbbNUXo WzeXz5on1rBefWy2j9Nm2BW4JRxV4V4KDCFpVTBBntZSNhireLzL4cOcy+t7c1Cu6H/F ypQkao75hkpsE0fGcs8yFlapYZwiYJ99B407cz9HYFMH8xz0xOy/+D1ZIDJ//G/Ui19+ hblw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id p5si19816454ilm.11.2021.05.17.11.42.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:42:55 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:34310 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiCc-0000vY-Oc for patch@linaro.org; Mon, 17 May 2021 14:42:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33994) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihla-0006Pz-U0 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:58 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:34187) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlM-0004RO-UG for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:58 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MZCKd-1lwCJr3Zrd-00VBPr; Mon, 17 May 2021 20:14:39 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 23/59] linux-user/sparc: Split out save_reg_win Date: Mon, 17 May 2021 20:13:48 +0200 Message-Id: <20210517181424.8093-24-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:/teubC/BxMMR9XwAm+O8TAizN8KfXAWMqW2Zy0fVuntw+ggTZeX 9V3w5oE/cjhuUuD342oz8lgGtKFuYNKqri4i6jpf4lI2gfzz2G8d13kJOvZz+NFWB7V7NqB ESjpf8612ta73yJ/QbBZWSJdKzf8vhOH2rOhVBn+M3R7q3EnoIU7KqE7TGwGaYi8ppduMaO sEIfZc3l4BR+kLehfxfOg== X-UI-Out-Filterresults: notjunk:1; V03:K0:HsmHhJRLzRQ=:CGuDtYJ7SOyoWDnxE2cZtB MoZ/pVMUP1BPnYno58kTmJYNn8xiL5xEFDsDLoVuc8GG0NqR9xY9fhQKjhTfIkSbDDRjv20ij l2Yyokkqj3qDn1MzlZNYmmor6k5+9+meXSstz9HghA2/7/Vy47JD5adSCHk1yGyoxV3HdISYH bTPhG8CfkwRNofc5znMYf4TbXdUWLZiuPRrZAbq9mUlIIpqBH3eEkkJiT8k1inr1347EfwjIZ j/IZUwLZyxeeyKEPWZdaSbB+ROVGgp8C5JbOTWGcgv9rVnDfBWJ6fwocb+50EUoUjMcs+gsMB eB9vcClDi77oPAMOl510ogvSGlYwabyN7chZIBRDdoUxYoA6NLk3lIYLZLQ3WVmJpP69HWGMM WfOpy1RAyyfkzDnzzmz6DSIShWNyDj9q4dtYyyW8S/NL/+wq6CSiV0zPuQ5Qk5Da1T64F1TUc JqFxSU2/Mk4ewTv+xfueg7VKjd4mzUxou4kJOoQO71h1nkvDQFVSTpT5QAKxf2gwm/V1gyaTw 7iRSHDXSAxIXwb0zPWk+BE= Received-SPF: none client-ip=212.227.17.24; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-17-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 0d9305818f8c..69fee5a76a8b 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -150,6 +150,18 @@ static void restore_pt_regs(struct target_pt_regs *regs, CPUSPARCState *env) } } +static void save_reg_win(struct target_reg_window *win, CPUSPARCState *env) +{ + int i; + + for (i = 0; i < 8; i++) { + __put_user(env->regwptr[i + WREG_L0], &win->locals[i]); + } + for (i = 0; i < 8; i++) { + __put_user(env->regwptr[i + WREG_I0], &win->ins[i]); + } +} + #define NF_ALIGNEDSZ (((sizeof(struct target_signal_frame) + 7) & (~7))) void setup_frame(int sig, struct target_sigaction *ka, @@ -183,12 +195,7 @@ void setup_frame(int sig, struct target_sigaction *ka, __put_user(set->sig[i + 1], &sf->extramask[i]); } - for (i = 0; i < 8; i++) { - __put_user(env->regwptr[i + WREG_L0], &sf->ss.win.locals[i]); - } - for (i = 0; i < 8; i++) { - __put_user(env->regwptr[i + WREG_I0], &sf->ss.win.ins[i]); - } + save_reg_win(&sf->ss.win, env); /* 3. signal handler back-trampoline and parameters */ env->regwptr[WREG_SP] = sf_addr; From patchwork Mon May 17 18:13:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440200 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1346921jac; Mon, 17 May 2021 11:44:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxjNk2/DXVsB61/ZjZMoArs+rnTfX6Sc3Knom6PcAY0MsmPubJfZt/wBe/bu/pA/GM4T5Ux X-Received: by 2002:a6b:b48d:: with SMTP id d135mr1126312iof.107.1621277073258; Mon, 17 May 2021 11:44:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277073; cv=none; d=google.com; s=arc-20160816; b=wx58hmtog0ZS4w4ku3ZLW68q7fOcpFYYmzVTYBhlxowJzmmCoZ+pS4sivvPnRJ3/ot gIupd/4Wd+JACZeaUnzzzMLmD8qJYjTd/rR76uHpZUw3Igck4rs6ZZBTVoS3+ujZvf7Z YnANIkkMpG18bt2i8gkewj617K2beSzl4ZKEZK+qAAgP+mg00xZVKbtmP15zb9A5OvnC J90pchL+g5thP7avbtm9dVnpDT+w3htBj7BYGDAduakzCfA1dxQRIeoHg5LMZPkTefdl NyOCbAolwUgHdXUy4cio3xHMbn2uioYjl+m8qI98TE/1KxG/a2eDjNuQcZdKTFsQQTEe ZiYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=61rFI5PKzcOz/G10Rq+BczzBIfY7SgPblFIfT5kjN9Q=; b=NKNaN5hW+MtTi8dfqvA8Gbp8IeoCJ1se8oPE3AnlM0rsuVraA3k+k6o3ZyKqFUUmvJ 5SPEWxqNDCOC2OORk85VXjCC5Labo/LgR9JrM/LKJASgsYgZxLQHoxzO63GKFTe9MWDi nCT6k1HF9A2G6mICd2SshQgEOSJQaMH5p2Qr31T72Kg7HYGTOnq5k5LFGpNpUdlYXO0o A4C+Z94EYduBV2x/YdveFFSDdL8sTaFkD8R8AoyAxn2hgELoYG8mt61Xdv+TfJf5Rt5o 86xFx2YasWYdj8AQmMrBekbB5Dvd62aL0PCbTdvNXwmgQLSfh/kObke8qTbYTU7lYSDB /2OA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id f4si18962153ilq.1.2021.05.17.11.44.33 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:44:33 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:42856 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiEC-0006dY-Nw for patch@linaro.org; Mon, 17 May 2021 14:44:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34020) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlc-0006W9-GS for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:00 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:45613) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlM-0004RU-OZ for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:00 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MqJVd-1l4drQ15Vb-00nOmz; Mon, 17 May 2021 20:14:39 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 24/59] linux-user/sparc: Clean up get_sigframe Date: Mon, 17 May 2021 20:13:49 +0200 Message-Id: <20210517181424.8093-25-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:CzjXPKmQAoA2UnakUWiAOkJLwWyM9ENLxvn73I8LyshK2AcsCGn bfuSPcRRJ5c7eisIeqq/snOAr804kQQ/pe94leo70KXzYhEOlG48GpYgfdYYata55hFfTUV EpbFQNwKiFkJvfdf+/0VIXjV+5hGcWAnlvahuHNMJSd3LxRXzMQWCsy76+rxEYNnB72zGR9 zl7R8B8l/kqpVmvRwRPWg== X-UI-Out-Filterresults: notjunk:1; V03:K0:5mTBrKKH7+o=:h7jtk4oAzeexTHa0lVX9iQ A4LrFYk34YRzH/KMRtkZOmLj+OkrVUdwYTPx7VirXKSfbECoXAMDyaeDZ2dN5eU9VHpPb1Byv oY5gWuR37ytYHsxghfCOoJ8SOPrLy6U4v4uUDrUNQvyaKRcoeMBSW+6fcu6X5khSJVzbF0zxf dvH4q3uZ2Wq4AFmbMkZY4oach7jNJSfeVjyxtHKL6tgWpVn2nWVy+hBN+CX9aVZ8DCv8wJWjq Mi3CHoOwgoOGyTRFKo0bg5N8ryIafjEh2Ul0lWUeRKMktXFNrylOOg+JAMqDOOlrYCt8rWsLv 95WfYdplr5W6RmBFRcqOm44htO1w+zJf6oEu7dUm29mfq1D5zN2rRApyv3dvq9qtxAEqA9N8B sCxGjyzLtCvbtAtrtFzxfvcei/Q+3QLX0WLp57kJHER4gh+jbZjCpmA734CXvDwDWfecL86h5 XQy9mOj/KQhuGFvVSwf6+FcNcmWGhtCLqvxp9TcNYnwr2fOy+brq+0ez/Lh0PGb2xpYT54md7 z4W7f8AL2wNkXydILHA728= Received-SPF: none client-ip=212.227.17.10; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Remove inline; fix spacing and comment format. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-18-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 69fee5a76a8b..57dbc72c9949 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -65,24 +65,25 @@ struct target_signal_frame { qemu_siginfo_fpu_t fpu_state; }; -static inline abi_ulong get_sigframe(struct target_sigaction *sa, - CPUSPARCState *env, - unsigned long framesize) +static abi_ulong get_sigframe(struct target_sigaction *sa, + CPUSPARCState *env, + size_t framesize) { abi_ulong sp = get_sp_from_cpustate(env); /* * If we are on the alternate signal stack and would overflow it, don't. * Return an always-bogus address instead so we will die with SIGSEGV. - */ + */ if (on_sig_stack(sp) && !likely(on_sig_stack(sp - framesize))) { - return -1; + return -1; } /* This is the X/Open sanctioned signal stack switching. */ sp = target_sigsp(sp, sa) - framesize; - /* Always align the stack frame. This handles two cases. First, + /* + * Always align the stack frame. This handles two cases. First, * sigaltstack need not be mindful of platform specific stack * alignment. Second, if we took this signal because the stack * is not aligned properly, we'd like to take the signal cleanly From patchwork Mon May 17 18:13:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440194 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1344024jac; Mon, 17 May 2021 11:40:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyK+n38aXZkQpFH5hSmMKpzuATZf/KtcK9jaw8aD+dblxddOhLWELIv81wKbzX0Ouo23fNm X-Received: by 2002:a05:6638:1a9:: with SMTP id b9mr1300280jaq.97.1621276827851; Mon, 17 May 2021 11:40:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276827; cv=none; d=google.com; s=arc-20160816; b=U10dZ1vk5IQL2GQusAWGAaYLJ+EF0X/flIstFuiHQN2sA8HkYhqZi29RtDdnHqBgxj H9Br4Dd2nDDZDBw7UwgbZ/K79zJZmhAWeHwM8xDO4mq8w03TCgQNVUwwtPhUX33poyL7 penGXrIdrpm/HX7WnQNQSlRQfNsz8qdspUO1LRIvlbAht+hPXSeQ/wo6/8j9vWjm9BJQ ycnNk8rcaU4Ww6VeLa5W6tICVmKjvmPyk89aCznATK6MP8jQ7gnX6QWbneUJwSzUBvlE QrgHpJq02YKnbIXVfRcjjhmSTZorq0B5blbtRdkKbeJHO4spEauli/Y5PXt7Bb0GvWCp MAZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=KdCF+sOIW28MolcKmvk05rGa06IyHCSU5nYcZ5mIZr8=; b=Q5Rda1IpnvbpC/N4oA2O0ho4cAB9rtodqTW5x6tpyG+BgVWeAAAaT7h0Cz3S35hXGB vT+jZcgKxe4WH31gm2OJ4GFo0KvoojTOWIJM0rMTLDO0o7j8J/FNWoH5c2U+/tuTPFtT QhR0Au03vM8Jinfr8dfYImOuJPx0E1i5gZs5sNr1KV/+aty0T8fdVjoEzpjAwpu/YemS OxcjafV97KSNvLEXawDrNm4f8PlhQbzegdcvcDCbTRGIeYRskETxB4rZtQQI+M1l5OND y7uR7K64LlyYiVJux2AsW+mbwiNScxt01uCrbzKTMH/ahCyr0kozE8+hoQu9jR6Y/33C 2aCg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id n11si3976374ilk.101.2021.05.17.11.40.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:40:27 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:53838 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiAF-0003ML-6o for patch@linaro.org; Mon, 17 May 2021 14:40:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33948) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlZ-0006Kt-LC for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:57 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:46521) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlM-0004Rc-Og for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:57 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N5FMB-1lJaF02vP3-011ERP; Mon, 17 May 2021 20:14:39 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 25/59] linux-user/sparc: Save and restore fpu in signal frame Date: Mon, 17 May 2021 20:13:50 +0200 Message-Id: <20210517181424.8093-26-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:g/EyXyz+ZwLfOJoNsW7S0hI/Ie4PYZ9cfAcvqvBuyiXhvfRpsTR tCFTova+PJ0xCo3DoMzpr7s77lXMCzPSMhCdYukHGefXDK9Tmi8UBE7fBqSHLmPxnRIYNky kmZ8PreYhAoJE5tQdnBMtvf2TIclnWHUZAEpuHZGBlvuNKM+nFyx2VIj3oUu1frCT6MFeGb +ibUFOwP/rb7amI3Ap7Zw== X-UI-Out-Filterresults: notjunk:1; V03:K0:1WZ+rsFFXbQ=:wbfDEPwqRtWXr2JtKyHdzF 9latrDfGgUe8Dd94HoRvOx3wYCB4DOYuvBXcJ3pORqIDeiSvr65x4jFo6BijXKCwIWMYOJ74p IoHREN1DduggSI/enIHhZ2fMgH1PW4+FarInm+PZ7prB2nhNPWbMk16cEbL4/8Fk0NI74RL2v yb8mlxJKE/Q3UrKk1IRSoAFX+uuIyphs/JyBtUkZH0mT7mMi7G4tslfkdSRwn3ddzhpagdy5O hYUqJVEVFr0p2yZdDmTaFPOQSPoWsoCQpww1hK28V2bH+vtSWvF+TQBnVouDogvOXOUdNhYVe yiOWTniIcUURxsPJSozOnVf+yR1CBsfUCpyhuIABA5jze+XJAC9oDpqXSn8WzOl5rjldsbPm/ WoBcbWTfSsXT6haierCEols084i7uu8uRi5K7Te1/Iedn7PD7oFO65HNq9DGuDrt88BBEojK2 QJHBtHpOA/SMtXGrhd3SGKUP4wRMFWWx/MVbHuJGsOS/nQ7K4FeXDbCptRQBc5dpUegdEWXDg t1zQHQRCqlLlcYUo96ok2o= Received-SPF: none client-ip=217.72.192.75; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-19-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 84 ++++++++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 33 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 57dbc72c9949..59bb4495121e 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -43,26 +43,25 @@ struct target_stackf { abi_ulong xargs[8]; }; -typedef struct { - abi_ulong si_float_regs[32]; - unsigned long si_fsr; - unsigned long si_fpqdepth; +struct target_siginfo_fpu { + /* It is more convenient for qemu to move doubles, not singles. */ + uint64_t si_double_regs[16]; + uint32_t si_fsr; + uint32_t si_fpqdepth; struct { - unsigned long *insn_addr; - unsigned long insn; + uint32_t insn_addr; + uint32_t insn; } si_fpqueue [16]; -} qemu_siginfo_fpu_t; - +}; struct target_signal_frame { struct target_stackf ss; struct target_pt_regs regs; - uint32_t si_mask; - abi_ulong fpu_save; - uint32_t insns[2] QEMU_ALIGNED(8); - abi_ulong extramask[TARGET_NSIG_WORDS - 1]; - abi_ulong extra_size; /* Should be 0 */ - qemu_siginfo_fpu_t fpu_state; + uint32_t si_mask; + abi_ulong fpu_save; + uint32_t insns[2] QEMU_ALIGNED(8); + abi_ulong extramask[TARGET_NSIG_WORDS - 1]; + abi_ulong extra_size; /* Should be 0 */ }; static abi_ulong get_sigframe(struct target_sigaction *sa, @@ -163,33 +162,51 @@ static void save_reg_win(struct target_reg_window *win, CPUSPARCState *env) } } -#define NF_ALIGNEDSZ (((sizeof(struct target_signal_frame) + 7) & (~7))) +static void save_fpu(struct target_siginfo_fpu *fpu, CPUSPARCState *env) +{ + int i; + + for (i = 0; i < 16; ++i) { + __put_user(env->fpr[i].ll, &fpu->si_double_regs[i]); + } + __put_user(env->fsr, &fpu->si_fsr); + __put_user(0, &fpu->si_fpqdepth); +} + +static void restore_fpu(struct target_siginfo_fpu *fpu, CPUSPARCState *env) +{ + int i; + + for (i = 0; i < 16; ++i) { + __get_user(env->fpr[i].ll, &fpu->si_double_regs[i]); + } + __get_user(env->fsr, &fpu->si_fsr); +} void setup_frame(int sig, struct target_sigaction *ka, target_sigset_t *set, CPUSPARCState *env) { abi_ulong sf_addr; struct target_signal_frame *sf; - int sigframe_size, i; + size_t sf_size = sizeof(*sf) + sizeof(struct target_siginfo_fpu); + int i; /* 1. Make sure everything is clean */ - //synchronize_user_stack(); - sigframe_size = NF_ALIGNEDSZ; - sf_addr = get_sigframe(ka, env, sigframe_size); + sf_addr = get_sigframe(ka, env, sf_size); trace_user_setup_frame(env, sf_addr); - sf = lock_user(VERIFY_WRITE, sf_addr, - sizeof(struct target_signal_frame), 0); + sf = lock_user(VERIFY_WRITE, sf_addr, sf_size, 0); if (!sf) { goto sigsegv; } + /* 2. Save the current process state */ save_pt_regs(&sf->regs, env); __put_user(0, &sf->extra_size); - //save_fpu_state(regs, &sf->fpu_state); - //__put_user(&sf->fpu_state, &sf->fpu_save); + save_fpu((struct target_siginfo_fpu *)(sf + 1), env); + __put_user(sf_addr + sizeof(*sf), &sf->fpu_save); __put_user(set->sig[0], &sf->si_mask); for (i = 0; i < TARGET_NSIG_WORDS - 1; i++) { @@ -226,7 +243,7 @@ void setup_frame(int sig, struct target_sigaction *ka, val32 = 0x91d02010; __put_user(val32, &sf->insns[1]); } - unlock_user(sf, sf_addr, sizeof(struct target_signal_frame)); + unlock_user(sf, sf_addr, sf_size); return; #if 0 sigill_and_return: @@ -248,7 +265,7 @@ long do_sigreturn(CPUSPARCState *env) { abi_ulong sf_addr; struct target_signal_frame *sf; - abi_ulong pc, npc; + abi_ulong pc, npc, ptr; target_sigset_t set; sigset_t host_set; int i; @@ -276,14 +293,15 @@ long do_sigreturn(CPUSPARCState *env) env->pc = pc; env->npc = npc; - /* FIXME: implement FPU save/restore: - * __get_user(fpu_save, &sf->fpu_save); - * if (fpu_save) { - * if (restore_fpu_state(env, fpu_save)) { - * goto segv_and_exit; - * } - * } - */ + __get_user(ptr, &sf->fpu_save); + if (ptr) { + struct target_siginfo_fpu *fpu; + if ((ptr & 3) || !lock_user_struct(VERIFY_READ, fpu, ptr, 1)) { + goto segv_and_exit; + } + restore_fpu(fpu, env); + unlock_user_struct(fpu, ptr, 0); + } __get_user(set.sig[0], &sf->si_mask); for (i = 1; i < TARGET_NSIG_WORDS; i++) { From patchwork Mon May 17 18:13:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440206 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1348983jac; Mon, 17 May 2021 11:47:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxWJyyUJjVadZ8FKIhNGXhf1sbPRQm43tmQkQk5H6zuUoO90kVlzLfYsA5locpoWjHIaBoE X-Received: by 2002:a92:d0c3:: with SMTP id y3mr938235ila.58.1621277252885; Mon, 17 May 2021 11:47:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277252; cv=none; d=google.com; s=arc-20160816; b=FhwIWlVe6ecktliVDBZcTadnYnvwCwc+R/zHstf+pBbpAJjX6emQtO6APMgiQY2EII XoDkJMSKzrP2j2kYZgIpCEX3H5ZEwLz6/aCrlltXe6+ZcmZOAv/ehJhlD/5mtHK0L9KM KDsi1Y5TGn487lS06w8Ys1zJCafC5oFhBx+GtdzVhyGHdAnEB0Qgd8q9O5DR06d2sTRN iv+iTHl9qV2CE/GkpEJK+sLGP700OeNWP6rqNHgDuJNsH+dWLXM3cxCjsnHhMa0eK9i+ qdgXH0MRkVjYdQHxM7fo/ZpRZjb/aSbEo6AVa7sv2xIwwwmRKKJO6ImplYElu0+2q2Yq Sk1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=BB/2J3+06BdIrB+lW60VLV+vXyqThCXXIkncBvbmPcM=; b=rjHVwOThHqmKJynWFeTw25UXR/Xr1liH+WOYiC1x6QIPti8+P6ht0V/5nAarrENFbB EmXgFnaOtJBLwf7n8BK/wiUiT+8yNAtgtdHGuAyTQ6pDX6/0Z5j3fewfvOMSBXFQeMJ8 O8hnlEG7Equ6I5AR8e47uee9gzFlgiwEI9572nTPdJwzax205nx+WfgMxAKy+4Z8o0+9 8CJ0z3RFYV4nEgpJiZGfgd6qxRg7dIjKPuB9r7bRVQOiDTqPwa8IdKEKAc8iRyVNdkSQ yjaTcn8hW1YYsyQKJgXoBSvnHAUuv4eZxwOhpC6vVbeMQ7qGWZrjuoFqr65e4AG/Vdse gNZA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id c22si16816435ioo.82.2021.05.17.11.47.32 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:47:32 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:52756 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiH6-0004rj-8s for patch@linaro.org; Mon, 17 May 2021 14:47:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34044) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihld-0006YX-1M for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:01 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:46471) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlN-0004Rh-9d for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:00 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M8QFi-1ln5TU0XEe-004PBe; Mon, 17 May 2021 20:14:40 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 26/59] linux-user/sparc: Add rwin_save to signal frame Date: Mon, 17 May 2021 20:13:51 +0200 Message-Id: <20210517181424.8093-27-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:SQYdrlqjRBJRWMJzjUAAXDNmnmpo+lA16z1fMzYvufi2g5eygiH pzIGARdYXLJ3LjhpQhy1cOzZ0vZfrG3YqBEaXtb4U8XZdl4Yb0qIMCr6GnKtfOG7Cynxc1E /ptLX+mm2UZJ9+Lf1DOhUqBtlPNM1nL+vX8yTNvLyrFx2vxxvtCm8wXQpnol1zfXtMTZWb5 7CZfJZbedK/lzwTVcnnkg== X-UI-Out-Filterresults: notjunk:1; V03:K0:7qWQAbbGx5c=:GeyVKpY4HG03z9bdSHbq5L x4poL1faWum95KJ9COH6Iob9iucsndDdC96rOYnnCNwUiR/hMJiHN1vgHGv7O0K9LSQtf1MW8 x1ED5CcgSL6KqddamnF5gNC4nvy88qhhEK1MgbO194Tdmi6hgd105SPsZmkWFW1bkXtPb0MDT UaMHg9qoA0lgczUdZ9yfwHsRiKLS7agNfw2nrsBPd3/Xi3jJi7NYScHHaK5+Qasl96/LMmdC4 M6Lk4AsqgVWG+z9WeMMF/tcpm217jivEsjAPdE4ZdGCNUKfZo3hHTygrj9E0npilz4Ox5EEOm ZrjAw1pCqB41yAf/NdHE/5nRVHkS2OoPo/NMfpjMS4iVJqUYX+f3Cg0y5s2swGOjeDXTtzhOV VVu4OCYXfAZPSp39VRvr9VDZlTC1An2IPZo3YNJMv+msFf+ceewjU+0EhGwWBk4uH0flbBTkf 0D42xtaVnQLDVRBvy7z6ExW0/zGHX95i3w18kTkJ7c10MVuXCLJpBX0zAshYrES5Gz4hJFQ6Q 0C8+klPUOyoRyVcOAosP8g= Received-SPF: none client-ip=212.227.17.10; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Stub it out to zero, but at least include it. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-20-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 8 ++++++++ 1 file changed, 8 insertions(+) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 59bb4495121e..4a0578ebf37b 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -62,6 +62,7 @@ struct target_signal_frame { uint32_t insns[2] QEMU_ALIGNED(8); abi_ulong extramask[TARGET_NSIG_WORDS - 1]; abi_ulong extra_size; /* Should be 0 */ + abi_ulong rwin_save; }; static abi_ulong get_sigframe(struct target_sigaction *sa, @@ -208,6 +209,8 @@ void setup_frame(int sig, struct target_sigaction *ka, save_fpu((struct target_siginfo_fpu *)(sf + 1), env); __put_user(sf_addr + sizeof(*sf), &sf->fpu_save); + __put_user(0, &sf->rwin_save); /* TODO: save_rwin_state */ + __put_user(set->sig[0], &sf->si_mask); for (i = 0; i < TARGET_NSIG_WORDS - 1; i++) { __put_user(set->sig[i + 1], &sf->extramask[i]); @@ -303,6 +306,11 @@ long do_sigreturn(CPUSPARCState *env) unlock_user_struct(fpu, ptr, 0); } + __get_user(ptr, &sf->rwin_save); + if (ptr) { + goto segv_and_exit; /* TODO: restore_rwin */ + } + __get_user(set.sig[0], &sf->si_mask); for (i = 1; i < TARGET_NSIG_WORDS; i++) { __get_user(set.sig[i], &sf->extramask[i - 1]); From patchwork Mon May 17 18:13:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440185 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1338832jac; Mon, 17 May 2021 11:32:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy4/SxmBwNgaGwzciIkr5lwGOeHAE3+4E9lCAmiqUjvdmAAzbDx/PPUELc9Be78mDj0Q48f X-Received: by 2002:a05:6638:32a8:: with SMTP id f40mr1360580jav.84.1621276355577; Mon, 17 May 2021 11:32:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276355; cv=none; d=google.com; s=arc-20160816; b=HY4+gWb/o9YJ8LsXOQyzdXjOjG0WTRq702JPG0kcA2H0J0B0NgvqwYPD0m8cXDSN+j 7Y5B0Z7MOM32WC6eYUYZdhtMhVBjOe7D7kKNqaVj/CSAcvuDh0bczEPZmvrsYbWHSwuB KAZAyrYRmvNdO4MEQmzAiXEGpi2Kou8kE4WTaZDYGiFEUTpOZtnFquaBbxaxDXF+HkXz SnYh9EPwLE3X+UuwA+KzsZULVoDew5DvWIs+l4fLguStBpTWr/9HScDIjrJ+yVgpKa+0 6Fey1v7k5x40pEkZ5vpqJgfarJEBUmBwg45Sxw8Mosx65EVLYyjDPFIn2A17/gfoFQIT 9JtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=kT/iDkD8mVwazS6sVSHV9ZY3eKN00k4pOg364vqPGJ0=; b=oOjjV2y4cNJdXnRFusfkbNy0ahRwkAgK8fR7n4Y9trf129oSEphpx1P+XBxKAzGgt2 VFR+CrUHmyYKCgkUepvM5Fy+TqCRj3NoJe6wGbE6iYmu7tEJLvMZCTUp3UX/Abyw+Axi 65b9mVQIf/DRGghhi5Z5P2Aig2hCt7hs5gKrqbddnDOg2p4CVN0zs2dP5MuAGyzj3WrS kZ2ok/7n8QYSQlw38KB53BUrIu5D9QHajE5OBg7CQdBmmmh81rSBV5r9ubLwmiVsuKpx SyfH5jZ1DZPbCyEO4io/DsZev2TUTqXZHVhSCFrm3tlgIWJaT0k8RLuXDcSW4N2HAAmr ACLA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id s8si19569350ilt.116.2021.05.17.11.32.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:32:35 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:38818 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii2c-0001dN-Vd for patch@linaro.org; Mon, 17 May 2021 14:32:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34012) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlc-0006Tt-1O for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:00 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:41699) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlN-0004Rp-9l for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:59 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MEmpp-1lgBb92IfL-00GGth; Mon, 17 May 2021 20:14:40 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 27/59] linux-user/sparc: Clean up setup_frame Date: Mon, 17 May 2021 20:13:52 +0200 Message-Id: <20210517181424.8093-28-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:XAM1LYUEgaiQWSAoIKpCHNd376jlUz53JroepIgpoix0UmgqsNa qEPXURe6GDPC7KL9uxvZb4RNmQLNsbzoSPb3U6GOEWcU0bGMMWWHvgUFNiKge/b7gbimgDP 2l6l2P3vqFzgk0iciJTJnQ41IZuKmLKWGcTp/mHyawl8wIqTp08EdMZPwYFbgZoZ3nqnI6h tVWZHGNoAb6oNFVWzgBSg== X-UI-Out-Filterresults: notjunk:1; V03:K0:QLGolkIwpDg=:T3Eo5Pfm3hekbDqyh+6PCM h3DVdv78ABMk7FyjgZXiK+GXscZ4XBzU5ayRB+SMpjldu/nywaJyA5DpOFm793R4A/knj0YM9 t4oRzEAbFBidhBb+VS8P6vmd0J8y4RWPKI3bBDsIztKx/MH6ZsIpWqwbfQCYgUpdF/NxBivDD tkSSHBMuCFaWSmSQw2DOxTApSXQTfeDbcaetrhwfhOtFxilJp9hnk6SNFJLy1xFMme+xhG/Cr hW/kczVbckTukdkqkBVP2n/3dvAbqL9k9Ap19SYnE4JuUl485SZk7MgTL7d6h2mfuPJMx1H0K EdX2RuM8FqSMmIAaFLCZnNmi1JEllqLHgsTs12ZofGlaXkLRYPdVn15XUGUSw46TMJN5gWEMK XjgVJe1RLE8/XLT95JJBgTKoWQYF9prptdjIiIBntdhZw5dOsbdk2d8/rW47P6lDMMJHPAqIC 0VB/qnmUipjUYYghyQveDrROMvqwZweE5Z0CCpOFz9zSC0L9nfzlTgjzP8zJgjmmN87URcaHc Q23tj3bFOJiM/weE6O6F+s= Received-SPF: none client-ip=212.227.17.10; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Clean up a goto label with a single use. Remove #if 0. Remove useless parentheses. Fold constants into __put_user. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-21-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 4a0578ebf37b..f0f614a3af7a 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -192,14 +192,13 @@ void setup_frame(int sig, struct target_sigaction *ka, size_t sf_size = sizeof(*sf) + sizeof(struct target_siginfo_fpu); int i; - /* 1. Make sure everything is clean */ - sf_addr = get_sigframe(ka, env, sf_size); trace_user_setup_frame(env, sf_addr); sf = lock_user(VERIFY_WRITE, sf_addr, sf_size, 0); if (!sf) { - goto sigsegv; + force_sigsegv(sig); + return; } /* 2. Save the current process state */ @@ -228,33 +227,21 @@ void setup_frame(int sig, struct target_sigaction *ka, /* 4. signal handler */ env->pc = ka->_sa_handler; - env->npc = (env->pc + 4); + env->npc = env->pc + 4; + /* 5. return to kernel instructions */ if (ka->ka_restorer) { env->regwptr[WREG_O7] = ka->ka_restorer; } else { - uint32_t val32; - env->regwptr[WREG_O7] = sf_addr + offsetof(struct target_signal_frame, insns) - 2 * 4; /* mov __NR_sigreturn, %g1 */ - val32 = 0x821020d8; - __put_user(val32, &sf->insns[0]); - + __put_user(0x821020d8u, &sf->insns[0]); /* t 0x10 */ - val32 = 0x91d02010; - __put_user(val32, &sf->insns[1]); + __put_user(0x91d02010u, &sf->insns[1]); } unlock_user(sf, sf_addr, sf_size); - return; -#if 0 -sigill_and_return: - force_sig(TARGET_SIGILL); -#endif -sigsegv: - unlock_user(sf, sf_addr, sizeof(struct target_signal_frame)); - force_sigsegv(sig); } void setup_rt_frame(int sig, struct target_sigaction *ka, From patchwork Mon May 17 18:13:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440201 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1347190jac; Mon, 17 May 2021 11:45:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzviiTGTXA3UsYxErg8F3U6wO3SjvGNasPu5PhnD4VR5q5hQKmLHZlXsrcm0sMBl3HRXqCe X-Received: by 2002:a6b:b2c8:: with SMTP id b191mr1150474iof.19.1621277101700; Mon, 17 May 2021 11:45:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277101; cv=none; d=google.com; s=arc-20160816; b=CNoeomesUXZIe48TAb6945DNyto+i4opXc7TmL5WLmNjNYUiiP7Eh3aTc4Xh2ZSX4O FJ/XlLHByQFpSiJEe2NAHyqs9unbjdFlsnFiHV+zW6FB5vt54N8giieLU8MP8Nk6gH2U cKDBmwouo+uY9xN+Gy+T8mdbHaepmlB9RgS0kBuAbnag+oABNyk7Kdx5T0KO+AkubIWC ONKwg01lOx6It7og6RhGQN6QNxM8Dlc2HmzcWjFMfkghyU1lL5qlAwm+mD2BSWQ7WcGE I8ygn4S2H5STC05GS5vNliskXwDT3WXTFdSJhzy7Z5ISNCRPvLlThU418oPM5exwfxet mFUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=Rlr/DM62R3JCOLmfPXiwLKsg3SOAqgxLEh3i2J9Q6AE=; b=Tx1CHrp8WGy93n3Xm1L0T5GGslcR/2uaorPo6UnElvF/jxjWaNAn3BFo45fYRgAQCv 9NARAHWJJxFo3gq3ePEc0C4KeeuiaBNQA7eIzXHZx8Dg/Xcw8veYvUUhujNHKBhUpAvE dnCL7mcQCQ3gC5qMAoA7fXC261zCFaSyvtRL2YEe3DPpidnawaVgTvgqaK6qEWNDXerJ 26w7B40Y4wccfOL1IZkZEiMNjFpyp3GW9miM0OwmqNXQx5mY7Z6QQhMTNljvq35fAv3m atbN/fTghCRjLR07K6FcMK2H1gmEtyq6Pfn6n0gXh5p4lMeMSbq6Qw2yIU2y7/r5cURj wPxQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id y10si4326975jak.112.2021.05.17.11.45.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:45:01 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:44232 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiEf-0007Xc-3b for patch@linaro.org; Mon, 17 May 2021 14:45:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34016) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlc-0006VK-CR for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:00 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:56575) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlN-0004Ru-AC for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:00 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mf0yy-1lFPLu42FG-00gUtY; Mon, 17 May 2021 20:14:41 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 28/59] linux-user/sparc: Minor corrections to do_sigreturn Date: Mon, 17 May 2021 20:13:53 +0200 Message-Id: <20210517181424.8093-29-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:nW9XUH0vxzB0brOUi4L8KWdVEMBDxPu65thTjLXkGUC9GE4Rp8n AnRjAbC1+oA2+rRqDXiSLUlVUoHBO1ydUo9M+yCu+6Gty9jD85nRN1L+j8c2j0RHBcRHfz1 2K2ksZU3+b21/waOVLLipYEKNojE8N5KGnswK99ZptR1vPW3S6KVgLr161kUwFQfqx+P1tk xEqv29wJHgNQy8+hEuBXw== X-UI-Out-Filterresults: notjunk:1; V03:K0:as3RVSeXN/s=:De88Sl4q4uc+gqkq0b+8R0 ob3zEu6NNLAU63maZv+3bwdFdR8c3inib4FrkNOA8NzVurmR3HRUO4UqEAGLao3BHP7tYGsKD ssYq/PnmaLjAnWME6a1g7O5VVYcduejwTKlciwnh/CM4bmP+/amDSsys7s43pXaXH6UUw4Ro+ VietDsXIccVt7POSukUQ07HbZDcEDSMEem3Jn5zoAFbm6iOzt9sn2HARHtEM1TAn8wdHeWWtD T+IDNS3LJukPmcaXotwk/51ytDTwW9vA5eNxi0wuEZaxZ0P4s0kIsdjGwwvI3JZlOPzKntN7/ PqOUfqrFh++VIkPB6V3+iBCX8xBaJTGfL0yAuHV9wfzPChkipAiNLOCg7yjagrxeAEIsFhbSc mM3/LPMVctTseFWmTxpnUK5Vjau7IGiswPLtmCQy8eYyuNGOTx8sfaoXL1JsY+tLD96Drnl8g LMUnxzRsNZ2/WcBuZVOpgPe4zarBiI+5ITPuCheF0Klvzflc0nVknUM+ooyCqtlZf5pWGAQKR HzDY7EaITdNkSSAKuqexIc= Received-SPF: none client-ip=212.227.17.10; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Check that the input sp is 16 byte aligned, not 4. Do that before the lock_user_struct check. Validate the saved sp is 8 byte aligned. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-22-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index f0f614a3af7a..0ff57af43d1e 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -254,7 +254,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, long do_sigreturn(CPUSPARCState *env) { abi_ulong sf_addr; - struct target_signal_frame *sf; + struct target_signal_frame *sf = NULL; abi_ulong pc, npc, ptr; target_sigset_t set; sigset_t host_set; @@ -262,18 +262,21 @@ long do_sigreturn(CPUSPARCState *env) sf_addr = env->regwptr[WREG_SP]; trace_user_do_sigreturn(env, sf_addr); - if (!lock_user_struct(VERIFY_READ, sf, sf_addr, 1)) { - goto segv_and_exit; - } /* 1. Make sure we are not getting garbage from the user */ + if ((sf_addr & 15) || !lock_user_struct(VERIFY_READ, sf, sf_addr, 1)) { + goto segv_and_exit; + } - if (sf_addr & 3) + /* Make sure stack pointer is aligned. */ + __get_user(ptr, &sf->regs.u_regs[14]); + if (ptr & 7) { goto segv_and_exit; + } - __get_user(pc, &sf->regs.pc); + /* Make sure instruction pointers are aligned. */ + __get_user(pc, &sf->regs.pc); __get_user(npc, &sf->regs.npc); - if ((pc | npc) & 3) { goto segv_and_exit; } @@ -309,7 +312,7 @@ long do_sigreturn(CPUSPARCState *env) unlock_user_struct(sf, sf_addr, 0); return -TARGET_QEMU_ESIGRETURN; -segv_and_exit: + segv_and_exit: unlock_user_struct(sf, sf_addr, 0); force_sig(TARGET_SIGSEGV); return -TARGET_QEMU_ESIGRETURN; From patchwork Mon May 17 18:13:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440182 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1336350jac; Mon, 17 May 2021 11:28:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzhk96P+oEJ9KnLOsfiAl0NzQ/Une0pl9Cm1OBDghX0/TrjcXW31jrkc0mBFNHKdROI3101 X-Received: by 2002:a9d:7987:: with SMTP id h7mr787830otm.70.1621276133062; Mon, 17 May 2021 11:28:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276133; cv=none; d=google.com; s=arc-20160816; b=iMIctbqh+faPywokDAgGPkwIEAKU2Y8OXsnKVEGDbN8G9nUWMiQoPEqxZzxcCPfykh PuVd/H+kDPc4BSWWxqi7W4dll2+iGkYc4itXCgyHB+zhD8SPiiZf1M1fMQKdreUNL0vt aQWSr4YBXXMhnqKBtEJ+js/3m0pbeXrYRUzWRhEANSQUjqIxAgP3KKsDKTwvhbL9g2WW 9Ik3hWlrrtH43PkQ5rhwqFkQ72GuIO7rqExJWyXO8gvnapbj66reKNjUUsNdlQfTNj54 A+O5bIt2q25+QRQMAxmQHTLtE8764QPSCQ2zmcBbmow5tMd3Gl03FOx8q8PEOAaJWl8l Bbdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=A2nc0rX1Iqy4HRlYvwf20T8jLafbFovSTexElWk5DLg=; b=dUL+JUrmur77ZytghbfAoovXvTHjzlvAUqZZKPCS9AM2vMk7AA1w2VVZSWKqJQGL2P 42p9TeCnXvIXhLwYjJ0U1ye2a35zJaa7b/iccgNAS7Jy6pXl9oS+tBxdYnbjMbd20lQe 53cmVoCDtfmGHd0CN/VKOP4NLdKCgg5VfnHA+8tNNVP0NBzYOf5FDUuEJCKR/D4tiAqk FIqZHrphOpsBdcbjMJU2ulAx9TrbjZxE4RpriUkHmGcm+FuJTPHIFj7Q/4j6ucxK/DwN JXoUlJNDZNGaHH/UItvAdMaXBOytn6/+Blhtdscn9obiNT/wSe2y2AMpotBy0cziJYwK IyUw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id v2si14940510otn.224.2021.05.17.11.28.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:28:53 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:58540 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lihz2-0004GC-An for patch@linaro.org; Mon, 17 May 2021 14:28:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33902) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlU-0006E0-F1 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:52 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:34435) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlM-0004Rz-Ng for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:52 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MBV2f-1lcuLe1YVj-00Cz6X; Mon, 17 May 2021 20:14:41 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 29/59] linux-user/sparc: Add 64-bit support to fpu save/restore Date: Mon, 17 May 2021 20:13:54 +0200 Message-Id: <20210517181424.8093-30-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:KXJ/0d5omk5Juih4Xw2n9mycDavHf0bPOWrPEy2XQBy/XbYJNnk Bk+ZBDNoqaZog5NG3Vnqu9BRfSjnoplTin1vUwYwcRKcN2vdsVPIT7t0uHmZxyvUK22nSi2 b0tpKdlUftOq2LhbkLgQ5gFxfjBUlONe+URRLNTC1laqTRJSgxwWco+XhawLiDGfLpHnaeo p/1IETYDZ5uWjO11YXz8g== X-UI-Out-Filterresults: notjunk:1; V03:K0:htoltKhZhEY=:KQkyuhBW6okJSLniV2A2p5 IFZi+dEz+4UeoB5N4itTrVoP3fnpDoPtvT0f7wYU7z0Jq9YLnFIIoK2uFknbxdsQmfjv+jg9k twsL7EO+9uFKw4vhJ4dp8FbIzKHuKCsa7t6FPY2NI7Q+wzmo+zpozsxxWeTEzf1eMiG5hTT8f Ulq68VQBKG3tzg9//vzJtKmr6v2aH8f01i3oFL7VLFCkPTbGp7TYclyyvF20hPI4GRXZWCHZj /XOChRhbyzjEb7XhRmK61AOMdaea3WdgyTPlEakuZtiOMBjfxfkNSUqOzsV/EyA6zC8gtiQ2n Nt/rlsvp8s8cbNEgspNYLZrSh7LTFAX4BNURhS13EEs4O6sglfJ9rvH+akgcnTT9j+38GM72j 0I8MnzFfwDSIRTX3wjURqXI0RumbNDM0hgw2ZYGrT7kD1ADbfQniU9WcKGY3zH5PpOfw8Lzzf Mt+hyZK5cTukonHPxSRCh8lTHFTMC6PGTVPoa68ZSg4DduLyfYMUHpOx9Wt2xhcMuV0R6RZkG WHnyIjfgu0BpC2RGF/dNnU= Received-SPF: none client-ip=212.227.17.24; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson The shape of the kernel's __siginfo_fpu_t is dependent on the cpu type, not the abi. Which is weird, but there ya go. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-23-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 0ff57af43d1e..41a8b33bac3c 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -44,6 +44,12 @@ struct target_stackf { }; struct target_siginfo_fpu { +#ifdef TARGET_SPARC64 + uint64_t si_double_regs[32]; + uint64_t si_fsr; + uint64_t si_gsr; + uint64_t si_fprs; +#else /* It is more convenient for qemu to move doubles, not singles. */ uint64_t si_double_regs[16]; uint32_t si_fsr; @@ -52,6 +58,7 @@ struct target_siginfo_fpu { uint32_t insn_addr; uint32_t insn; } si_fpqueue [16]; +#endif }; struct target_signal_frame { @@ -167,21 +174,50 @@ static void save_fpu(struct target_siginfo_fpu *fpu, CPUSPARCState *env) { int i; +#ifdef TARGET_SPARC64 + for (i = 0; i < 32; ++i) { + __put_user(env->fpr[i].ll, &fpu->si_double_regs[i]); + } + __put_user(env->fsr, &fpu->si_fsr); + __put_user(env->gsr, &fpu->si_gsr); + __put_user(env->fprs, &fpu->si_fprs); +#else for (i = 0; i < 16; ++i) { __put_user(env->fpr[i].ll, &fpu->si_double_regs[i]); } __put_user(env->fsr, &fpu->si_fsr); __put_user(0, &fpu->si_fpqdepth); +#endif } static void restore_fpu(struct target_siginfo_fpu *fpu, CPUSPARCState *env) { int i; +#ifdef TARGET_SPARC64 + uint64_t fprs; + __get_user(fprs, &fpu->si_fprs); + + /* In case the user mucks about with FPRS, restore as directed. */ + if (fprs & FPRS_DL) { + for (i = 0; i < 16; ++i) { + __get_user(env->fpr[i].ll, &fpu->si_double_regs[i]); + } + } + if (fprs & FPRS_DU) { + for (i = 16; i < 32; ++i) { + __get_user(env->fpr[i].ll, &fpu->si_double_regs[i]); + } + } + __get_user(env->fsr, &fpu->si_fsr); + __get_user(env->gsr, &fpu->si_gsr); + env->fprs |= fprs; +#else for (i = 0; i < 16; ++i) { __get_user(env->fpr[i].ll, &fpu->si_double_regs[i]); } __get_user(env->fsr, &fpu->si_fsr); +#endif } void setup_frame(int sig, struct target_sigaction *ka, From patchwork Mon May 17 18:13:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440196 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1345873jac; Mon, 17 May 2021 11:42:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxpo2fnoNhN1iMJUrfVaC9L5U2FFxDvvy/WZSRhwjlrkzPFxyMfv3JAbN0T3nGdE9xjg1fw X-Received: by 2002:a05:6638:2243:: with SMTP id m3mr1361852jas.88.1621276973711; Mon, 17 May 2021 11:42:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276973; cv=none; d=google.com; s=arc-20160816; b=UvLvN+KN3mjYRzwhSOMqGgOCqzAU7N4cNttXsH5Mgi905uNEG9dzeRVaVQGi9ge8MM dpC+nnkbDjhCFaJ+2ECXVafVtJ0LdFB4Z8KLW5jZuE9z6RZXi6fX2MCncVhlldAYEqM1 it2MrU9k6115tKy/nmn07MawxT8+2cgshipENFgQrYKQxyKYnw0549pwcNS0xgmlcNSL fBOtxxPyTySY9fvt6XFa6Q+Zs1NxmJFKL3B58i96udw7zX7IHc7jtAGqDJEJoD9Tq8PA JzfBPK1acNhztGH+oQOV4VbdK0WzwhuPzWRqwkLAHZ4+D1x0uQzglT54vfs+L+x9k80a Jdcg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=fOxGeIRCelj4CONBl1eUcjAiOwwpBUh3lGKn0TnWh9k=; b=dLmbSHGjaL65YORMs3aiQbVPieFcnsgSkTm+6zLOxUhtleQzZRhqnDfpIN3YSE10pR 4apx30neLK/ASo1tVswiu8ZbCauYeNgXLblVDFuL2NWuhm8sklnFblNB3llpV9HT7tp4 EK9vl7eC4GjV1Iju7FQEC2QM54GpOU7POEMK2zp4r2BuIazuSWY+j0kVcih+3Lggc2u2 yGPz2WKgPF1ATXs9/DBEOgws0z/mzPWlIOEc8w5aB79mtNkLHYWqIM9kX67PriwYmkYR gdMt07VcPq2omp4KiSBNiWWIhIeV7eIi0mg3gjxFTtdaUJgkulfubo1dg2un2ZtCoHKk nf9w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id o1si20213842jat.48.2021.05.17.11.42.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:42:53 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:36646 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiCb-0002VF-4k for patch@linaro.org; Mon, 17 May 2021 14:42:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33966) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihla-0006ML-0Q for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:58 -0400 Received: from mout.kundenserver.de ([217.72.192.74]:55127) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlM-0004S7-OE for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:57 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MQdMG-1m5J7H3IsI-00NiUK; Mon, 17 May 2021 20:14:41 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 30/59] linux-user/sparc: Implement sparc32 rt signals Date: Mon, 17 May 2021 20:13:55 +0200 Message-Id: <20210517181424.8093-31-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:5TABmhdhA8q5nUkbiFyUgPbb6SUy7K4oVIvFRxsmoSyhoG153BJ 4mNJntY1mu1gQW2W9hOkgZfeTXbK6IE3vt4iGGDUlmTltZ9UCI48NlwbdNREi1v+B8t97oW 4VPfP+ThXaY+uOm6cbWB8qQWM5gTZe0qLbFvf/2NrUQkdV+klw2+PECoYgKezXuwwE3C5H5 jC3/kY4XV/naYyFm/QyKg== X-UI-Out-Filterresults: notjunk:1; V03:K0:rDU5leVRHlQ=:3+brV4vWTfdP3Qz0IcHP2O Us/EZ6gci8fxaUKj6StWTcExOOR1gzOA5xoECDVsKU08lPdPVcD2vZaGkTS6H3l12LLwhFFrn /PT4kg82ivMtcAGhIch98CjVor9xXFLyQ7Oix2R1S3+ftWKscGBpUaO5CBPud77tf2jAwDXvn gEGGot0C0bUfMSuP2sjN7ep5dijYjXEHchrfAdd54Y2YTUCQuQdf9Q6GHcS3FhV8kNqBsYjjy edtG+SCCzcp63zLbIUR4Vx1xnHAWWZEcPfaAFOTA0/7f64tptr0GW5r8C2Bi/MoHYvW2uHbgG +KYS1GDTkkLGTPTQE9LB1Ju/LpQK+cg1zfIEIydlWL/h2ZyE9xjHkqdhTkMm6BbKqIvhuVEqG LEE1u/LuS+5rBbSinxXnXhslzyQ2eWIaRb0YrJYesc1o7dVxshNF4przTlD1N8WAVMP9qyfOK cmH1zogFcZv/6ZKFCPvb18Zp6dawZc41M6x6aA/JdF70GYMQxR8a2dVpfRrOwzcanCgqKbX6c vpoON/lbaOu8GWlPRbUPTI= Received-SPF: none client-ip=217.72.192.74; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-24-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 126 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 122 insertions(+), 4 deletions(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 41a8b33bac3c..362993da0281 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -72,6 +72,18 @@ struct target_signal_frame { abi_ulong rwin_save; }; +struct target_rt_signal_frame { + struct target_stackf ss; + target_siginfo_t info; + struct target_pt_regs regs; + target_sigset_t mask; + abi_ulong fpu_save; + uint32_t insns[2]; + target_stack_t stack; + abi_ulong extra_size; /* Should be 0 */ + abi_ulong rwin_save; +}; + static abi_ulong get_sigframe(struct target_sigaction *sa, CPUSPARCState *env, size_t framesize) @@ -284,7 +296,59 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, target_siginfo_t *info, target_sigset_t *set, CPUSPARCState *env) { - qemu_log_mask(LOG_UNIMP, "setup_rt_frame: not implemented\n"); + abi_ulong sf_addr; + struct target_rt_signal_frame *sf; + size_t sf_size = sizeof(*sf) + sizeof(struct target_siginfo_fpu); + + sf_addr = get_sigframe(ka, env, sf_size); + trace_user_setup_rt_frame(env, sf_addr); + + sf = lock_user(VERIFY_WRITE, sf_addr, sf_size, 0); + if (!sf) { + force_sigsegv(sig); + return; + } + + /* 2. Save the current process state */ + save_reg_win(&sf->ss.win, env); + save_pt_regs(&sf->regs, env); + + save_fpu((struct target_siginfo_fpu *)(sf + 1), env); + __put_user(sf_addr + sizeof(*sf), &sf->fpu_save); + + __put_user(0, &sf->rwin_save); /* TODO: save_rwin_state */ + + tswap_siginfo(&sf->info, info); + tswap_sigset(&sf->mask, set); + target_save_altstack(&sf->stack, env); + + __put_user(0, &sf->extra_size); + + /* 3. signal handler back-trampoline and parameters */ + env->regwptr[WREG_SP] = sf_addr; + env->regwptr[WREG_O0] = sig; + env->regwptr[WREG_O1] = + sf_addr + offsetof(struct target_rt_signal_frame, info); + env->regwptr[WREG_O2] = + sf_addr + offsetof(struct target_rt_signal_frame, regs); + + /* 4. signal handler */ + env->pc = ka->_sa_handler; + env->npc = env->pc + 4; + + /* 5. return to kernel instructions */ + if (ka->ka_restorer) { + env->regwptr[WREG_O7] = ka->ka_restorer; + } else { + env->regwptr[WREG_O7] = + sf_addr + offsetof(struct target_rt_signal_frame, insns) - 2 * 4; + + /* mov __NR_rt_sigreturn, %g1 */ + __put_user(0x82102065u, &sf->insns[0]); + /* t 0x10 */ + __put_user(0x91d02010u, &sf->insns[1]); + } + unlock_user(sf, sf_addr, sf_size); } long do_sigreturn(CPUSPARCState *env) @@ -356,9 +420,63 @@ long do_sigreturn(CPUSPARCState *env) long do_rt_sigreturn(CPUSPARCState *env) { - trace_user_do_rt_sigreturn(env, 0); - qemu_log_mask(LOG_UNIMP, "do_rt_sigreturn: not implemented\n"); - return -TARGET_ENOSYS; + abi_ulong sf_addr, tpc, tnpc, ptr; + struct target_rt_signal_frame *sf = NULL; + sigset_t set; + + sf_addr = get_sp_from_cpustate(env); + trace_user_do_rt_sigreturn(env, sf_addr); + + /* 1. Make sure we are not getting garbage from the user */ + if ((sf_addr & 15) || !lock_user_struct(VERIFY_READ, sf, sf_addr, 1)) { + goto segv_and_exit; + } + + /* Validate SP alignment. */ + __get_user(ptr, &sf->regs.u_regs[8 + WREG_SP]); + if ((ptr + TARGET_STACK_BIAS) & 7) { + goto segv_and_exit; + } + + /* Validate PC and NPC alignment. */ + __get_user(tpc, &sf->regs.pc); + __get_user(tnpc, &sf->regs.npc); + if ((tpc | tnpc) & 3) { + goto segv_and_exit; + } + + /* 2. Restore the state */ + restore_pt_regs(&sf->regs, env); + + __get_user(ptr, &sf->fpu_save); + if (ptr) { + struct target_siginfo_fpu *fpu; + if ((ptr & 7) || !lock_user_struct(VERIFY_READ, fpu, ptr, 1)) { + goto segv_and_exit; + } + restore_fpu(fpu, env); + unlock_user_struct(fpu, ptr, 0); + } + + __get_user(ptr, &sf->rwin_save); + if (ptr) { + goto segv_and_exit; /* TODO: restore_rwin_state */ + } + + target_restore_altstack(&sf->stack, env); + target_to_host_sigset(&set, &sf->mask); + set_sigmask(&set); + + env->pc = tpc; + env->npc = tnpc; + + unlock_user_struct(sf, sf_addr, 0); + return -TARGET_QEMU_ESIGRETURN; + + segv_and_exit: + unlock_user_struct(sf, sf_addr, 0); + force_sig(TARGET_SIGSEGV); + return -TARGET_QEMU_ESIGRETURN; } #if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) From patchwork Mon May 17 18:13:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440205 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1348785jac; Mon, 17 May 2021 11:47:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxclVN4EX18V+k587Ik6H0YTGRi5VXgaGYx/Ak9i3j0/b0B33zECKMuNOgRL0zlyvJk4Lkm X-Received: by 2002:a92:d0c3:: with SMTP id y3mr937423ila.58.1621277236626; Mon, 17 May 2021 11:47:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277236; cv=none; d=google.com; s=arc-20160816; b=WdAQu6HxiKdD9X0nv33slSS4csIHR+Rs5Az9Gjx8yMxDME/rJctupqpTd/CuhB7gmI roORkXFufdKDBEYytwdRkUy1HNRf1gIGvn9vozGVqAEOMwIuMs0MadFkVpAt9iXCeH9M cxBCV66mlgym0I5KSFdHVI0qnn4bShgCAZcif8qWxFUbVKP+Y/E+Mf4NtRIsqfpr8DOO 01Ut/h5Ae8qe/likKqKsh/qnN0Rt5IAQctt0sycEszXqNjXPgC9Py1i9DEH3rYjLIuC/ ZgpNm8mkDoDhQ2SQztGOIkoiDl93FWDFYoCNOMZPvu7ZevXZkn+3v9A2yWXgGT6LSScF GnQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=vN0oDmsc3UjdjL1taGIQ6tt3WLAuELNqFNQqNdnFgB4=; b=Gb/KHZH+VSDwLPYw6XWGq2E4fpUk8Hq49yYKxC2+Tp9s5gXjdHRvrCrLx5V1PE5btf MsbFv075h8FLGwfdM4KhYcvqbC1nfdj3E/pwahPL2U99Bt7e6UCoUZA5EWXsw473lsgi m/EA0nUBfOl3zwprYv72ZQkhCTrBsolEiKHCjKaf+6/issXsnuJ4H5YIAnHA57XS5Yg8 mbNCHqsXEVo1+G5M7GAhU6YVBStGSt8ry/ANrHbSl0Q7SW5w44PRYjQhuGYA53kAAwTs lv4R04mNxTPp1joO8lFPOBAvWkNogdwdvTMCmAMdf5JBPcdcDKvr9nZLucl9SGtMJq8i rEdw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id o9si3572774ils.154.2021.05.17.11.47.16 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:47:16 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:51392 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiGp-0003xg-NJ for patch@linaro.org; Mon, 17 May 2021 14:47:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34034) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlc-0006Xa-RQ for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:00 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:57751) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlN-0004SB-6E for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:00 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mgf8s-1lH42w0rS0-00h2rK; Mon, 17 May 2021 20:14:42 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 31/59] linux-user/sparc: Implement sparc64 rt signals Date: Mon, 17 May 2021 20:13:56 +0200 Message-Id: <20210517181424.8093-32-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:zFsJ3/YCp0xRqELRTZRHyklHQ0T+8cRIL1iMtDqRm6bzMdls9wf eQ3f9R78SjN4+FUBw45CUSsu28RvhE9SmR/meK61KS1dreHb2qEzZqDmNZOSw2weeCU+Os6 Xq3xeEye0exybe2GjP7DRAGPH0deEfJQab9qRK18gE5t4NGT3Qaxb0/DjHzFOJDPmnWv6ka GS4iEwlOkI9AEcbuQigGw== X-UI-Out-Filterresults: notjunk:1; V03:K0:PJfrkfkM2og=:tPiZ4ov72aMrTDI53v9UGQ GlItALMKorweOUSFYZ6RtxLkGaP3mgBQ3I62NNigPlRSKvZnA7Qs3ScfQWeg2ynTAWVhTwQXl daO9tYLAIup5ib/cJV9ge5/l4xhbvlRZh+W/YxJuQL/cZh1GcF/o2dLzmkvOVUxL+uN27q2J7 uf6urT8t6224gVmkECB8uujFfSlKWhGDhEu2Bs4YjA1w5Y+jmZv+OzzjhBc/7cseEJtdUFeye V5h6nd6tfa0m3TEnUXnf6qbwBo9ZM+qSIb7stJftUnoEY+V3KyjiUvjoe7H/Rzh8l/k0EX149 z80LErIhv6aEIQlK4bma5aQmuNnER4WMKXRspQf/hl5rOHXS8bztjfsgXkUijxfbGiXSoCeI4 zOxFQTKDOssT69MhnrWFHaHSEi4ehMno32BVTcG0SvrJAmiWws/w33nNNLB/lM7+gOYtIguF3 +QiR8jmHSoUivy9ud6HG5Ty8eVQautPAQk2jN6BG4AP94mlFIhVftcJzkgH82JHq2FkTdJMQz xHPSRdTsFAkCa7jSjwA7LE= Received-SPF: none client-ip=212.227.17.24; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-25-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/sparc/signal.c | 27 ++++++++++++++++++++++++++- linux-user/sparc/target_signal.h | 2 ++ 2 files changed, 28 insertions(+), 1 deletion(-) -- 2.31.1 diff --git a/linux-user/sparc/signal.c b/linux-user/sparc/signal.c index 362993da0281..0cc3db5570e8 100644 --- a/linux-user/sparc/signal.c +++ b/linux-user/sparc/signal.c @@ -61,6 +61,7 @@ struct target_siginfo_fpu { #endif }; +#ifdef TARGET_ARCH_HAS_SETUP_FRAME struct target_signal_frame { struct target_stackf ss; struct target_pt_regs regs; @@ -71,16 +72,23 @@ struct target_signal_frame { abi_ulong extra_size; /* Should be 0 */ abi_ulong rwin_save; }; +#endif struct target_rt_signal_frame { struct target_stackf ss; target_siginfo_t info; struct target_pt_regs regs; +#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) + abi_ulong fpu_save; + target_stack_t stack; + target_sigset_t mask; +#else target_sigset_t mask; abi_ulong fpu_save; uint32_t insns[2]; target_stack_t stack; abi_ulong extra_size; /* Should be 0 */ +#endif abi_ulong rwin_save; }; @@ -232,6 +240,7 @@ static void restore_fpu(struct target_siginfo_fpu *fpu, CPUSPARCState *env) #endif } +#ifdef TARGET_ARCH_HAS_SETUP_FRAME void setup_frame(int sig, struct target_sigaction *ka, target_sigset_t *set, CPUSPARCState *env) { @@ -291,6 +300,7 @@ void setup_frame(int sig, struct target_sigaction *ka, } unlock_user(sf, sf_addr, sf_size); } +#endif /* TARGET_ARCH_HAS_SETUP_FRAME */ void setup_rt_frame(int sig, struct target_sigaction *ka, target_siginfo_t *info, @@ -322,21 +332,28 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, tswap_sigset(&sf->mask, set); target_save_altstack(&sf->stack, env); +#ifdef TARGET_ABI32 __put_user(0, &sf->extra_size); +#endif /* 3. signal handler back-trampoline and parameters */ - env->regwptr[WREG_SP] = sf_addr; + env->regwptr[WREG_SP] = sf_addr - TARGET_STACK_BIAS; env->regwptr[WREG_O0] = sig; env->regwptr[WREG_O1] = sf_addr + offsetof(struct target_rt_signal_frame, info); +#ifdef TARGET_ABI32 env->regwptr[WREG_O2] = sf_addr + offsetof(struct target_rt_signal_frame, regs); +#else + env->regwptr[WREG_O2] = env->regwptr[WREG_O1]; +#endif /* 4. signal handler */ env->pc = ka->_sa_handler; env->npc = env->pc + 4; /* 5. return to kernel instructions */ +#ifdef TARGET_ABI32 if (ka->ka_restorer) { env->regwptr[WREG_O7] = ka->ka_restorer; } else { @@ -348,11 +365,16 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, /* t 0x10 */ __put_user(0x91d02010u, &sf->insns[1]); } +#else + env->regwptr[WREG_O7] = ka->ka_restorer; +#endif + unlock_user(sf, sf_addr, sf_size); } long do_sigreturn(CPUSPARCState *env) { +#ifdef TARGET_ARCH_HAS_SETUP_FRAME abi_ulong sf_addr; struct target_signal_frame *sf = NULL; abi_ulong pc, npc, ptr; @@ -416,6 +438,9 @@ long do_sigreturn(CPUSPARCState *env) unlock_user_struct(sf, sf_addr, 0); force_sig(TARGET_SIGSEGV); return -TARGET_QEMU_ESIGRETURN; +#else + return -TARGET_ENOSYS; +#endif } long do_rt_sigreturn(CPUSPARCState *env) diff --git a/linux-user/sparc/target_signal.h b/linux-user/sparc/target_signal.h index 911a3f5af55e..34f9a1251909 100644 --- a/linux-user/sparc/target_signal.h +++ b/linux-user/sparc/target_signal.h @@ -67,7 +67,9 @@ typedef struct target_sigaltstack { #define TARGET_MINSIGSTKSZ 4096 #define TARGET_SIGSTKSZ 16384 +#ifdef TARGET_ABI32 #define TARGET_ARCH_HAS_SETUP_FRAME +#endif /* bit-flags */ #define TARGET_SS_AUTODISARM (1U << 31) /* disable sas during sighandling */ From patchwork Mon May 17 18:13:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440198 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1346323jac; Mon, 17 May 2021 11:43:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzCVEBpvtSp38TUTdD3wrpEAr/2D7lVIv/1QjxweEEV9qIjbyJ3g0L2B+9aFdlvNoIh6/Y7 X-Received: by 2002:a5d:9842:: with SMTP id p2mr1141560ios.132.1621277014199; Mon, 17 May 2021 11:43:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277014; cv=none; d=google.com; s=arc-20160816; b=LRAra11LmKNuzqvqbUlNHBGQ+U5a3CzeaOYdMn1yUHVJ6cp3eIgsL5C1+YZCpK5nBC TXkV7mvruVmplsUAjwifoYmT/SCIGIQ6jC0mOs5TvCBjw5FJ7UF0AwxcwZIjMvOOXc0K 1baQuZHFyg+vEU+xf0DRV0lZ2SIMWudELYle+K2laPcHHVM9mo55q/r69vRsj0Zeqt+W BzvEqUpHjO2RresZJDGa0vDvb++RfVIIJmprH6l+cE2DtSKF9gY3wacfgg5raQVEDlfw b0vlXcnDu1xJTl8KbUNbF+QMhedh6VSfD9gtlwl0lCvPhIMupjPEjEesT5Z/w8iCR5VA xqUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=VCEgtpMLXS1tTOklw90XyqjHvQAjSRfTzgH26PFWDcM=; b=rSLaZ+ZFmoFqmKAR8KdUaw0pHTnHohgaqCmHY7QS1JDa7Ib+oYECBBDoqxB6EXUn0s ku2YCzFKb91TuWYy8WHcO2IelmVXU5iM7cEp4Q4mJJ0AkgZMUuJ/ZhrkDb6heTzsA5K2 BiQ2vXbSVODN/wg8nrqX0V2ZGi84qTYWt2jg6zq5sXdzoZTadDkK5cunrBDVyKK5ksfo JJFUT4GpqvmyOiiqbukZIjCYBqYO15RwUn3NwB4525zMFcCoKoY8DZkp5CibHIUnIlv8 YSqItQAYkM0qVcKMCa5+Oja+8jzl2nz4+IK4m4qz42zHn++Edx8GUMdMO/a2+LZYqZcw Hhaw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q4si18465774jas.111.2021.05.17.11.43.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:43:34 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:35822 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiDB-0001xT-Co for patch@linaro.org; Mon, 17 May 2021 14:43:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33974) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihla-0006NS-CH for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:58 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:50473) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlM-0004SF-UO for qemu-devel@nongnu.org; Mon, 17 May 2021 14:14:58 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mjjvp-1l2T4D2c4h-00lDzh; Mon, 17 May 2021 20:14:42 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 32/59] tests/tcg/sparc64: Re-enable linux-test Date: Mon, 17 May 2021 20:13:57 +0200 Message-Id: <20210517181424.8093-33-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:rfgSqyEnbY/DA7yR1B1wh95ffksCs7v5/tQs1O5cTeB5Y8ngeFr yRzNwa2JyklmRbeqx3ItJfD/0I2l4okbwgOL1GvQUEuO6pJztfZe58kBVBbR9D1z4p2Ib4Y lrHf6eizSdGt4L9caQfsyhJ0fn3h2NEdl5n5sYko+jQBVtURVpMpBQ8RlKcrY+w3UGq1WBj 5oNbmWDc/RIMpmd3s8sjA== X-UI-Out-Filterresults: notjunk:1; V03:K0:FVrNKecjWYY=:58U54jAbDB4ujs7jxPou2v G4h2M+wE858Xpo35kSOT0s6fMdgW3uKXFniAY+CMFl0xARHstb36LP0LxscaLLT/CWta5Pm1i ouzG5hH7fvs/qnmX7A6KCpUaSB7iI3KwuYnVs0Ea+Bp60OIPF9e9ADhz1ksM8zGxjH43/8v0U bqbE4TW3EDkFDL1A13ynOBWDYT66TykqZJ/h4iEf5wcrUH2nIBiOloLgvOi0C0mnAQzo5SMcq yxNHO/AWGQU7fyrQQhJiJF8S2cohgyYGNyGlFjF49oTu13U/tbN2zPd9yBeHjVAMOqVvZ5m9N OG/KuqyrcZI44dUMOitdnwntmVsaiHBlFVoUzz5++bbOwgTC1pbPd/L3n/VBjCXE/kWTa9QFy QqSy5bt5ZZfMGBwah0I8P9uzyG5jWvW/x/WIU/f8hr8qnNfIlBxxafZEiD1wjdW+5UlAF5UIK mHi7KLb+4OJEnhATuKHKTjRtuh+XVNd6apYCecr+lwptK6FNxZswu7fB8c61BWVYxiiXPYPaR Tol6JIkMi4gQUKmyLmUAbE= Received-SPF: none client-ip=212.227.17.13; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson It passes now that we support signals properly. Signed-off-by: Richard Henderson Message-Id: <20210426025334.1168495-26-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- tests/tcg/sparc64/Makefile.target | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) -- 2.31.1 diff --git a/tests/tcg/sparc64/Makefile.target b/tests/tcg/sparc64/Makefile.target index 5bd7f90583d1..408dace78394 100644 --- a/tests/tcg/sparc64/Makefile.target +++ b/tests/tcg/sparc64/Makefile.target @@ -1,11 +1,6 @@ # -*- Mode: makefile -*- # -# sparc specific tweaks and masking out broken tests - -# different from the other hangs: -# tests/tcg/multiarch/linux-test.c:264: Value too large for defined data type (ret=-1, errno=92/Value too large for defined data type) -run-linux-test: linux-test - $(call skip-test, $<, "BROKEN") +# sparc specific tweaks # On Sparc64 Linux support 8k pages EXTRA_RUNS+=run-test-mmap-8192 From patchwork Mon May 17 18:13:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440193 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1343647jac; Mon, 17 May 2021 11:39:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxVwtgHR4eSebk42S+D+mqY7AU+x68ye2FZMOBfURckkod6f/jnVVq9K1FUlY7r5e8/x/3b X-Received: by 2002:a05:6638:1650:: with SMTP id a16mr1349815jat.23.1621276798943; Mon, 17 May 2021 11:39:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276798; cv=none; d=google.com; s=arc-20160816; b=Cnxy5xmfMpY872Gn8w2RFPngxKNs2zBrkT1DoS8oCFvJPJrQTYmQqfIPpn/34jC96r +uRETu7OwJKv7LCvs7L6Ei/8B32qJP+hTjxlICMHKTeMSIuDOuuZeU5ZuXJG0BlHlKFI 7HEI83zxGfmSTztorDk5+oDTxVhn1Vgp9cz09NyM4/BKiHS/Et6gbc49dHJNU+Z2V+qw eVOgZy0Fra7QPFb4s/9vcjoRl6VBxRo8GczqCCujCrdFdgeNcaWWTuqchj8QkK2wYtAR C9ka2WNFeTZ36k6qrF0l5a21mUQ6F7TKApU4e95H+gAMJ1i1xnbU2t/vNP6Qgjiu07GL vZGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=kmj7LNwo354w2ZpxcboshtdjYyuQepdDlgh7nxNI65M=; b=x3NXMGMuXMTqbeaX6IoghANVpMQYzVRIOa6PxsUmtBVr6Cp0+VP7SpAQVYzGQwKT62 vbNkI5G1bbXme/EViG9kpbRrYSu1WUPWua59kGa3/Jho9MRLTypH3V2wXtarFZv7ooGU WXyjAuQdyLmoxaDQuQsVYYjkzoE9lxeS/Qnefh990Jmbvrg9HGcHiFXO2gXsUk1pcAz3 Pqh9O/02Fvt+o9YGIxpflQbBDHrhCm0Pk28nv2RJKn77nwH1L4Iu/LUIhUuHDmqFsm9W FjVKRcKTB5mBEf5AS3H0X1OH2rVl/0FyqTDvv7LIWrWngnQaPF5T4mS1fPZrkazmqIw8 YQkA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id u9si20004499jat.83.2021.05.17.11.39.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:39:58 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:55684 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii9m-0004ar-Du for patch@linaro.org; Mon, 17 May 2021 14:39:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34086) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihle-0006gr-Vj for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:03 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:45235) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlO-0004Sc-K8 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:02 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MMWcT-1m1CWC0Oal-00Jbsn; Mon, 17 May 2021 20:14:43 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 33/59] linux-user/s390x: Fix sigframe types Date: Mon, 17 May 2021 20:13:58 +0200 Message-Id: <20210517181424.8093-34-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:TxyEcAhsSbqBLujpqtJut140YA7aMpj9BH3C0P+OZX0DvPZjZVj qTeLWG21Z932mGU8DK7KiW69E02mKTEFF5WMoOo9eAetvvkxAzAL4+ECfDV1adRZxovGvm6 iZAAyApdt8lcysZOHSWGWTk+aa5I+sjuByDV8QKw7dYtusoOYclbcKuPV+7QyTz1WXYcOVH goxsOdUiv2oI5s6zQg3gg== X-UI-Out-Filterresults: notjunk:1; V03:K0:wqb2OFwA6zE=:kPKLwNaXDZz2iukfeNE3fo ZTJr+yTa1HWKw7GHCCu8UnaIZqsYkQw/S6o03rbWDp8mC+ZJN4mJ50tipItiOGwiQ3uDKnIqM s0ZP4KxdWKv8Nbmsphm537NhPi2GOTTyqMcc4OxbJTags2j/GFG7MtKm+8pt/rantdARdEKEr j541iBU63haNR5roE2DCQgaJcYZ5hyjWIavTY2vDxvPmDM83w4N86GRbk234rmhx9oVtR3Rmn ylzOWHbGOky1XLQPfkNjMMKvYo4hBTKrve0tvh1YVmYcKq+Ay0bSC20SEwCnrxXqk/7cos6Lp DPf4uaJZgA9oj+1Qxve5ethQpCMrpMsMDV3iRdr+o6eF4kfGcKCQLIfEz4TEYuZdcQ9rtbCtj vSEYhbYex4+y2HqeD8roaTALp9n+j4533g0xnnskznMvw4QRNK2oNlpikEC+NhgQu4p/ifZ7P qAIgQ7LhbKFemE7hNfmEuZATFG6JC8hrkJ7AzoWXY8fubt+YB6LCrI2LH92aD7pj3F0bm4Rj3 6yiCX7H0rfNK9GvClVXZXQ= Received-SPF: none client-ip=217.72.192.73; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Noticed via gitlab clang-user job: TEST signals on s390x ../linux-user/s390x/signal.c:258:9: runtime error: \ 1.84467e+19 is outside the range of representable values of \ type 'unsigned long' Which points to the fact that we were performing a double-to-uint64_t conversion while storing the fp registers, instead of just copying the data across. Turns out there are several errors: target_ulong is the size of the target register, whereas abi_ulong is the target 'unsigned long' type. Not a big deal here, since we only support 64-bit s390x, but not correct either. In target_sigcontext and target ucontext, we used a host pointer instead of a target pointer, aka abi_ulong. Fixing this allows the removal of a cast to __put_user. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-2-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index b68b44ae7e99..707fb603d72e 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -37,13 +37,14 @@ typedef struct { target_psw_t psw; - target_ulong gprs[__NUM_GPRS]; - unsigned int acrs[__NUM_ACRS]; + abi_ulong gprs[__NUM_GPRS]; + abi_uint acrs[__NUM_ACRS]; } target_s390_regs_common; typedef struct { - unsigned int fpc; - double fprs[__NUM_FPRS]; + uint32_t fpc; + uint32_t pad; + uint64_t fprs[__NUM_FPRS]; } target_s390_fp_regs; typedef struct { @@ -51,22 +52,22 @@ typedef struct { target_s390_fp_regs fpregs; } target_sigregs; -struct target_sigcontext { - target_ulong oldmask[_SIGCONTEXT_NSIG_WORDS]; - target_sigregs *sregs; -}; +typedef struct { + abi_ulong oldmask[_SIGCONTEXT_NSIG_WORDS]; + abi_ulong sregs; +} target_sigcontext; typedef struct { uint8_t callee_used_stack[__SIGNAL_FRAMESIZE]; - struct target_sigcontext sc; + target_sigcontext sc; target_sigregs sregs; int signo; uint8_t retcode[S390_SYSCALL_SIZE]; } sigframe; struct target_ucontext { - target_ulong tuc_flags; - struct target_ucontext *tuc_link; + abi_ulong tuc_flags; + abi_ulong tuc_link; target_stack_t tuc_stack; target_sigregs tuc_mcontext; target_sigset_t tuc_sigmask; /* mask last for extensibility */ @@ -143,8 +144,7 @@ void setup_frame(int sig, struct target_sigaction *ka, save_sigregs(env, &frame->sregs); - __put_user((abi_ulong)(unsigned long)&frame->sregs, - (abi_ulong *)&frame->sc.sregs); + __put_user((abi_ulong)(unsigned long)&frame->sregs, &frame->sc.sregs); /* Set up to return from userspace. If provided, use a stub already in userspace. */ From patchwork Mon May 17 18:13:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440199 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1346529jac; Mon, 17 May 2021 11:43:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJww6n/rBnqEpmi+8G3/8AvoWU2LHnD5568mUUDI2FfWuW19N4flmEDjIJsHqWzCg28NNGKX X-Received: by 2002:a05:6e02:1147:: with SMTP id o7mr951255ill.20.1621277033780; Mon, 17 May 2021 11:43:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277033; cv=none; d=google.com; s=arc-20160816; b=mpqWvHL3YCEwh7eXl5MzVv61EBsw5zgFMz7EguXnjgwp2hgvrp+sKe1EL7TPztn4Xf nEyn45XZSO8YqHAd8A9jCuidPpjM4IrnyVkVJ9Oj0V9OTlqz/1EAllxyMLxofMlJpehb s40ZQSqb34fu9MAftx2E1TPiCXWHXIycSWnDei51OfMgIBsrfDfMzKsyFmxL7bQOPDCU ZIUH54vwnmUqyRp2vAYP9fuxW/EwujLObKzb+250LdfEJDmIz884rgboZ2iNjTUR/qAu hxheXZFnMnfb0ravyWS/DcweL7iItgmU3ipGpzvjtqup7lBaymXGhZeDdDWBK1cu+AMn o+TQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=mOFjYe8TSRqUICWmZ48l3PKrMuY06Mmde7iB6GF5KLM=; b=dvPKdhtuArpNp64UCg81JlKmmj83XHCy5q5S3kL36BU8duQ6qHvm1Fq1YSjmwNHg5j LakeT41T0+vmYtpEOcByWOCaV843Zr+3W8qpdoNdPdmRGpS7m1H+13M9L1ntrRim/IyT 20Rcib7H+/K0pVrgGpjYcC/FY//Q6gr15ooUJUHSAVCS1nvlm1bdsBKK3sZR3Kn4XdqW VkEuhAQ645oGcAmLw9DxWu7lj/OW11qVsnBUF7xmn5siBbey0hf3laZdqRZcfW+L3glS 37KmTrg/iwgyIaqG2mPBaONUAiFKSm5xygtQ+FKlWBKkEy0lAxV1mDMTtJIq+jba0VPT tnmw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id v1si26649276iof.80.2021.05.17.11.43.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:43:53 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:36084 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiDZ-00028l-8t for patch@linaro.org; Mon, 17 May 2021 14:43:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34094) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlf-0006iM-CR for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:03 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:36535) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlP-0004Sx-Oy for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:02 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MfZDK-1lFxaF2OLo-00fwvm; Mon, 17 May 2021 20:14:43 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 34/59] linux-user/s390x: Use uint16_t for signal retcode Date: Mon, 17 May 2021 20:13:59 +0200 Message-Id: <20210517181424.8093-35-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:saUIS/JUgEHcFxd7F61bY8GcQSMpxPeW5wJd3MjqdesNbpHTUu5 sI1VsDUHQVJ2wzfCYhbsUYUWGa5Jw/OEaeGHVpyum9TvoHO/dN4prWt+TfRIiGPCiPKyssb rGRnPq0XuFuW/SO6DEq0WuIEBFwqaApg5wzs3XC5uH33ELd0CJeA7D99JPRapDsyD9l/+Vc yFL8kx4TjQc3+/15Kgsqw== X-UI-Out-Filterresults: notjunk:1; V03:K0:V5tGAiR2vBU=:MiaCXCbqWhcPESQBMH+/uA BRa7JR2CIpIDK4g6RdCIZX6YxZIJi6t2kmvOHI0etmNhbi1LWoEiYlGkfEiGAQlPJwodbXP0Q ZK8jlufYvv+MxYwUKeHLbFyzw/hUBmFIrOM3SCZO0lyCW2nhobaBKnrf7ejCd1Q6Cg6C5on/B ApoLQvW6UIRpBLCdSFilRqzSHQLHlnBowCpUqgtMha0FjVoPKpW+XtTpyacDmrw/o2K8+K/Ev G7b70+esBbfNuCxNbipkj5W8jlF6FbEdKMoHL4gXhMWDsK9J/9XeM69aPiB21nuDUQiQ6jSq3 +siq88z4gcYFjACMa6DjLR4Ceqgc1h43l+pq5zjUgr9BN/DAGHoSBLT+E9YCtGyNJd/CVG6yb n6MPnpceqCfUhuYK54b0tdG/ZYCBemef6yMZfq9sYxbsED/ZHlAMQ533WCuT7ezBy2+Jwhqer XajyKGJ7W627jCp/UZ7C4+ObMRKfCi0K7nBB4FaNR3lwAtOZi/RGCLqmv487DkM/cDYD4kYlE beprcoQ4IftLprwPMflKK0= Received-SPF: none client-ip=212.227.17.10; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Using the right type simplifies the frame setup. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-3-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 707fb603d72e..fece8ab97b3c 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -25,7 +25,6 @@ #define __NUM_FPRS 16 #define __NUM_ACRS 16 -#define S390_SYSCALL_SIZE 2 #define __SIGNAL_FRAMESIZE 160 /* FIXME: 31-bit mode -> 96 */ #define _SIGCONTEXT_NSIG 64 @@ -62,7 +61,7 @@ typedef struct { target_sigcontext sc; target_sigregs sregs; int signo; - uint8_t retcode[S390_SYSCALL_SIZE]; + uint16_t retcode; } sigframe; struct target_ucontext { @@ -75,7 +74,7 @@ struct target_ucontext { typedef struct { uint8_t callee_used_stack[__SIGNAL_FRAMESIZE]; - uint8_t retcode[S390_SYSCALL_SIZE]; + uint16_t retcode; struct target_siginfo info; struct target_ucontext uc; } rt_sigframe; @@ -155,7 +154,7 @@ void setup_frame(int sig, struct target_sigaction *ka, env->regs[14] = (frame_addr + offsetof(sigframe, retcode)) | PSW_ADDR_AMODE; __put_user(S390_SYSCALL_OPCODE | TARGET_NR_sigreturn, - (uint16_t *)(frame->retcode)); + &frame->retcode); } /* Set up backchain. */ @@ -216,7 +215,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, env->regs[14] = (frame_addr + offsetof(typeof(*frame), retcode)) | PSW_ADDR_AMODE; __put_user(S390_SYSCALL_OPCODE | TARGET_NR_rt_sigreturn, - (uint16_t *)(frame->retcode)); + &frame->retcode); } /* Set up backchain. */ From patchwork Mon May 17 18:14:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440190 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1342043jac; Mon, 17 May 2021 11:37:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyihRQSBCAu0IrT+93FOgn0V/3fhvaarRr+aRDQajTsfQDm8dwDfOb7JPXhyXywvRUVjMPT X-Received: by 2002:a92:ce90:: with SMTP id r16mr929217ilo.220.1621276652488; Mon, 17 May 2021 11:37:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621276652; cv=none; d=google.com; s=arc-20160816; b=O9/0mlD8pZycJM4b1YB4EZd7+aWCqG4oPd0MP6Z35qYHL+PG4/TYHCWdjN+BODiUYN cSSPtYCoFJMzeYcamQag6T56okeZLFZ4ThHHl22WpxZA0nyOYiLL086jucopAzkBTt4v PKecsMK9ZOEBXiuHFH4WUNp8X4dwT6xp4UM2N1xDDh0+tjoEfjGuKDZbhWmWVNA+4P0X +8GUnpK8g1cZEbgB8uT7IJBYJQhUTocVq+8tWwREJPExAQEnQpIryew1IpfK3WjMmenx tkZ3cU2ijOp52tAG1JdK+E+WYne0spuGBhwavlUq6fAcr78i5dl58+xrWItWpVDHTG1j Mxyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=+Bv26SxF605u1xBocVZ8U5WN7bzh+ew8VkXdHFmKrLc=; b=D86V/LINIqJIPmf52AuPHHba++Wn6ZN7yaIv9vsVay+mJKhuCtJkvrocyFyKLEwhMq P2zVnmL3oV0t5JO5y4MLICSKTkNedEBkdt0CIPZbk3gvfLTx+b50leRP+NbJC8sdNTeK NWbzbffQ0UeR1wenIbrp4Uq9a/Z035MxRNVBVbFOURdI9B4HK+Zs4kTy2Sn/LQIAesm6 zfiqPbPDI6xXKfthA4m50DL1sgVWoh9ED/R9UZYAsRASYlOntagPPWTPjjY0m6N5ZbFg qrx006APHpa77L1PQJEVpXg4b3+RJBXKuvFDkFCcWPAovkuDnvbDcGMdeQcDyEbwYg8D ZryQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id n4si17103037ion.59.2021.05.17.11.37.32 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:37:32 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:47256 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lii7P-0007KX-UH for patch@linaro.org; Mon, 17 May 2021 14:37:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34072) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihle-0006fR-Ji for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:02 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:58513) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlQ-0004UO-O2 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:02 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MLQgv-1m063b0Hvn-00IVxF; Mon, 17 May 2021 20:14:44 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 35/59] linux-user/s390x: Remove PSW_ADDR_AMODE Date: Mon, 17 May 2021 20:14:00 +0200 Message-Id: <20210517181424.8093-36-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:Wr5S8DKryzW8N/vKmub0WzsI8+MbbgwMxhlhxFS2DK4vwwfN/7B MVLm44pCzz5Bu+FD5ptchO7rbZbCU7phSC0Dzfw+q0o6OXXQwqarytaBpNuW+MbCXwUz5w1 ncdxw+/ynF4XtIaNc6E2XaZ3R7xy5YUcCp6+2xlNDQsvvxpL9x4zf+zHC0cgIj9dP/8nEZg Kjbnyl34dCmvk8SVEdh9A== X-UI-Out-Filterresults: notjunk:1; V03:K0:QllEDAhyNFQ=:U/QsBuE8mlh31uCPObN+o1 o8+K2ZbLu3vcmgbA202t3Bqk6/VwLKq/e41ZKlBaqnfxKycwI70GQ7Y4XgrHBvW5ds94q8p8K rUsuRUAXJ3U35QVJ7y/NoznBtJwlfalshgLvTBUut1BRxNay1hySb3xJF2kn0RYpkrXdzb3Z7 izBdnMraw2ga/Skc8sh8Eudsv9gDd6ZDIARSVcKJ+K27x+jRB09Old7O1r3rGWcvODr6fLeLJ ChZ7E3F+BCk53xRL3f6Rz1j2xBv10HbwNAonEwVgCN5envw+pbfEimx/Xt00jZzB/eDMgT0LU sH14zfqMh36l+WaJnIrrpDv4ybiTD8BBX+7uf8COuEcMLJ66SdJN+sCBr/0gnXnX3ul8UforC dDPSJ0YkMWnH2NZCodoZLj6AV0wpvfdEQZcC6us5jr+Mj2TWfgM43ONQWkAXO1MDS9RdJOsHd TJ7qGik1Fy7hUwYSm3nUTh1K2SE6DnvYy7/RNlPUFdHr3LEquAQGrRL0RvO1zzN7l1+/AO2P+ ao2lbAS8C53nvQetICSxcc= Received-SPF: none client-ip=212.227.17.10; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson This is an unnecessary complication since we only support 64-bit mode. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-4-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index fece8ab97b3c..1dfca71fa9b2 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -31,7 +31,6 @@ #define _SIGCONTEXT_NSIG_BPW 64 /* FIXME: 31-bit mode -> 32 */ #define _SIGCONTEXT_NSIG_WORDS (_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW) #define _SIGMASK_COPY_SIZE (sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS) -#define PSW_ADDR_AMODE 0x0000000000000000UL /* 0x80000000UL for 31-bit */ #define S390_SYSCALL_OPCODE ((uint16_t)0x0a00) typedef struct { @@ -148,11 +147,9 @@ void setup_frame(int sig, struct target_sigaction *ka, /* Set up to return from userspace. If provided, use a stub already in userspace. */ if (ka->sa_flags & TARGET_SA_RESTORER) { - env->regs[14] = (unsigned long) - ka->sa_restorer | PSW_ADDR_AMODE; + env->regs[14] = ka->sa_restorer; } else { - env->regs[14] = (frame_addr + offsetof(sigframe, retcode)) - | PSW_ADDR_AMODE; + env->regs[14] = frame_addr + offsetof(sigframe, retcode); __put_user(S390_SYSCALL_OPCODE | TARGET_NR_sigreturn, &frame->retcode); } @@ -162,7 +159,7 @@ void setup_frame(int sig, struct target_sigaction *ka, /* Set up registers for signal handler */ env->regs[15] = frame_addr; - env->psw.addr = (target_ulong) ka->_sa_handler | PSW_ADDR_AMODE; + env->psw.addr = ka->_sa_handler; env->regs[2] = sig; //map_signal(sig); env->regs[3] = frame_addr += offsetof(typeof(*frame), sc); @@ -210,10 +207,9 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, /* Set up to return from userspace. If provided, use a stub already in userspace. */ if (ka->sa_flags & TARGET_SA_RESTORER) { - env->regs[14] = ka->sa_restorer | PSW_ADDR_AMODE; + env->regs[14] = ka->sa_restorer; } else { - env->regs[14] = (frame_addr + offsetof(typeof(*frame), retcode)) - | PSW_ADDR_AMODE; + env->regs[14] = frame_addr + offsetof(typeof(*frame), retcode); __put_user(S390_SYSCALL_OPCODE | TARGET_NR_rt_sigreturn, &frame->retcode); } @@ -223,7 +219,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, /* Set up registers for signal handler */ env->regs[15] = frame_addr; - env->psw.addr = (target_ulong) ka->_sa_handler | PSW_ADDR_AMODE; + env->psw.addr = ka->_sa_handler; env->regs[2] = sig; //map_signal(sig); env->regs[3] = frame_addr + offsetof(typeof(*frame), info); @@ -248,7 +244,6 @@ restore_sigregs(CPUS390XState *env, target_sigregs *sc) trace_user_s390x_restore_sigregs(env, (unsigned long long)sc->regs.psw.addr, (unsigned long long)env->psw.addr); __get_user(env->psw.addr, &sc->regs.psw.addr); - /* FIXME: 31-bit -> | PSW_ADDR_AMODE */ for (i = 0; i < 16; i++) { __get_user(env->aregs[i], &sc->regs.acrs[i]); From patchwork Mon May 17 18:14:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440209 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1350175jac; Mon, 17 May 2021 11:49:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx9b9ZZTMtlJya13NhjDYmEq1QQH4kEszlTQ0Yt0fNStBJzseKRfvjy4DaCvQ9l8QRqP3K6 X-Received: by 2002:a02:cc8d:: with SMTP id s13mr1386710jap.17.1621277362344; Mon, 17 May 2021 11:49:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277362; cv=none; d=google.com; s=arc-20160816; b=jn3aFlicMn1l2NvxHjD/D4DAtWFfmN17Uq/rQ4OHY2D2ME4PlnWxqorfI5gvQ2iuAi y02FkiDCNcmox+ShRDb9XzAPdc6I6wXuUZRZ586btsVowrbbfyCUhm1UZn8yMsHc4DLK +HaL78rEoKQ74XOe9UqC1qnFbZx/DgtmAterxvq6PJ9cJWqpAgomwlMxNr/Dz4K4zbqf /Ajq320AfwjhIsTzCGAAomIjuBtGEavA+u06NvQtiMvueMkUVVe/OZLp8wbP2P7aDTJS F4DrkqeRS2wsAxVBQvh6da9KAP+grAn2a+eyOba1EjT4b+aaeJL5/kTEJ6MyfAGqYNZL tsVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=7SMseEfn+o74hdSlaIWSGim3Y0pchzh7J+VhjHNztRg=; b=N/HmSXVCejjWXS5vEl1EGvxNYmrfFNgeyeMeJ3VKd6GzIT8l5M1SHZbaQW3432vBLi paSUCnSehQ9Z7SxSZ2WrOSES88Gn84q5cCDHT03LkDfTxGnh+f4SsTHEZgdGC2B+XIFR cXv9q5mqHnrHK7Q7LcPiHSd4Vwr/2Pc56RXzJ8TtI71vL3oTdRBD2uWOIIhVQzAzuwn1 u+Edm15Q1aRsnEsm5w4dis3qpJo+/Kdkf8tIo+Lk1vmwb8oGfzgWEGrZK3D+gSYnYNBX drFzoEeCKmImCaY/pvo1PvPw71kiVSIaamAUseomltjavw5EutpOLsLxtUD1TFAzkzCl o9QQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id t10si11680411ilf.139.2021.05.17.11.49.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:49:22 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:33032 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiIp-00026x-Tm for patch@linaro.org; Mon, 17 May 2021 14:49:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34064) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihle-0006cP-1I for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:02 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:36869) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlQ-0004UK-L2 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:01 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mf0yy-1lFPLy2Cte-00gUtY; Mon, 17 May 2021 20:14:44 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 36/59] linux-user/s390x: Remove restore_sigregs return value Date: Mon, 17 May 2021 20:14:01 +0200 Message-Id: <20210517181424.8093-37-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:Jw3nzBlTDGO0u9kq2S9BtNByXZ/Ce2uG7M1VMYq1OYhykjeU3Cn H5QKqSuckVOMGm0kfXmJCW9ibRfcBxaPCQ9MSfjJd4qFwa02Z5jJmGTkdiQSbR3td92sT73 ihzJxIF12J5QcizDPOei4/jKNUtmrmxg/Nq8Rg2y8oCgVOjLItR7vZzZ3/ow8+QmGEdVVMy Ynuu50SLbZKZKqoVOm6Dg== X-UI-Out-Filterresults: notjunk:1; V03:K0:ZiU8Zokkm4s=:imDqsFdNdOX4i2aDrDyKTA rQENNzOXgAWD2OK24UhOAoAjASE/z71i00Oi9xJBihl0CMdJX3uhL6qh3wK3CLH6VEpcIBUAR VCTWTkSOXOshGztZ0KFuqiAIXiPMu9Fj9JqjXDT64fD6lMZONZh6edUmjytweAeNWV3gw5ZOa chrz3SebvM7clnIY/WbWPaJJedyTMLq8bFZ27Sc8fzpHmHMlFBPIj+Iqqo0KJ4sSqJqadpXAJ yZUSoO4YJae8KHLOlH2Jk8pXdpNjNjVsn7GxKSGbk5YYbxOJTTvVXuDUOvjV6WqVN/FTKNPx6 Wz/INlr1VjenRRUmBmNmq7Ruck2cBUM4+xKNqEyOXPNnDo9HYKKSjyyU8CtRIwpephNcyomMi s+qSbm5GPCUxP/eGSv8+yjuQ4u1QlWAjVW05un5PGJnYoe958UqpH5A/dAZ1MDPfQ9IFlrI2d 7T4SrTYhp7TmdaIPin4stz8szdR/PUYw2D3ulWuvadJXRXiK+ezouMt2mDJlggkSl6v9AmHMl Zv+FHxhMpBv8O2/+A6b6UY= Received-SPF: none client-ip=212.227.17.13; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson The function cannot fail. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-5-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 1dfca71fa9b2..e455a9818dea 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -230,10 +230,8 @@ give_sigsegv: force_sigsegv(sig); } -static int -restore_sigregs(CPUS390XState *env, target_sigregs *sc) +static void restore_sigregs(CPUS390XState *env, target_sigregs *sc) { - int err = 0; int i; for (i = 0; i < 16; i++) { @@ -251,8 +249,6 @@ restore_sigregs(CPUS390XState *env, target_sigregs *sc) for (i = 0; i < 16; i++) { __get_user(*get_freg(env, i), &sc->fpregs.fprs[i]); } - - return err; } long do_sigreturn(CPUS390XState *env) @@ -271,9 +267,7 @@ long do_sigreturn(CPUS390XState *env) target_to_host_sigset_internal(&set, &target_set); set_sigmask(&set); /* ~_BLOCKABLE? */ - if (restore_sigregs(env, &frame->sregs)) { - goto badframe; - } + restore_sigregs(env, &frame->sregs); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; @@ -297,9 +291,7 @@ long do_rt_sigreturn(CPUS390XState *env) set_sigmask(&set); /* ~_BLOCKABLE? */ - if (restore_sigregs(env, &frame->uc.tuc_mcontext)) { - goto badframe; - } + restore_sigregs(env, &frame->uc.tuc_mcontext); target_restore_altstack(&frame->uc.tuc_stack, env); From patchwork Mon May 17 18:14:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440213 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1351829jac; Mon, 17 May 2021 11:52:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxv1X7kg6qV3sM8d2enHlpn6sABwjNX+lDGbCzBgC0tzurw5XeUTdmo6DOVIobQr3bn6rA3 X-Received: by 2002:a05:6638:a2c:: with SMTP id 12mr1373460jao.99.1621277532017; Mon, 17 May 2021 11:52:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277532; cv=none; d=google.com; s=arc-20160816; b=x7H6Mdiu1+4TniwT6YdW5eo8FJqJaupbnHH8En/nOi+snAtBzKoU2AzUhPGPGDVj6u b0sUka6X4gdQ0AtopTSNDv+OYVreLfa8zIj2fvbbavsmFHR6TILOzL6KQ5w5AOdnMvxb wWVs4cVhZeS+/p73PxS8Ye0xa8UHhPPzqZ6RMmDat3n/M5bUaTZUaDWBk6CY4fmkiic+ kohSAzlx79bWPrm1HutGJCitjxCryM1ds4p/yUmc4DOwV87RuLurZeP/Ai//1y2G5iT9 hzG5Qm73oPtnxDrC1AUWJF/pQo1D1sdDX/W/45mwSTHlYXHOrPxMYc614yWP08yROInL T9Hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=fE6TmQjCnwYUvKRqprMae5Im/7A49/crteUSJSnovME=; b=vIdq//c7kn0AnmBMn0tkM7NPh8r9RZaRdMLqernV3t8cXwyjs/C5+F+9a+qVBJgPYL LKHJGWAfFZsS17DfH9Lx4YK3JozFGLkY+xj9Dlf9nFdX+yEjuoQQt1sbrr3AMs8ho19U EAovqRUjI3k9lTjn9AIj5sggreouyPx6ZO7vZUAmAwk14YsZ70LZN6R3BcYdqA8krs2Q 4h1eQPBbt2g8a5QFU41wERYDJg8GaSV7uvibymX+++gOBHrjTd1++Ewlef9J+sS/+hfl sn7PLgW/W8k+Rn9BlfEs09GwZFWk9nnUKsGnGBByHCP6xenqHtjmhmApU0hyE4tnsedc FRTw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id z13si12855038ioi.0.2021.05.17.11.52.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:52:12 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:41580 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiLb-0007pk-Ff for patch@linaro.org; Mon, 17 May 2021 14:52:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34112) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlf-0006jC-Sd for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:04 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:41665) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlR-0004Uq-AQ for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:03 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MhToz-1lDTXj4AZH-00eZ5J; Mon, 17 May 2021 20:14:45 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 37/59] linux-user/s390x: Fix trace in restore_regs Date: Mon, 17 May 2021 20:14:02 +0200 Message-Id: <20210517181424.8093-38-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:ize/B7UhVuk5fK136XV9ZGQcwUo7POg7AB5w59qw3EViKPs0Y7f tmLWQwjg63gla/LWcIkhqZrP9geeOPoL+/KcnfYIfPMaARdUHy23cb2H9bS4UeW4cobcV62 LaC1Cs9pG1ohE7i6cpqRUhQUbERsA7r9PVhiUt/g2phbNP5TyLFR9avZU8brscAEssKwALh DzLBJhqhOQ16gYH/5y++w== X-UI-Out-Filterresults: notjunk:1; V03:K0:yCen9tDK/1g=:bEXNQCOH3RfvHpZ4rkKXYw U+cHC2QyEugHJ4lm1mB/V1+orrADYep/kjuIDAnTmnGheF0VzFmUTrNRvFKyAfGF1mMtOUAeg 9i+6TgY9JKWu2u4w4atO0pWEWIUVu7YZxrq93bwiZfO7LKBx3N3TaOoeNRHLD+G81UPnzZKRW SBPd4fYJtgewi8ArBIOjs3dQ6mgX8ZkK17qwpTfr+xuhndHgta6rCJkf+PgGelzQDBeI5ki+q 2OFJmwxtz/D2kKmOu7UziMAIwZqfyTiaNtK410tVqQSdF52aN3tuQnzWGoKKaaVfpHxPc6zd8 ALaaWelnNOkoYE5QBXypX6ml+mmt2lQBEHtJELfqRCn0p8Jo8Nn0Z5KtJQYryQoqWdnWCmGb7 BtvWBuiDX+oDkqS/V1LXhmkSWcDSp3tyTH088LxFroQ0u7OwWllgnywMfoL6EFdWe0m6aCydT RyZnl4ssZEEoPf/fXenrDY/FaKqbUenxhyBT29OZ7UJnPICZSDsBito6KJTuGZul8OIyq0iww d4wiPWY9elaXRHG17iDR4g= Received-SPF: none client-ip=212.227.17.10; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Directly reading sc->regs.psw.addr misses the bswap that may be performed by __get_user. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-6-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index e455a9818dea..dcc6f7bc0274 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -232,16 +232,17 @@ give_sigsegv: static void restore_sigregs(CPUS390XState *env, target_sigregs *sc) { + target_ulong prev_addr; int i; for (i = 0; i < 16; i++) { __get_user(env->regs[i], &sc->regs.gprs[i]); } + prev_addr = env->psw.addr; __get_user(env->psw.mask, &sc->regs.psw.mask); - trace_user_s390x_restore_sigregs(env, (unsigned long long)sc->regs.psw.addr, - (unsigned long long)env->psw.addr); __get_user(env->psw.addr, &sc->regs.psw.addr); + trace_user_s390x_restore_sigregs(env, env->psw.addr, prev_addr); for (i = 0; i < 16; i++) { __get_user(env->aregs[i], &sc->regs.acrs[i]); From patchwork Mon May 17 18:14:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440217 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1353160jac; Mon, 17 May 2021 11:54:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzzbwKrTwo8N6Pc+y0EHpjEKhoKrdPto/JsVZKy2L9FQF9jeQvm7WJC99BgjlW4gTIY2mrt X-Received: by 2002:a05:6e02:13d3:: with SMTP id v19mr988449ilj.168.1621277660923; Mon, 17 May 2021 11:54:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277660; cv=none; d=google.com; s=arc-20160816; b=tpde7EV8cVBwcWFIYwiG9auAoCW05fRlgEjgVRFJ5wnPIsQloda2D+xP/pBx85JPOg TMg6ueY16wBsHrVz+zCHpORIW0L94ZL5O1czZHdtyXimgn6cX1pQiCoJ4M+5Aq3FCQhB 14wsL5q3ejwLzv/sYi7LQzpt3994GOrgiy+Q6YsFAlrLAlz0LqGYNcw946ZVXA4PGoUW L+opF80u/GzdPH+o1+5E8s2QRFs042LpbEY9pKrtO+4Y6+pTdhwTbpNB5WNM0g6n+a1n zDeFDAfgPt1D3Rzk/13VlVWK0QKc1TPqjvm5NmPJjeH1UZUTC7JEV7X927IJSkag7ARO K6ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=KwT2AKgZHezFIvCf5CFVAJxflDRN58W0gf8ZoImqk/s=; b=tPwrJ2dXJs/j3OVxcWpNB62vskKzm7HIKOAAuMfE20n5crqR9ukxw0qaHO4y0ZqLc1 oJ4zW8ymeL5Dy2vP8VPOoiIpJvUQN0X2QZG1bykxrrwboKvDRSAVgQi3WLPWk5ynGTjM Z2TcregQpYaMeYkNakJq1LOiMq9P6w3/KxxrkUOgz1IkJXaHKh8GAljLJZxGGXrZXTl5 y9iw6CUsXgNjwA9E18ddqRvO8r5A5JZLA1EmtBo9IwHEIiVutfeth7EfICd+WlG69WJc BRRZ/4cABRNAz5NL4aZz3s8rLsVS38IZtqcdE5TL8b1mdnkARpjl0uSj5wu6PaUkfU4r ETxQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id u15si22682166iot.55.2021.05.17.11.54.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:54:20 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:50112 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiNg-00056A-CO for patch@linaro.org; Mon, 17 May 2021 14:54:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34136) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlg-0006kE-Tc for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:05 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:48655) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlT-0004Vv-9J for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:04 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MuF4v-1lUcrD1jCv-00uaUe; Mon, 17 May 2021 20:14:46 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 38/59] linux-user/s390x: Fix sigcontext sregs value Date: Mon, 17 May 2021 20:14:03 +0200 Message-Id: <20210517181424.8093-39-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:blckr7dxOt6fnn2c3pCRwPDgp5g7P1ua3NjcL3r8XgPzah913oK BNk7o563760D+qv9v8cBEbtNK/s3GFdM0Xogv7y9ofR/nDRtEItR2h0ThkbgWoTXVh7o15F Qk8nn2OzaHTng1FR+kXUPdb6cMVUUhYGYh5yb13H842+v8dyeRnpGxNVNwMRhtMId3m7yru 6Uw9i18vHcXWmOZBswJbg== X-UI-Out-Filterresults: notjunk:1; V03:K0:ge27jKV5ccs=:nJax0jS16w/hYU0/2ZNwr2 C+FKcejJGgvMHWAvjS37mhWAuTgoDRXPrkUGdQ3AVcZc9WeHfUp72yBpz1pLpUVdXkjRVejoP vws5JSqdKLK5r3kw0nX0H4x+gD+XGXqcQjsw5X3cIp6+NR3uHkSnOWrvoeXTouw2HHNztJ5p/ 7EWfdrhYmeA+lSdkhECzevk/PDCOVa6YCgTMUozm7y9yDRWJGFVIoPVCpP55++kNDDEW04R2V 23OV/tKPbN+2RZXTXu4BNfFPCqRagMwufhj0t7eWScoZjWEsgf8aWcJQC8YkK9efwC+0dguGG DI8IqAxMQj3IXP9pW4QTXK+N6IQEHNVf2nvJDirz09ibacbGNeerUBqcAmcijvnG4ft21H8sI yEcPkR4rbjk2sg6HrCF8xJi1qZV9m+K/n7xHYX37FSmOMTquVeD+9EbhFmLvM94wx2pQrc02D FB8oqoovE6U3nSyA+VY3A0avZcAsTrT+YRWQlNMD0XQLBebUg9yptA5u+hbXbgnKmlZqlixwo O+2YIQ6ZQtJR9XE+zM7rnA= Received-SPF: none client-ip=212.227.126.133; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Using the host address of &frame->sregs is incorrect. We need the guest address. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-7-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index dcc6f7bc0274..f8515dd3329b 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -142,7 +142,7 @@ void setup_frame(int sig, struct target_sigaction *ka, save_sigregs(env, &frame->sregs); - __put_user((abi_ulong)(unsigned long)&frame->sregs, &frame->sc.sregs); + __put_user(frame_addr + offsetof(sigframe, sregs), &frame->sc.sregs); /* Set up to return from userspace. If provided, use a stub already in userspace. */ From patchwork Mon May 17 18:14:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440203 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1347604jac; Mon, 17 May 2021 11:45:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxmwAPIXwTWWZPBM4aEQZoYdvSVd60vTmam58tiho/sVqjwYbecjDRSMz/+cP1PChJ2lvMm X-Received: by 2002:a05:6e02:b41:: with SMTP id f1mr992801ilu.212.1621277137182; Mon, 17 May 2021 11:45:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277137; cv=none; d=google.com; s=arc-20160816; b=ngAMSV2bmN1o+a6oHQwlpgNEGwtyIukcsgBFyMjCxq0YwJFhKkW8tMKGXsuyGHCkqP VkWKfo/zaLP6R7Qmc9jy7mS+elDVSotoVjV1a+IBx59SZA7PTAjcLWJU0T2ASGfpS8hf JujuU1cjAYQqog7jIqYdZj9nSHRAM+8tD+8zJn+3dUmskoCntCOw7UkL8/BBtyt2FRRy K9skjlwi0cQoPdXza/gOMeS7p7xSrbg6YgHOOFWEwhmjvcl9clBFUz5ZGl6hoGBwt3Oc qp7Vi4X0v/vPcBsTisckqu5QcQSiHn9hBDJFWbt36F8J9dfEQatyo5xqGPQAwsEDYv5z NxBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=1XDkHvh/cCuWadzIi6xVKJJPPCiYB2bHW85iDtvupT4=; b=jKvZlZBE+zo8GP1CgL9s7jvjctZ8lM2w49jKqx7VzhKflKMdq6XhUbMprqIK40Jiso Zk8U0ezh743rfqExQ614HbFCWVIdts0N7r1/448YosFzJkGub4c3lXl0fLDl188F1ZyZ 0O3XtsOa36PhSoZaZH7IyCsFGhhkvgHypzj0/aaFDBy1KZx21iH2DwjTMcSh4TltPAXP M261DjGDZUFe3jyGKc3eM3/nhGkZtI73JLLpv+VCV/VOXsAqjbDv5tS5m4Vt7RU9kEqg +co0AdkOsiK45KobyQySVpyWuUA7UaW19xBrcDUV17metcmwnDSXOUSxSlZ8hHHY3RNX m+nA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id m4si9129370jah.87.2021.05.17.11.45.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:45:37 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:45258 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiFE-0008Du-JM for patch@linaro.org; Mon, 17 May 2021 14:45:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34098) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlf-0006j2-Hd for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:03 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:35847) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlS-0004Vt-Tj for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:03 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1Mq1GE-1l4Mjs3kfa-00n8mB; Mon, 17 May 2021 20:14:47 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 39/59] linux-user/s390x: Use tswap_sigset in setup_rt_frame Date: Mon, 17 May 2021 20:14:04 +0200 Message-Id: <20210517181424.8093-40-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:sDr+qBcJOWwJSUCZXGnJ7PntxOhThJtP/1INkQMxcVI61kaqbBN zNVl8XkqhtLYtz0TGJLgR8LFbbDiWX1Gx8/J+MDg+RCXSvxqCMmnPT7WNoT2C+pYAyjKmn1 Y6boePnV4XiLuqz2qrgG/E7FlIbN/AoOTdU7hM7MC9OmRUs7/Pr4GIO1vvwYrPHZAC8Nc2T C476RZ5Hnq1LT+ZM3rK8A== X-UI-Out-Filterresults: notjunk:1; V03:K0:QSpmc/rBGx4=:Vzl/XqzUllJ58RV5aFkSvh 5QyeI1WYUS6U2A5+uDF6UPN84079ZzqQqu5dOu3cbTY9n67x4ydMIz6yRsrnhg5PiqkJXH+Ab idTc7eFF3f6MsS6ht/qoQG1L5jdhla+J4Mjli8oY0WX02iJTGVs0XhlQHd74adW2Puzn0sexG lYqAmQf7sSeVQKju1UCeBqYAp6U6Vera1iLb2XRiu+nsyf/RvzjYQPWyKbsRL0EuqyiPNvHc4 NlV3jUQdsW0D2Fxlri1bX9kiXRukBBHWFPjN5akHXRTpT2DPZrQbUKpQmrhFVmeWfi5CGRxO0 UvYFFnAVtjyQ8MOfav2XWvLBC58cgkb7J11yh/LuG0OxLzjKPLLl8EShkEWQBwcU8G/fzGxwk rxvkvhmfXB4U/MeXXpLv8kB3RAYnkYM6euJ22WoU29M3o5I8WVQl1anPjsHRdId7GXm5jPaik YdY7z51xxD4Rj76V2ZlUXIQkEee9stGI4KDiiD8A2gkqXnPCRri7ozFkBVXyRQrfD/pSsiXa9 m1Lg4wUknZpq6I7r/6Z+3Q= Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-8-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index f8515dd3329b..4dde55d4d518 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -182,7 +182,6 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, target_siginfo_t *info, target_sigset_t *set, CPUS390XState *env) { - int i; rt_sigframe *frame; abi_ulong frame_addr; @@ -199,10 +198,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, __put_user((abi_ulong)0, (abi_ulong *)&frame->uc.tuc_link); target_save_altstack(&frame->uc.tuc_stack, env); save_sigregs(env, &frame->uc.tuc_mcontext); - for (i = 0; i < TARGET_NSIG_WORDS; i++) { - __put_user((abi_ulong)set->sig[i], - (abi_ulong *)&frame->uc.tuc_sigmask.sig[i]); - } + tswap_sigset(&frame->uc.tuc_sigmask, set); /* Set up to return from userspace. If provided, use a stub already in userspace. */ From patchwork Mon May 17 18:14:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440208 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1349848jac; Mon, 17 May 2021 11:48:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJycku7cKzrErmQgA3s0OYk9sl7HVQPmeWqSXxV93w+IlXXPZb1nAVk3K34QsKa/QPEop3eE X-Received: by 2002:a92:d1c4:: with SMTP id u4mr906841ilg.286.1621277331249; Mon, 17 May 2021 11:48:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277331; cv=none; d=google.com; s=arc-20160816; b=xRio6RMHyJXSUhHMVS7/2eDVX0AEXThfzJNiW/AwdkyrI0dfnb6KlVQZm+xLFr+UJL bZBCdAoQmB8p5O5gD8ntWdIax3hiOXEmcRzUDCqb9eNY9yCRAR7Ig38WXFbWAJQoGYtE uvRnpIlAtzE7saR5rVz3G8++5iqHZtuiOGTp0DIZmOrPx8sN4B3yOI3chBuqQqTAvYj2 /gHgdEYEK20m67p02qCo/rH+vb8MxO3GjMECoMqIC0R535m+lAmdXwepOE9kiPgYvCcO Y8R1TEn+8pzL4J369R7dmy8zu4yqLCwqa6SpuaW9CiozohTQIiW4NJU/I0eAGtXwkO2U p4hQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=GGt3s9PH54kVNpLEGyCmqOOnWNqSPdUuVvGJzLZhWRc=; b=TZ07wmJkF4MgwXCwdoPLPU9Z0VA2h7I1nrmhui9kE4qrvCMSAfCeA4wXE+TW9BAXSs jFTOAzRLnnxWCSTO5u+Z8KBkAu2jqvdbS8Z/+6VfUongIrmp0gJ7a4YAH7WS5ik4AYfk icrF7QiGA7kZ0ml2Q0AymZXua7BLcJnp/kgvNF/jbqrpSyfDCXcupImsITYDch1zOdN0 4zUr0l+8X7SUwwWpsMEIVVYGD5OhV0PgrlUUSUdrdAt79VIErS9nrJiDsTNMj1l1YKJ3 GIwrO+XiuaM7X21wS6GSWYnOo7nHeHYY/v76E/dW+RPMIMAARvH+pz/pDadNVKezfXRG vtUw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id b12si19270406jai.103.2021.05.17.11.48.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:48:51 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:59948 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiIM-0001Cs-N2 for patch@linaro.org; Mon, 17 May 2021 14:48:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34126) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlg-0006jX-DS for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:05 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:54961) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlU-0004Wr-BB for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:04 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MpTpc-1l8EMF1xr2-00ptfR; Mon, 17 May 2021 20:14:47 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 40/59] linux-user/s390x: Tidy save_sigregs Date: Mon, 17 May 2021 20:14:05 +0200 Message-Id: <20210517181424.8093-41-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:L+pOqaZU5qHZ9ZrlCwBDda0rr6kvzomzgFwGDGxRtRqWSrBjdGk 75in70yKMBDowbyO8yzk2aVH8uQE94N+FzFmkG6OFEr6AHUGN7Wmb5bqxMZHlgABmeO54nf VfPCDqDMoc3GP+xCxmbnZLwg/4elZsTjFnAwWsnoUgmLorf1i6bP3S9+UEjKS0os+no7KEA RvCRa4rgzL/lEVCH1Qymg== X-UI-Out-Filterresults: notjunk:1; V03:K0:BBjbWLZH9EM=:I66kj5DLtEODNIExcc6gKf uGPIMTryOvD9CEjIPeJRfyyc8pjDe4KKKL7FtJTqN5/XPMtoDLrO3DLYGZk6XhcCLE/qp08x0 lNGtS1L+4acDZXLCidWx+N3XXf3BxpE+Bsk/BCVuvAdT6AoB9tIaxmLdAFwwYDjqjcc+hnW8/ WB3r3qT572DbKm53EfSuc5Ic80lMbwQkP14yQF4Grsj89sMxkjD0S+Xrx7bkKkrDcP761wlOJ N2D+ZjVUICokBBFTWOgs+XLJAYppDZuY5nKaAxL13dAEDYcky3dgfHR4AA3DXULVpFlKGxuyn Wa9I4PU33zey5gkgKwn+M/qmW5mDh6+26mqSzmJZqPTqkB59k0vaz0izE8HX+y7nMRxaTf3V2 NFmD9x74146rZFI6Qy3sw92Gp0hKERoxMd0yeNlE69cNV6B1ORPC3m/2ZbWBxvCgSgn251T2+ LjZ4ve/M1utAVuqPyZ1QvuUOIKic2aYfOKbhE4KbG06YlEaBPr8dETowuRUSrLIZtQEKyYCOq sgusOD16nU/Z9Ss87BfH3A= Received-SPF: none client-ip=212.227.126.134; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson The "save" routines copied from the kernel, which are currently commented out, are unnecessary in qemu. We can copy from env where the kernel needs special instructions. Fix comment style. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-9-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 4dde55d4d518..eabfe4293f9f 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -104,23 +104,25 @@ get_sigframe(struct target_sigaction *ka, CPUS390XState *env, size_t frame_size) static void save_sigregs(CPUS390XState *env, target_sigregs *sregs) { int i; - //save_access_regs(current->thread.acrs); FIXME - /* Copy a 'clean' PSW mask to the user to avoid leaking - information about whether PER is currently on. */ + /* + * Copy a 'clean' PSW mask to the user to avoid leaking + * information about whether PER is currently on. + */ __put_user(env->psw.mask, &sregs->regs.psw.mask); __put_user(env->psw.addr, &sregs->regs.psw.addr); + for (i = 0; i < 16; i++) { __put_user(env->regs[i], &sregs->regs.gprs[i]); } for (i = 0; i < 16; i++) { __put_user(env->aregs[i], &sregs->regs.acrs[i]); } + /* * We have to store the fp registers to current->thread.fp_regs * to merge them with the emulated registers. */ - //save_fp_regs(¤t->thread.fp_regs); FIXME for (i = 0; i < 16; i++) { __put_user(*get_freg(env, i), &sregs->fpregs.fprs[i]); } From patchwork Mon May 17 18:14:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440204 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1348620jac; Mon, 17 May 2021 11:47:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz9sZdDlLv3Tpx4Xcv3E0EZ3M9yMQUyUTgFZSwcmSehQTFr8AVPrQLjd15VKTwrw9OyBTW6 X-Received: by 2002:a5e:cb45:: with SMTP id h5mr1077032iok.207.1621277222940; Mon, 17 May 2021 11:47:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277222; cv=none; d=google.com; s=arc-20160816; b=qmkVPL5WmpkVUd/wvhLmPQSLCoCu7THs9i4nSf6n4NCDjDpjlAyrDjtwSvtxlIMl4n arDJT9CIL8ZiRy+GjpCU0WZYFk6teiulJozwn8y0zSAys3JpwumfD3wzHZ0DfTgGtBU4 uMpDGWqJDmdNjcS6D3LeeQLynSblA5madSZf3qlR5Z4h0ELNB5earyDk5bLVgyWeSO+K VjUys+frkI+hV/afH9vfaDpQqGI386c8G1v27sRMYO9slGrpffLjUK9CT1YRt2P+wc8N wJ++XKilei7N3p7kcQQFxFBXOFdvZG1bDRFpSvc3jCunCUmn7CU2f+LjyopIPP3yUOzp ljvA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=WSaVOElFw7wdMDxEUPmsbL/HL4lxW5U/yC9txMPWVcc=; b=pS0Ty2GfXkppsR3iIP78xUaJ7eWG66hIJtinSfKmIdYTezatpacZajeLSuCbgGi1qo LHeSuBfYWXlJCxtgjIIQcF/IQIXXpAxpMxzObLLGPspPG+w/xx/4KbDTClTad3Q1ItNm ivHk9Fn3d7XcG9MuimXRPHr3B2LOAD609flRs/83K4eVj7QpjzmifnJ8GbXQpiPfh3j+ Zk9fhR5WNiMcRsvbznYLUEbIN0vF+w5+GaoUSgzwbvF/1a73BFZ+xVJ7FbyCTHQrJimF PyybiNlAS+ufpvAbda5TbQLlPkuhMp7MjVqhj9VI5JEjMIQpNAEv6DVQ0/Tp4iI6V3Bx GFfw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id z6si13990561ilq.89.2021.05.17.11.47.02 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:47:02 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:53098 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiGc-00055r-6s for patch@linaro.org; Mon, 17 May 2021 14:47:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34208) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlr-0006nS-Bt for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:21 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:57287) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlU-0004Wu-Bt for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:15 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1M3Eqr-1lmIGY41fx-003aMm; Mon, 17 May 2021 20:14:48 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 41/59] linux-user/s390x: Clean up single-use gotos in signal.c Date: Mon, 17 May 2021 20:14:06 +0200 Message-Id: <20210517181424.8093-42-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:ilrnnnC5J5fI9oV+YIibZK5eVVf7TGREUj2ZxLh21OaAx0gpdrv ptr7dcq+wxUEghMVylRGphCeJ7J4ajYdzTBiwV8JLRAvujepknezdGjYXy9tg7Z48p/XeDw HpZW1F6ekNd5a5F5mfK8QBNRDRIiZirF6YtHtilCW9D4LmQQAQPQ3bsl2Oz0AsNfdkAsAfg k27Tc5jRrQ7rI/g8mSAfg== X-UI-Out-Filterresults: notjunk:1; V03:K0:wF1GGlIzGXU=:N/pgLkJkOfjJWW2c9FhNbm rz0farZ2aeY1Z5C8sAZXQuATuJEKneFuK37vshP2JQNwHyvRh4+VcwT7kFXJasQMkh6CZSwyU 25j7ySHbAyI2bUbMdXGmpn2axsW5PehiS/x8Q2/4VtnBMulSvsbDoe865ydAHHbTY5Y+h94Gh 23WSjJ+0P/r8NTI37KUpRXAkJRd9efNjmTHioe3jv0JEKf77rxEbN3u0Fg2r8QSQZZ/2qg6kj SsxG6B4+4rjJ/A0pbZ2B8bH8m2Y1E0Vyoq99AFBz1+lvVCWk1JJQMfijYSJOSoQzFF0Zmjy1+ Irt6TC1cZhG7LFl1xDevrMZD8fo8e9nYCobGwhqpeHbzxlJZNGpE6YVbqT/CjnsRNT9LXQYdf HXfuNx/q++uJGUGCbsWXfM7ylIXgptHXIXyo7Y2ScgHZfiKKij7W04doau+P6JND5v0kDdDqP k2zCWRbwokYQwE320lctp94S09dQDjMkQmK+PNt/I0fN+99WX+7C70RFDS8MWgIBNr5ffvXEy Zcq3P4NnLnNDUQ7QZSiCjY= Received-SPF: none client-ip=212.227.126.133; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-10-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index eabfe4293f9f..64a9eab09770 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -137,7 +137,8 @@ void setup_frame(int sig, struct target_sigaction *ka, frame_addr = get_sigframe(ka, env, sizeof(*frame)); trace_user_setup_frame(env, frame_addr); if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) { - goto give_sigsegv; + force_sigsegv(sig); + return; } __put_user(set->sig[0], &frame->sc.oldmask[0]); @@ -174,10 +175,6 @@ void setup_frame(int sig, struct target_sigaction *ka, /* Place signal number on stack to allow backtrace from handler. */ __put_user(env->regs[2], &frame->signo); unlock_user_struct(frame, frame_addr, 1); - return; - -give_sigsegv: - force_sigsegv(sig); } void setup_rt_frame(int sig, struct target_sigaction *ka, @@ -190,7 +187,8 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, frame_addr = get_sigframe(ka, env, sizeof *frame); trace_user_setup_rt_frame(env, frame_addr); if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) { - goto give_sigsegv; + force_sigsegv(sig); + return; } tswap_siginfo(&frame->info, info); @@ -222,10 +220,6 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, env->regs[2] = sig; //map_signal(sig); env->regs[3] = frame_addr + offsetof(typeof(*frame), info); env->regs[4] = frame_addr + offsetof(typeof(*frame), uc); - return; - -give_sigsegv: - force_sigsegv(sig); } static void restore_sigregs(CPUS390XState *env, target_sigregs *sc) @@ -259,7 +253,8 @@ long do_sigreturn(CPUS390XState *env) trace_user_do_sigreturn(env, frame_addr); if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) { - goto badframe; + force_sig(TARGET_SIGSEGV); + return -TARGET_QEMU_ESIGRETURN; } __get_user(target_set.sig[0], &frame->sc.oldmask[0]); @@ -270,10 +265,6 @@ long do_sigreturn(CPUS390XState *env) unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; - -badframe: - force_sig(TARGET_SIGSEGV); - return -TARGET_QEMU_ESIGRETURN; } long do_rt_sigreturn(CPUS390XState *env) @@ -284,7 +275,8 @@ long do_rt_sigreturn(CPUS390XState *env) trace_user_do_rt_sigreturn(env, frame_addr); if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1)) { - goto badframe; + force_sig(TARGET_SIGSEGV); + return -TARGET_QEMU_ESIGRETURN; } target_to_host_sigset(&set, &frame->uc.tuc_sigmask); @@ -296,9 +288,4 @@ long do_rt_sigreturn(CPUS390XState *env) unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; - -badframe: - unlock_user_struct(frame, frame_addr, 0); - force_sig(TARGET_SIGSEGV); - return -TARGET_QEMU_ESIGRETURN; } From patchwork Mon May 17 18:14:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440211 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1350587jac; Mon, 17 May 2021 11:50:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwY9rab0w10UWkPDM5HzHLpTcv6l42zDZImZKdvFy9fW/zpigl/Jz6oiKc3tCifS/YaCKMU X-Received: by 2002:a05:6602:2bef:: with SMTP id d15mr1128546ioy.13.1621277400407; Mon, 17 May 2021 11:50:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277400; cv=none; d=google.com; s=arc-20160816; b=HHJdx0QrXrUkmVyWJjQimQisWOR6PPo5Gf4oIBu86y1pmv1DSx68L9V0lsCR+WyFUz xxQKSo4kLNxSKc1o2ggaLqMHpXCAgX6T96k6XFVxuyiq8blxgMLFqeXigf+RWNdesg78 TGulbT353DQLdUy4hAqig/SvJC/H9C3uoM6AX0pSBl/cka8SF53bZIt+2bhj+nejIXwf 1G4Y34RTYRUzn4CAjSBT+I1jZNMgFrmLz0ubBtr4PKwsHTwhqXT4YWgPk7n9TAuFMq0S KLoEhZTnRINwBbJoko5pPdFQFGVHjBmM7kyGWSiiPHqlM88nDMKgzKsm0OWmwtleA3I8 vrng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=Vo6Dl1Qp9eZdyZcBtl1QOozIJdh7pRc5aLtRTUKEkQ0=; b=oPMEF2RFp+wmWkeG9rqht/2HBBmSmyrnRC3KrIhh3IzoClf5T+ZQRvSbC4Leeu3ZEo 2gAZfH2HoJxKHEQg+rsGmz1/FlIhlrm2TajREGH5OMzBJqlt63WzcG3XV1tzv+k8Fd00 jcSBbcQXRgap6uLwVNfylON/wqFwE4+b2Jki7zkV0239Bm8Tqy5fUA3VpPRYczvPUyE6 GPDArEMFdKmclshsSsFsVt/H7WpbIOjLcYT7szwgc4p1gGDtOBZYH3sUJKXEKHvLNHX5 7QsQ9XopThtGyMKjFuPaboz9xHk2t25YYp2Z0ef9qc5iPdiUS9WqnIppYEu+dO64kMKh Df4Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id z17si17950399jat.5.2021.05.17.11.50.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:50:00 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:34072 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiJT-0002nH-Q3 for patch@linaro.org; Mon, 17 May 2021 14:49:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34182) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlp-0006mJ-FK for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:20 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:56203) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlU-0004X5-Pp for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:13 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1Mae7u-1lB1da1mSA-00c6Ad; Mon, 17 May 2021 20:14:48 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 42/59] linux-user/s390x: Set psw.mask properly for the signal handler Date: Mon, 17 May 2021 20:14:07 +0200 Message-Id: <20210517181424.8093-43-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:6IReWl6JAyMjJRItCT4ijpOILZtyJ3e0QPHpZzCTjbWFLidergE h0D1eyxXY+XpiQ6UwzDfNsE6AXrg3KwHUnOm0XOhZRojJ8ORMFUS8gLisJyyPppzQd9Eo+H ONOJ7GEUTBdP9dPtJrnF5/sxO7QECh9zSKyAX1KaUZsKWNdITjTM9UJsalYdZcukWYyW4X4 HzNFYIkj8YsnCDlhxDcMg== X-UI-Out-Filterresults: notjunk:1; V03:K0:nz8jY8gIjaY=:dyfC39603CeHXYPBDuV4f3 IAqooIdVrdebahoIfqpuISue3xBpShd/jDZJIqpjaVeFryr1otlQ0DVxpIqIfAA0lOoyJ+M0F /WVCmMExdElsYXmXG4eXn0wRd/Ey4DFja6mtBecsrVcQzGouZQ7ser0z8fgD/0aWTGJ2VGC+F EjqLKflvatcXForpFV/0Zdq5CqU6NCSutqyKzQynLlTG3RLBgitlUHmOANxWrH+Cq27aj5OtZ O3WD3XaPqW19L5KcPfNG3eqOchbpTqQRQHuPB4U9sSzBLddxAqEfKq3oY+b5SK/t3CuMqkk84 APhVUVeZolhB9UHNmJQ0fsaxsGjz3zdsp7+imSTHnsEG+jFUbZ4jocNUe8HPKJtTKFqCCvmGr aGDpS09Gvw+BwS9FgBvkCGxTBMWJxKiPEpvgGnvebDZ6ldnYfOCDaf5aFZ4IvlToLFkVjvGrU 5baUo5uA7Ag/LaJyNx21TQxiwFMHtf9HnBCwAK5UnzrsOipZw8DOfOt4P8VRfLMijKSQ+RaZ6 mn859adSt3pqxxCm4UGYvg= Received-SPF: none client-ip=212.227.126.131; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Note that PSW_ADDR_{64,32} are called PSW_MASK_{EA,BA} in the kernel source. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-11-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 6 ++++++ 1 file changed, 6 insertions(+) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 64a9eab09770..17f617c65581 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -162,6 +162,9 @@ void setup_frame(int sig, struct target_sigaction *ka, /* Set up registers for signal handler */ env->regs[15] = frame_addr; + /* Force default amode and default user address space control. */ + env->psw.mask = PSW_MASK_64 | PSW_MASK_32 | PSW_ASC_PRIMARY + | (env->psw.mask & ~PSW_MASK_ASC); env->psw.addr = ka->_sa_handler; env->regs[2] = sig; //map_signal(sig); @@ -215,6 +218,9 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, /* Set up registers for signal handler */ env->regs[15] = frame_addr; + /* Force default amode and default user address space control. */ + env->psw.mask = PSW_MASK_64 | PSW_MASK_32 | PSW_ASC_PRIMARY + | (env->psw.mask & ~PSW_MASK_ASC); env->psw.addr = ka->_sa_handler; env->regs[2] = sig; //map_signal(sig); From patchwork Mon May 17 18:14:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440202 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1347228jac; Mon, 17 May 2021 11:45:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJydtGcQB5Gz3WdgsEknKxOrHyLxxRY6CCH/ibgafPRBBhA73MyDM5k7Yu2COw34VaEG9szr X-Received: by 2002:a05:6e02:1d88:: with SMTP id h8mr955217ila.66.1621277105674; Mon, 17 May 2021 11:45:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277105; cv=none; d=google.com; s=arc-20160816; b=0BkGnGzDOTUw7aYibTxr+OUinSlFCSfQLX/k6FwREQAs9wok3Pp60eRMLxsz+iziq+ gWn21eQEadrqEeUL1KPKqLpIifZKZoEyF+Eh52tn9IR9cpxwgtCt+gvcY0WpeC4nZEci c6khwkFtvH/3AUrSymXVp3KQBaxSi1oG3jIHLrdllyKCWQFB4HTnkux7HZV8I4lxN2hg ouHiE/uxsFhVEDRf9JhMoBaiv0EIUOeWFj1QPpoGsSTa0aq2MfXqQ7ZogGgUamajsX/D v6H998kE8whr4Qr+AFvtIC4vMfaUo3lrqamnag6Y2G+s4vkq6xHRoR2qIfedWpkbDutj 31yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=XkPQmmEwCuu5xUszhkBehQaiYB97BAH08iNylEntFhg=; b=gqnF01dFrcDPEfoGNZVeqTpaffvZG2CUd3d/t2Nf/KGWDDUXs8hB+9V5VSByN+sWum 8q7mEQQAimWgxShiALlsyR+fXV0/As037ft7hQOaDVKJpTZuwwqDGoDXbwuN9bIjk4uE ZJqhuhqBM0dwB6VZQTI4jwrMgVFdxJsWpGg6LZK28vbgcwxh3mPKl5/10eE/YuJi2hH5 IVukpdxesMRqqYUU8NuDseIJ3U+0nRxs7CF4llrm3sZUnfSUCqUt+gTW64nf4RMKrNfn MNSIrxT6KbTEy8nnTXipDuZNUNCkWfNRs+zI5IcZQusTzNcCCdz2MqPiGQ+bxFY44WL7 gvhw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id w8si18581425jaw.8.2021.05.17.11.45.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:45:05 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:44622 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiEj-0007n9-1I for patch@linaro.org; Mon, 17 May 2021 14:45:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34184) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlp-0006mK-FP for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:20 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:37219) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlV-0004XJ-8Q for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:13 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MY5XR-1lzVhN3mFp-00YVH2; Mon, 17 May 2021 20:14:49 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 43/59] linux-user/s390x: Add stub sigframe argument for last_break Date: Mon, 17 May 2021 20:14:08 +0200 Message-Id: <20210517181424.8093-44-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:k+YIRMlhgyAXqICz1gseoQpkACOv+tMK2HAlu3aoWAql8gySwA4 NxGsC/64xw/uP80d025Mdmu1zBcMhRSGCNz1jRhoWTnHh+S6Ohl5AvSXRox0r8s5GZJnD86 iVYncor9qJ0EzVdk3RZ1DYAxh4OLSd4m8iuC2DWGS6Ov+eBTUE1P2Nm6pgCYSBbMKAJ921U ZA2mUGWAapuuAioc7MrXA== X-UI-Out-Filterresults: notjunk:1; V03:K0:gnG4jloMGpQ=:XnZJQc13nht2SpBMeJH+bz aEjmQ+ERuaCpP6P8K1E2KUHaYZgn79g8VAmFX4/grMaoaICz8fEMWYGoOm9AWBiyBH1wicUXR QpKBhioaMfc6+yJ9voxxK7l2smqLW3+JSEoNuDSCMEsWz1eHWxStDCB9rGCSh/S/5gr1ddzfU 3I3sj2M47anQBb0TKMW5wFACpWuQ5YsUnwcIL0VmCcSl0RdECm0IWYSVWz8uRLj64JdwoM9Ja Qx5hYxvMRYlM6YjNtnsFnIsLrNUKguFFccjUOzdhvLNMaQcb5GN0r/nFUSgEM/KRJvUrGyMjc py6cdrDi+XnQbpk3iCQ78ENgfLWNmUTc3ZIbOIAEGVLrXxJKQ7xqiZDLLPanplkMO4MECetCp 7Jm5QxOZW/+KeuHmlykj4yWcqK/pjTXctZMQYMFe3FEApRvsxn5nmFXQaJsqv9dbOkBz7qnLK JTx+s/7UpgEQLE5YQxs6Ta8MqfeiOIZOeE2awUMH3tq8K8stbPvS0D3XUbxPlKMMQ5RVhT7eG YgVki65dEZxCrbpXyYuZxs= Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson In order to properly present these arguments, we need to add code to target/s390x to record LowCore parameters for user-only. But in the meantime, at least zero the missing last_break argument, and fixup the comment style in the vicinity. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-12-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 17f617c65581..bc41b01c5deb 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -167,13 +167,16 @@ void setup_frame(int sig, struct target_sigaction *ka, | (env->psw.mask & ~PSW_MASK_ASC); env->psw.addr = ka->_sa_handler; - env->regs[2] = sig; //map_signal(sig); + env->regs[2] = sig; env->regs[3] = frame_addr += offsetof(typeof(*frame), sc); - /* We forgot to include these in the sigcontext. - To avoid breaking binary compatibility, they are passed as args. */ - env->regs[4] = 0; // FIXME: no clue... current->thread.trap_no; - env->regs[5] = 0; // FIXME: no clue... current->thread.prot_addr; + /* + * We forgot to include these in the sigcontext. + * To avoid breaking binary compatibility, they are passed as args. + */ + env->regs[4] = 0; /* FIXME: regs->int_code & 127 */ + env->regs[5] = 0; /* FIXME: regs->int_parm_long */ + env->regs[6] = 0; /* FIXME: current->thread.last_break */ /* Place signal number on stack to allow backtrace from handler. */ __put_user(env->regs[2], &frame->signo); @@ -223,9 +226,10 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, | (env->psw.mask & ~PSW_MASK_ASC); env->psw.addr = ka->_sa_handler; - env->regs[2] = sig; //map_signal(sig); + env->regs[2] = sig; env->regs[3] = frame_addr + offsetof(typeof(*frame), info); env->regs[4] = frame_addr + offsetof(typeof(*frame), uc); + env->regs[5] = 0; /* FIXME: current->thread.last_break */ } static void restore_sigregs(CPUS390XState *env, target_sigregs *sc) From patchwork Mon May 17 18:14:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440210 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1350529jac; Mon, 17 May 2021 11:49:55 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxi5faFLcdazrmDjlejobSh4sAgHdndHozcrYIqoK83WG7GBNTxVr31jJPrgDu8vG0lSBbx X-Received: by 2002:a02:c652:: with SMTP id k18mr1384875jan.105.1621277395065; Mon, 17 May 2021 11:49:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277395; cv=none; d=google.com; s=arc-20160816; b=VBy1CLB8whCWJqULHIB235BQeHIlc/c7CLdmBbuhfM40u2tD5o7i5aNmhOCe2OyhKz +QhGpgvfQRktm5XVX6OHUN3hDS8r1r18IWKisn3uskvxbkay3n4ui8GtFRUVNAN0Rs4C 7pHSmkoyil0dvtAlR1hoeRlfoPLOWlulGwwXtHlcyN2JYT0cSFHWCHconupFPfoH8ARH JZGBi25l46+ihh4fkuamz1tve5UvuCzu5DWZTUt0POHty/zVa435Vpz/P6ezO4SE62ZE uLadE1WR3Vuu+Q9657QKF0ecPRQumwRf5jsJKhxgEz7Y9uAFJBe3zN27XqVf9KnnPXPy 8GLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=MKaTiylhNCjUv3zVUeGHxIwA0dfSM8mAfQL0F9dhnhA=; b=pIWUCEHU769ZJZb5JdEXTsHzJJnfZuL41Fs7ZqdrcTLZRb/Wkrk4ozcbxeAbG+s0Hi T/1flL/TZup+z+/G5ed8rgJrLr/4AeyGaphie4tnRO1ywvIeSBlXQBxQn3Wv5U5ZaYyV tfxs/CffoTMcWFrBV9JceALy/CiyMl4cuQeXnHrQ5krfJAQJXDLm1VZXyxSJ1SKae+R6 BQP+kJQXE4heHqpUiafgOFl0Qv1MwvWRZixTfNg/WgFV5eMzx6bCPl06BfnKTJs1ud0m nsIcYB0ZfjinqHyY48OGLsOrereYjaph9dyuHyCh+cFoS+OKFYp6790Qf9X81JYyybxN uLBA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id j8si7811783ioo.10.2021.05.17.11.49.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:49:55 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:33382 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiJO-0002LC-Dz for patch@linaro.org; Mon, 17 May 2021 14:49:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34312) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihm2-0006xk-VA for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:27 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:54695) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlZ-0004XQ-Ci for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:26 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N6sON-1lPceM1XlX-018NzS; Mon, 17 May 2021 20:14:49 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 44/59] linux-user/s390x: Fix frame_addr corruption in setup_frame Date: Mon, 17 May 2021 20:14:09 +0200 Message-Id: <20210517181424.8093-45-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:Bk/5lLQcvI2rN1VGUSy0LzFRnNRhVVNQeIJBDL16y+2uQuiqkKK LDLmwrt3bL+pSVkPWy4kPyLcfF2qvQQK6AmfuSllpf6NQsjpqVwIAzO2u7LcKMH1WNG+cX6 5qQLao4JUwHp6LWEKsoUv8IgLXG/I2KvwsF4QZ9R/AIQKlobwdZHzvAb4wRFrfUnJSprnwg eCWtVyetK9fPq/y3HgxRg== X-UI-Out-Filterresults: notjunk:1; V03:K0:oNaPiNjitJg=:As/06V9raLMf0hfhaF+uXs RFJhk5cubCF9qMAgJrZscYu04Ve+kEozKFVVKG8+1Ib4pNVy3uL1SwDeESahXmmkQGk/AChi3 wHDK0J4RrNDR1JUWTYMQmPa16eQrH0zwIKF5nTleAJJFwtf6HzsTmbxhCEyjqw4Rpq30c4/eA kKmqaM8v3LvirhwiwCiIPyqJBp0xCpBQ3Ja+FRDlxFTBn1Q6yFHTMZvHCQzJCihoL/gFSsafc r7LgtRk05he+/kmT5v4ruwzCOmsMrja3r0zmlh5c5PNSSZ+gyn7TtxrU6yAftGwZy5wGeWrq3 W0fxcJ8k6ABji9BE5QRATGoOUMPpMLF51HT3NtY3FMmYR3dHWVQw+8IA9LGHrshjDp3PsTLxX m8fXbyaSCkAb05a+q134GvKqc7mYvgwSzpZsaxJFVT0aYd6+Heeqcit6kGF1UPo71dDxHsFFW +yM/POB43CatufFvvnnIZJBXMQqFwNFjv3Luj3YSN4PstPiU+YYFJKeELYYqodJPwB+XqXAHh Tl/mzwwVxmx+WM5wteoNqc= Received-SPF: none client-ip=212.227.126.131; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson The original value of frame_addr is still required for its use in the call to unlock_user_struct below. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-13-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index bc41b01c5deb..81ba59b46af5 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -168,7 +168,7 @@ void setup_frame(int sig, struct target_sigaction *ka, env->psw.addr = ka->_sa_handler; env->regs[2] = sig; - env->regs[3] = frame_addr += offsetof(typeof(*frame), sc); + env->regs[3] = frame_addr + offsetof(typeof(*frame), sc); /* * We forgot to include these in the sigcontext. From patchwork Mon May 17 18:14:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440215 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1352609jac; Mon, 17 May 2021 11:53:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyg9v9USZSKYRkc8xtr/O6K4pO1H5v6W3ADmsr3SYU5ihhVsPHXyVzGV6xjTZ51FyUJ0C9R X-Received: by 2002:a92:d7c3:: with SMTP id g3mr918922ilq.114.1621277605146; Mon, 17 May 2021 11:53:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277605; cv=none; d=google.com; s=arc-20160816; b=mnnNQDcfAq4+lv0cfcNyDD+WNGqzbYl7bG2noW6NmXqGMSegg/GMkJWex39YTvuz72 mUZQqB5xMOGwnAhSMv4zav3ZNry2xCoG6utKSUpnvkaNAK6Jkm6plU+f92+iZPVJUQyb Ic4+iHxvwWlZANt+gpslb09xXI51gKPXDNIdkQgO0d9MTSsSQsQ5QVzViR7OJ5YOZLaI 94G6OzxxKuLkqaPUYByKjHj54AE64rE5NEVpnVhpouZVaOu4cDre6rXWs0FmqzQLhKTO fY1L9p/TqzzaEUfcqS5hcp842teFVL9iKnl1v0hI3ELRdPFORha20rIlJ5rcwnEEOEgC TzhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=njA1vIsCq4RtA6O2hMBIync3H+LHwCosZAH7cFlzsH0=; b=Z8tXRHTbUa3Pi4cCCR1RGINtG9c6QxtmnOl9++gW3+y4U25snrW/BXy/DNM/diTtAU xJTZIzoSbxvrNoI30aXWpGw2UG6SJftb/TsXcFJuf4G1Vqo0gfdnViQVV7J+Ry5UaHKP EJLtLsmDYMm6YhKs0+nFAorSebiertjfG/MYatq76SVne1Qw3xuWM3GxMKpKxAge6+dk trc1eB2nY1/0RFNs+aMRAMiseUkFWUoWgND5D8xdzWxX4dwxVM9gcG7XF5o+mFst5nu8 jlCcp4ER+uKkzm6T9WZkB2kmZoyxNQLvV2dvvj3foQ4Kt2k12J4d7gEjNKRDxsY8R37I Hqnw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id i17si5050432jar.93.2021.05.17.11.53.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:53:25 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:48788 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiMm-0004El-II for patch@linaro.org; Mon, 17 May 2021 14:53:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34234) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlv-0006pi-Ih for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:25 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:48215) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlZ-0004Xm-9z for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:19 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MQy0N-1m5aEY3SfH-00O0co; Mon, 17 May 2021 20:14:50 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 45/59] linux-user/s390x: Add build asserts for sigset sizes Date: Mon, 17 May 2021 20:14:10 +0200 Message-Id: <20210517181424.8093-46-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:R6HjJXjyG1ZInBrhVPsshMwqybr4sLAVUEny48o6ZhIf1mi7PzT +PZTF1WmyhaFwMNsvATMX0RKeFdOEhokugXuGupyd/cFeQnOUBpIxVxGELitlxUc7fbUP8o 4aAHZY3ae0iN60PbQewzm9o+v7mfqUD9DhpNot1aFloecxBhuIDbhedXFNn075sbeqFaTMr 6efYBRbsHc4FEEbNN7ZbQ== X-UI-Out-Filterresults: notjunk:1; V03:K0:Z9d6FwXX8vc=:1PwEbhzYXdRekt/aMv7H+Q XRy473ldfFu+pAVKNpeN//U4oez2RfzHHX/8QpcibWXWnbV66guC5rX0VdePq0NCUymdnN2mk 5w4DUga+ApS2eRvM7bXt8kOW6HBNaTBtaFAsdQqQTuL356V9RyMnMF3uf1Cm3ik3NZZw0D7Wy 3sOPfyy7gm16ToHVQRg3O24U/kMUlKOvrWSNvRxypzfsK8gRWMzNAASf1Qi0nbfOQ6pH08gYb rvMWx1bOGajXtx6vrnOJM1CYQlJUei23cK+bPgiQzIl6OvCzQ9KjX4lytjp89BPwK8obeRj7Z 43ODrKnCFXI95qouhGInUCfOp6zu+TnI/BuKEvZc85toaoq3j0fkvBYHuJU5OhEEdvoyJZreL zsSGQA8ed59Hy/jObXoplGNH6P3ElU5zQcW/Ig/Ab/eNsHmkmRkMQevSuKIU3JgfaVr58pVMp 71jWx7rPN85YjC+DXNQJluSL2PVu6CTztBTk6+p0qAvWqU1s3yMFTcmAlaYOF5StAzw/Eabl8 AaNAoafOf3Se+GyuDD4isU= Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson At point of usage, it's not immediately obvious that we don't need a loop to copy these arrays. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-14-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 5 +++++ 1 file changed, 5 insertions(+) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 81ba59b46af5..839a7ae4b3d6 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -141,6 +141,8 @@ void setup_frame(int sig, struct target_sigaction *ka, return; } + /* Make sure that we're initializing all of oldmask. */ + QEMU_BUILD_BUG_ON(ARRAY_SIZE(frame->sc.oldmask) != 1); __put_user(set->sig[0], &frame->sc.oldmask[0]); save_sigregs(env, &frame->sregs); @@ -266,6 +268,9 @@ long do_sigreturn(CPUS390XState *env) force_sig(TARGET_SIGSEGV); return -TARGET_QEMU_ESIGRETURN; } + + /* Make sure that we're initializing all of target_set. */ + QEMU_BUILD_BUG_ON(ARRAY_SIZE(target_set.sig) != 1); __get_user(target_set.sig[0], &frame->sc.oldmask[0]); target_to_host_sigset_internal(&set, &target_set); From patchwork Mon May 17 18:14:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440212 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1350936jac; Mon, 17 May 2021 11:50:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwHSR0KfMbGxh9sAt+bTXSbMmLeXQNtMlbITuYqiJmQAV46zD5WNfft6buAqoeSGqyZ5n6U X-Received: by 2002:a05:6e02:1a07:: with SMTP id s7mr912213ild.251.1621277437751; Mon, 17 May 2021 11:50:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277437; cv=none; d=google.com; s=arc-20160816; b=heD4+7lE8ixxMyGyJUJrufgLgULGd9k9hs9e6m5Io9ZhhHR8Nfc79kBfJgXh0ViPw4 6EfKqvM8Fc7CjtlWeLV7dNjldj5OEvwprPPTrwK8ATcJaJC2o7BvpdZhSIE7QQJdmt2y pI19WyL7z8guNprBEZSlQUgApal7J9uHEiSuaWD+09IzfLE3fq2EjeOOeBulvVLGNfk2 4kSRepuyOH/0Zomu179V242YICRVJ/xpy60+5kn76C9qjCY/QC1DF5INusROKZXRVSic 4M7wCF2/x6VHqUvDzRzgMcLxkpH/DqkY1Ph1nvh6L04c26wjSPz3MQVchxt1samLVvFt 3A6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=fjU0QaOwhlfOwCDWXKYMd5ILKcmprMipYdWURQqx3Kw=; b=ZdRadbJXf8sna3QRqyk0QaKv5DOwA0DzBFnD1r+AMn9czkCqEcj4Z8CtVe4ogXdBem Q0sgEOZbsJjetXGRGRQzrXvlAE1d/kURVd9ugmHWIZ26OPBiTP5qD+bybx/+FtYqRF87 aSWxEdaMob5iZ1HWUGNmNazgZxH2twzj7zFevbKqoX10tT0QDUkET3OpaLpp25W9+e9J lUrlPlNKS5SZtqOg8eli0g5jBJ5eI7OlJ/reXYqtqcFxoff+KgrpAHi0E3kZeqxg7Les QnBObpqFEbPZDjzf+NyAiMf5xUmgEnUBq3I42GqsjcfqXUsv6rrh3O5C8Pn919RdslzS yK9w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q3si22219119ilu.88.2021.05.17.11.50.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:50:37 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:40162 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiK5-0006ul-5J for patch@linaro.org; Mon, 17 May 2021 14:50:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34156) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlj-0006m4-Tf for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:17 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:59951) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlZ-0004Z2-9b for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:07 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MPaQU-1m4Cee1caA-00MdiF; Mon, 17 May 2021 20:14:50 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 46/59] linux-user/s390x: Clean up signal.c Date: Mon, 17 May 2021 20:14:11 +0200 Message-Id: <20210517181424.8093-47-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:HVBt4BQ80O7tbhyiWe6Y04tifcA3ZgB4LCPnE/7eNcbqtC4glHc e9jhTYakGc+6ec04L5gasNdchvLVP3jFmWx1qceSwIdiPF/X/qu0v6u+hXlJ2cbCLHrI3t9 VYMeFT+ZhbHemGAq4PDK7yzQpTjCj+pwqCa8LrWTGNm/nvH1EaEkohUSHqnZ+zr3CUFiQVo R8037PJfCK/+2Liop+Wxg== X-UI-Out-Filterresults: notjunk:1; V03:K0:rynPxZnuPXg=:0ao8TcilgcMD4mTl7Ls8Jz vbpBHPTlwwW23pr4G8KO8lG6HDq7xe5liht6n8hY8oIWGZxYrQ+mBNbixlx/4KsoOEq5AInHm QfSxjVx9vlNlqTuJuvAlnDeAWfJF+N7ed1rT8cjEfGH+xowGnKzLTy8nhqvk+nTf1kBcVGHYu /ScyKCoj5B66sjHJ67vi4AYMdyKVfFRXdzXQ8kkZh3FTVbkGKDaokWJE7TKk+d4NDHI8vaBfy 6VOnGVvqkP/VHyX5B/Aneo5OvVuNjkUgmFJrXcN5xGn+el26uB6fMnaYt+brBJ+5WgjJYonxB xkA/+wCfuRA7opwDgHxZld3+45CiW7lK4jP/Yj5/9k5/MrfcYYvCGgypbUeQAk44V2SMRiIpH D2of6EYAsHgndPUa0KSZdoLA+1EtBh1N/qwAlcXeyGfeLZWjNuLT5Ea6n1ZnSsfOuBoZoemTC f9izbUiAxQe0s28unThj8rnoD03Z3B6vNTk4UfHefDn7Es9weuoYgxDzyzv/KEbFLlOl5qckI koobZ+yl0AyHlSb+21BYaM= Received-SPF: none client-ip=212.227.126.133; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Reorder the function bodies to correspond to the kernel source. Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-15-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 63 ++++++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 24 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 839a7ae4b3d6..9d470e4ca069 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -133,6 +133,7 @@ void setup_frame(int sig, struct target_sigaction *ka, { sigframe *frame; abi_ulong frame_addr; + abi_ulong restorer; frame_addr = get_sigframe(ka, env, sizeof(*frame)); trace_user_setup_frame(env, frame_addr); @@ -141,28 +142,39 @@ void setup_frame(int sig, struct target_sigaction *ka, return; } + /* Set up backchain. */ + __put_user(env->regs[15], (abi_ulong *) frame); + + /* Create struct sigcontext on the signal stack. */ /* Make sure that we're initializing all of oldmask. */ QEMU_BUILD_BUG_ON(ARRAY_SIZE(frame->sc.oldmask) != 1); __put_user(set->sig[0], &frame->sc.oldmask[0]); + __put_user(frame_addr + offsetof(sigframe, sregs), &frame->sc.sregs); + /* Create _sigregs on the signal stack */ save_sigregs(env, &frame->sregs); - __put_user(frame_addr + offsetof(sigframe, sregs), &frame->sc.sregs); + /* + * ??? The kernel uses regs->gprs[2] here, which is not yet the signo. + * Moreover the comment talks about allowing backtrace, which is really + * done by the r15 copy above. + */ + __put_user(sig, &frame->signo); - /* Set up to return from userspace. If provided, use a stub - already in userspace. */ + /* + * Set up to return from userspace. + * If provided, use a stub already in userspace. + */ if (ka->sa_flags & TARGET_SA_RESTORER) { - env->regs[14] = ka->sa_restorer; + restorer = ka->sa_restorer; } else { - env->regs[14] = frame_addr + offsetof(sigframe, retcode); + restorer = frame_addr + offsetof(sigframe, retcode); __put_user(S390_SYSCALL_OPCODE | TARGET_NR_sigreturn, &frame->retcode); } - /* Set up backchain. */ - __put_user(env->regs[15], (abi_ulong *) frame); - /* Set up registers for signal handler */ + env->regs[14] = restorer; env->regs[15] = frame_addr; /* Force default amode and default user address space control. */ env->psw.mask = PSW_MASK_64 | PSW_MASK_32 | PSW_ASC_PRIMARY @@ -180,8 +192,6 @@ void setup_frame(int sig, struct target_sigaction *ka, env->regs[5] = 0; /* FIXME: regs->int_parm_long */ env->regs[6] = 0; /* FIXME: current->thread.last_break */ - /* Place signal number on stack to allow backtrace from handler. */ - __put_user(env->regs[2], &frame->signo); unlock_user_struct(frame, frame_addr, 1); } @@ -191,6 +201,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, { rt_sigframe *frame; abi_ulong frame_addr; + abi_ulong restorer; frame_addr = get_sigframe(ka, env, sizeof *frame); trace_user_setup_rt_frame(env, frame_addr); @@ -199,29 +210,33 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, return; } - tswap_siginfo(&frame->info, info); - - /* Create the ucontext. */ - __put_user(0, &frame->uc.tuc_flags); - __put_user((abi_ulong)0, (abi_ulong *)&frame->uc.tuc_link); - target_save_altstack(&frame->uc.tuc_stack, env); - save_sigregs(env, &frame->uc.tuc_mcontext); - tswap_sigset(&frame->uc.tuc_sigmask, set); + /* Set up backchain. */ + __put_user(env->regs[15], (abi_ulong *) frame); - /* Set up to return from userspace. If provided, use a stub - already in userspace. */ + /* + * Set up to return from userspace. + * If provided, use a stub already in userspace. + */ if (ka->sa_flags & TARGET_SA_RESTORER) { - env->regs[14] = ka->sa_restorer; + restorer = ka->sa_restorer; } else { - env->regs[14] = frame_addr + offsetof(typeof(*frame), retcode); + restorer = frame_addr + offsetof(typeof(*frame), retcode); __put_user(S390_SYSCALL_OPCODE | TARGET_NR_rt_sigreturn, &frame->retcode); } - /* Set up backchain. */ - __put_user(env->regs[15], (abi_ulong *) frame); + /* Create siginfo on the signal stack. */ + tswap_siginfo(&frame->info, info); + + /* Create ucontext on the signal stack. */ + __put_user(0, &frame->uc.tuc_flags); + __put_user(0, &frame->uc.tuc_link); + target_save_altstack(&frame->uc.tuc_stack, env); + save_sigregs(env, &frame->uc.tuc_mcontext); + tswap_sigset(&frame->uc.tuc_sigmask, set); /* Set up registers for signal handler */ + env->regs[14] = restorer; env->regs[15] = frame_addr; /* Force default amode and default user address space control. */ env->psw.mask = PSW_MASK_64 | PSW_MASK_32 | PSW_ASC_PRIMARY From patchwork Mon May 17 18:14:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440207 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1349115jac; Mon, 17 May 2021 11:47:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwk3uuWB6baigGtYG3PX1jUTwrDMGfOkGBGii1iZy3RwHpZVFsbKhwhA4mSrzsStAQuOYW/ X-Received: by 2002:a05:6e02:f10:: with SMTP id x16mr906962ilj.65.1621277263722; Mon, 17 May 2021 11:47:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277263; cv=none; d=google.com; s=arc-20160816; b=Lu02GBvDKde13IQu+Y6K13SEefr2WuJxhk34x7dHZNR8MTHleSNKG7/Ww+PJPDFHIZ w71+yIPIX4vHuH4b+ZfCHP1WClw6/F7iDras1S6bvBTuS850txuikTTwwUnwjMJyFzgy kAg9h07LkFMh9GM0DyL4dlp/9XS3ZNYLc001ZrdKjTbNpY9NKYvSXhdgEJogfd+OzRSD M5Ve5HAsXWHTv8NN1mCR7u8Ei56BWwCnKY7CmD2Dkav3jdjJEudiLuKNF3IZt0jcL37h Dk9YLPSv9Vtw/PwJEoiOYMGUXu1ZUSD+ciiF6dEthHL5Kxy4wATRalk+p5u+bgW4VzdK SYyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=gYhUBrpsbs6H8P050cGfXO0V510RnlSCKLGOFMJvh7s=; b=pjy4uwnkd+YQMaHazl13jffdCxLBowhG4yZYOPehyFP20JjMz9kt+gLiWxNklxMB+G yewJUa8/igX/6PlbTGnl7ekx8pvY/WgWsrICBktPMbQsFUl2GdGBTAvnVuzbldIEQbtg Y80jBEHQLPcP02/NhYh2qmnuTOQRK16cXPGewxh3S+v51DeA+4lUDEJCWMfMMevBTEub BmUQzt6AIQyUl1yaSlQrk7RHsyHJ+GFnvI/HucG/L2a7Az726SSUhZny3q2Gu/q/sPRG mfXpoe9YpM4imYMqj7c/TtYA5TF7yICX8zOSUNLubi2B6HkMRiiI0DGX5wTFKRw9RDrd YMoQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id p15si20239653ilo.83.2021.05.17.11.47.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:47:43 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:53752 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiHG-0005Vq-Ry for patch@linaro.org; Mon, 17 May 2021 14:47:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34232) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlv-0006pf-Ih for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:25 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:55685) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlZ-0004Z8-9n for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:17 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MKuGD-1m3xfr3gVx-00LFk4; Mon, 17 May 2021 20:14:51 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 47/59] linux-user/s390x: Handle vector regs in signal stack Date: Mon, 17 May 2021 20:14:12 +0200 Message-Id: <20210517181424.8093-48-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:MUS6mjG1fkeJ1B7i+zi/qDDTcaAzyPH9ip3FGkEwXscKtML9w8D dHOauG5IFbShcJJ9VdsGffaGNNC0CxgoxhSzxL+kkDg65vp3LPw3Rw321jhC7sKT5wpeQFx 4X6ll7lHEjg7Xiqg74Djuax350JNhn1zIfby0rjtNqEY+h51Qh3W+YQmQvkPMzPfl7iK5GM PfqhUZW3IWOPbXjuXo+SA== X-UI-Out-Filterresults: notjunk:1; V03:K0:q+xnQ76W4Uw=:XpaHgyw/il62zUYTkhKhMj f9StGwAD+3F3kUW7SaAlMWZ/uZwymNMKwyD5AETkrG9rm1R2hPt9XFa2o3xmDl+NFKRrMm3qw uF3gEjuVB3COQbARpBNnZJVjI3wWX2IwWjB7db7Q63ewpKseJdFIwqOkF3fMotMkims/UZVr+ ap8rL56+0iQxjwRlfBQZXGylGwaEh+Jl4FQlldWHGwFStRzf61YQy5Wttfbpa+5p5j+Vt7+8Q OQ4LqAotnsaVZa5wEBnXWvYhvAKGEyaX2453y5lU+2BCo/m4n7IBXaAGH5PTs3gx4V1qT57vM 8pXBvJJTTa9sG/M1jxH7CWGSGe0K1BeWaYu9GI+f3V28acjcST2k//1OZhLde6dO/yKqXRDEJ 0Dvwri/oOrDSPKcy9UcUR1jnayoxCGbisDE+yzi3p8Vv2k56KCt5d5aVDEc1Ol89zclTHQZWT T7741G1xtW/J938AldvYocJWdV+SlWwhW3RVBuSiAv3JXhDiwwbFfqfSGFsseHXvUa+y3ALNA PDQKq66YjCBYJBtDZ99X7o= Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Richard Henderson , Laurent Vivier , David Hildenbrand Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Signed-off-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20210428193408.233706-16-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/s390x/signal.c | 62 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) -- 2.31.1 diff --git a/linux-user/s390x/signal.c b/linux-user/s390x/signal.c index 9d470e4ca069..b537646e60b3 100644 --- a/linux-user/s390x/signal.c +++ b/linux-user/s390x/signal.c @@ -50,6 +50,12 @@ typedef struct { target_s390_fp_regs fpregs; } target_sigregs; +typedef struct { + uint64_t vxrs_low[16]; + uint64_t vxrs_high[16][2]; + uint8_t reserved[128]; +} target_sigregs_ext; + typedef struct { abi_ulong oldmask[_SIGCONTEXT_NSIG_WORDS]; abi_ulong sregs; @@ -60,15 +66,20 @@ typedef struct { target_sigcontext sc; target_sigregs sregs; int signo; + target_sigregs_ext sregs_ext; uint16_t retcode; } sigframe; +#define TARGET_UC_VXRS 2 + struct target_ucontext { abi_ulong tuc_flags; abi_ulong tuc_link; target_stack_t tuc_stack; target_sigregs tuc_mcontext; - target_sigset_t tuc_sigmask; /* mask last for extensibility */ + target_sigset_t tuc_sigmask; + uint8_t reserved[128 - sizeof(target_sigset_t)]; + target_sigregs_ext tuc_mcontext_ext; }; typedef struct { @@ -128,6 +139,24 @@ static void save_sigregs(CPUS390XState *env, target_sigregs *sregs) } } +static void save_sigregs_ext(CPUS390XState *env, target_sigregs_ext *ext) +{ + int i; + + /* + * if (MACHINE_HAS_VX) ... + * That said, we always allocate the stack storage and the + * space is always available in env. + */ + for (i = 0; i < 16; ++i) { + __put_user(env->vregs[i][1], &ext->vxrs_low[i]); + } + for (i = 0; i < 16; ++i) { + __put_user(env->vregs[i + 16][0], &ext->vxrs_high[i][0]); + __put_user(env->vregs[i + 16][1], &ext->vxrs_high[i][1]); + } +} + void setup_frame(int sig, struct target_sigaction *ka, target_sigset_t *set, CPUS390XState *env) { @@ -161,6 +190,9 @@ void setup_frame(int sig, struct target_sigaction *ka, */ __put_user(sig, &frame->signo); + /* Create sigregs_ext on the signal stack. */ + save_sigregs_ext(env, &frame->sregs_ext); + /* * Set up to return from userspace. * If provided, use a stub already in userspace. @@ -202,6 +234,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, rt_sigframe *frame; abi_ulong frame_addr; abi_ulong restorer; + abi_ulong uc_flags; frame_addr = get_sigframe(ka, env, sizeof *frame); trace_user_setup_rt_frame(env, frame_addr); @@ -229,10 +262,15 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, tswap_siginfo(&frame->info, info); /* Create ucontext on the signal stack. */ - __put_user(0, &frame->uc.tuc_flags); + uc_flags = 0; + if (s390_has_feat(S390_FEAT_VECTOR)) { + uc_flags |= TARGET_UC_VXRS; + } + __put_user(uc_flags, &frame->uc.tuc_flags); __put_user(0, &frame->uc.tuc_link); target_save_altstack(&frame->uc.tuc_stack, env); save_sigregs(env, &frame->uc.tuc_mcontext); + save_sigregs_ext(env, &frame->uc.tuc_mcontext_ext); tswap_sigset(&frame->uc.tuc_sigmask, set); /* Set up registers for signal handler */ @@ -271,6 +309,24 @@ static void restore_sigregs(CPUS390XState *env, target_sigregs *sc) } } +static void restore_sigregs_ext(CPUS390XState *env, target_sigregs_ext *ext) +{ + int i; + + /* + * if (MACHINE_HAS_VX) ... + * That said, we always allocate the stack storage and the + * space is always available in env. + */ + for (i = 0; i < 16; ++i) { + __get_user(env->vregs[i][1], &ext->vxrs_low[i]); + } + for (i = 0; i < 16; ++i) { + __get_user(env->vregs[i + 16][0], &ext->vxrs_high[i][0]); + __get_user(env->vregs[i + 16][1], &ext->vxrs_high[i][1]); + } +} + long do_sigreturn(CPUS390XState *env) { sigframe *frame; @@ -292,6 +348,7 @@ long do_sigreturn(CPUS390XState *env) set_sigmask(&set); /* ~_BLOCKABLE? */ restore_sigregs(env, &frame->sregs); + restore_sigregs_ext(env, &frame->sregs_ext); unlock_user_struct(frame, frame_addr, 0); return -TARGET_QEMU_ESIGRETURN; @@ -313,6 +370,7 @@ long do_rt_sigreturn(CPUS390XState *env) set_sigmask(&set); /* ~_BLOCKABLE? */ restore_sigregs(env, &frame->uc.tuc_mcontext); + restore_sigregs_ext(env, &frame->uc.tuc_mcontext_ext); target_restore_altstack(&frame->uc.tuc_stack, env); From patchwork Mon May 17 18:14:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440219 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1353720jac; Mon, 17 May 2021 11:55:20 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzsCzz00TC5mSqbQipzYr+UtJvkdGG+m1NOqGJt1ULB4OjDcCJfzNfL+I1FYeYV6Qp31vNW X-Received: by 2002:a6b:690c:: with SMTP id e12mr1154636ioc.69.1621277720001; Mon, 17 May 2021 11:55:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277719; cv=none; d=google.com; s=arc-20160816; b=TvFsWho1qX8f//Gd4gYtin+179bhbkFiajxX0LR9riucQygBfwU6HIGMzWH9KzRb/Q 5o4yA29yrbnOXSr3jdGCk4Q34QuWp95Scg3N4bMO3Enf/NNX+CoVQwVuWDNrHB9z1MbW 3ctzJSfXqUvxgPc1/RYCGZVGlB7AVlXbGplzAmR2/CvbHIwy0aXUKrcLpPNXKDdx9trZ JKxOS2bxAbOpeeHBAiAl5ghwzfGARvx8DSaCXs0qxC4owwAm953c+bQyCue7IAocB/34 rjMTayN8AVZfHgAABx5Gdh+ObBmzXJu2+VYnuaw48bc/Z+C1RMWNYHjCYXjIu10p10dA jbCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=SHXFw/lm441ltxVIH7llVHQUK9TP/BYp89V2Bh55SSw=; b=OJCQORfbZ43E1I9ZowD7s3MrM3evxUVDGeLKJimZ3tpfBqeOeylKsoZWjzfLZg+oMz SwIhuphFd9X2CPfBOwiEBZ3DUCqGtoPshvRug1nPsd6GO9CMuXcidwqh6Vh34R7jveJF VIFd8jXBm5i9ySpqeL0ZQZN5GdpCmOYJD5otCmwzidGEd47tLsi8IItvhGbPQEDX3aKH xiJ0KuTC1b+Ux1zdaoh9M80efm5bfaZghf/WjEN604xYr+rIl0KeeblUEf15gSNHP4KM 7xhJGm+Sp2ejVSZ5HNY5lXUluTq0U6w0/zCDeKrmzXm4opG8gwU0sGeOJiRTewcUYw2R JzRw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id t12si20606183jaj.66.2021.05.17.11.55.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:55:19 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:57308 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiOd-0001RA-CS for patch@linaro.org; Mon, 17 May 2021 14:55:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34322) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihm4-0006z0-6j for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:28 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:52007) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihla-0004Zd-9e for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:27 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MI41P-1lf58V34Lf-00FAwA; Mon, 17 May 2021 20:14:52 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 51/59] linux-user/alpha: Fix rt sigframe return Date: Mon, 17 May 2021 20:14:16 +0200 Message-Id: <20210517181424.8093-52-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:PDrwoQWrAJ5uiLKFzRiKLygC5ZQN+i5naumYjs2xRijmcAuAgeH nu2qW1H3t8/DN5mqgxm36WLmjdKYEMQ/v+t0P6UE4ZlqxzEjeOKf0P/R4H+Ug/5GVVQlngC YupS1Zdu9RgTME7yS39TNwkjwbB66epmzIMAi7l4bhApuy6bwYiNnuQODbrq3RSoO5ARy4V D+O5W+22OXjX/pH4sRhcw== X-UI-Out-Filterresults: notjunk:1; V03:K0:KoGqCJkR/34=:2whZOlpfd65nD1CZDoaNvU XxmH+hm0IEyLNlSUg7b+vnzJy5HPAkTm2/4+TboVIl20qZfnoXNixk3wZNKs/LZ++T6zgYf2G 7xRLgeXvFtSSQa2A3rfK7rrv62ZyIB7fsrWBlVGdeEn6j27l+FtmNoAACQtiHwuyOWSb82979 wQL9+GodD+lzYDpbZZXgwTnJUe3A2y8JjoXKv88T+Px2RcS9MShOLrJyC76LJ/0nRydvLER/0 00fyliQQJRSgYM7Ud2YB/LGm8aFNgQ1Q8eP7vopEAiGj1YHn2fdeOgPgxK4esbIBi4TxVWSrs 7S6uEcTgDM8f7C1L3gvrDNEWT+P1L8Qnp2wVwADeBRA8zaoDTtYQjbGMXxHyggmhea9hWHzQu WAFSrQxN5FRVfHRsBNTYiwhU5hAnmb+yUNgHu049rLoqCg8KXukiPcYUstrggxkCxGzijjY2E qgoAjd/k9LIrZnbaPWgGrOfQqaBWb1MpKNdqDWGRvaBDi4d16VzrYux/6cDAYJZU+m58ynITU RyxfWNugdp8iAGMfwOvACA= Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Alex_Benn=C3=A9e?= , Richard Henderson , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?b?w6k=?= Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson We incorrectly used the offset of the non-rt sigframe. Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Richard Henderson Reviewed-by: Alex Bennée Message-Id: <20210422230227.314751-2-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/alpha/signal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.31.1 diff --git a/linux-user/alpha/signal.c b/linux-user/alpha/signal.c index d4e4666874e3..0eec9ba3fd82 100644 --- a/linux-user/alpha/signal.c +++ b/linux-user/alpha/signal.c @@ -200,7 +200,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, &frame->retcode[1]); __put_user(INSN_CALLSYS, &frame->retcode[2]); /* imb(); */ - r26 = frame_addr + offsetof(struct target_sigframe, retcode); + r26 = frame_addr + offsetof(struct target_rt_sigframe, retcode); } if (err) { From patchwork Mon May 17 18:14:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440221 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1357932jac; Mon, 17 May 2021 12:01:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyoPWKefp3L80oShc7q53zrMiBU9bXyZlfMzSpceIRKWfPMbrh/H3OidgEMArve7cFH3drz X-Received: by 2002:a6b:e719:: with SMTP id b25mr1136303ioh.49.1621278103113; Mon, 17 May 2021 12:01:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621278103; cv=none; d=google.com; s=arc-20160816; b=ICxudNxqttwe+8/7m4YPt6FUHdIY08IxsRIiiPRNy9x8k7YzWOlsgn9YdzLgUIEcSu Jv34Gbz4KH4B5bGWLgzlriXdsIS4h+/iGllLvUcMLB6yPBlV73DGXQy19kxfa2XhNW7U UULLSaauxpBLoul9ble6Hs+nWOyn/BNKMh1ttFXNwUgM+EcQnqglmCDu3tNVNIShKklX dKx5l9s/rTYNnVPkDaHUv7nOP34mcUfOhAqr3p6/YOnrLYOsuh+oogLuiIWqZwqoPLlu G//UF+t05t1rBlpCk5lUEQzA5wkT6FQhmOqk9LahyzXul2plVXhhP6RlaMjPOWsy2z2+ b5pg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=RJ+sW+zzu1E0vb86Cj/GRhjd4ax6PDfQ4xz4vzCw+mI=; b=U7CKRPLFBiagMr9H8GMOWjXJFVgDjKJdIkQ0WucGX3WwWRkbihBHNrsFBc+SYOUM++ p7ySV6A68pVCm8/kdOSZ0hR2wQmvhHVQjHVYuEUAWoZr/bfcyMCuDo9XRBL1m1SrylYz ORDy0V4Et+G4MxlEr5thkBjSLAhGsLbM+DoioLeanLgMY/nay+uc4TK7ziwH0IO8GeIr bXWAVjTGn2FT/C3L/PSaeGBPHWciqtlG5cs1b2exDu+0T3h2zTN+h7mQWWWOlxpeRTKG ISYuOxXKR25RD3LLREKi/upJiq2RLS+PECBB7z7eA0Q8DaTbyqwZdqbHAGM8QDIE2k/F hNAQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id a14si17997161iol.90.2021.05.17.12.01.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 12:01:43 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:45630 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiUo-00047T-Ey for patch@linaro.org; Mon, 17 May 2021 15:01:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34354) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihm6-00075I-HI for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:30 -0400 Received: from mout.kundenserver.de ([212.227.126.133]:38539) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlZ-0004ZG-CS for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:30 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MQgtC-1m5J7L0wA2-00Njdv; Mon, 17 May 2021 20:14:53 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 52/59] linux-user/alpha: Rename the sigaction restorer field Date: Mon, 17 May 2021 20:14:17 +0200 Message-Id: <20210517181424.8093-53-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:NP6yylL70NuXkOy5Nv5OEZ/Gv8VXtFibyGr6DK5bfs628kFBpwQ fZI/os3F00E0ZjFfpNoxe7VmkRaDImrbNqNL5K40P1TX3iMaYQsq+H4uRuvNKctrw/ov73S hSQsQOtdaGvtJaZCIFN4nsP7bndcsPAawjRSgfK/pBKMDV39tvBwp6jaCpv+TbWqyKH4tlW Lfy2YBf5NEIWQdm0mtu5g== X-UI-Out-Filterresults: notjunk:1; V03:K0:V3ySZRcyrng=:g0h+yZJes7maFtDWlL2oEy 8fLcdPH4lZME0YUVsg2jJ89INhIyAtzEoIwdI463TgN6NeBM+yqScL9M0GwPgjV2Dv6jTLn4S njAv9Cj+YtF745m7kGaQvWQKwmi19zC8Y+rZ4aVm7tZ+X9GjMS7h8a3HlCAtS3f8FPYrw1NeD ou2YANGhJEJ178kvCQaPe626r9YgsJb2qjTgdVrrA+kJDq0+ZVQVevhlDaHk99C/hW09VBYfz 3NujW1ennkQTcPrIB0mVmbf9otnhiU967oUTYkRkJqqSpBeJYDY+gp2C+Ut8pfBsZAxNuP6PN BCC1NoCwoPEacIsIPrGrVeSjzyMiqB9CIo8SSz1LO7q6HklQ+0sQVhl84RqZlAkmKBUr0KwPs TZPHeC5vLwTAjwM3I69DhW75LJzdE+q8ChY+nG8jn1kYx05aCkSYxknyTttRykyH385+sxf7K 3PvpOg3tA2R6w9l0bGhNjGjpLZDqbnkqgg+M2USmSzCWdU2GqenhZF8wiUcG5n7GTFgZGwzN6 RXjGq2kIdVzxVSGFmXxYr8= Received-SPF: none client-ip=212.227.126.133; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Alex_Benn=C3=A9e?= , Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Use ka_restorer, in line with TARGET_ARCH_HAS_KA_RESTORER vs TARGET_ARCH_HAS_SA_RESTORER, since Alpha passes this field as a syscall argument. Signed-off-by: Richard Henderson Reviewed-by: Alex Bennée Message-Id: <20210422230227.314751-3-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/alpha/signal.c | 8 ++++---- linux-user/syscall.c | 4 ++-- linux-user/syscall_defs.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) -- 2.31.1 diff --git a/linux-user/alpha/signal.c b/linux-user/alpha/signal.c index 0eec9ba3fd82..1129ffeea1d8 100644 --- a/linux-user/alpha/signal.c +++ b/linux-user/alpha/signal.c @@ -138,8 +138,8 @@ void setup_frame(int sig, struct target_sigaction *ka, setup_sigcontext(&frame->sc, env, frame_addr, set); - if (ka->sa_restorer) { - r26 = ka->sa_restorer; + if (ka->ka_restorer) { + r26 = ka->ka_restorer; } else { __put_user(INSN_MOV_R30_R16, &frame->retcode[0]); __put_user(INSN_LDI_R0 + TARGET_NR_sigreturn, @@ -192,8 +192,8 @@ void setup_rt_frame(int sig, struct target_sigaction *ka, __put_user(set->sig[i], &frame->uc.tuc_sigmask.sig[i]); } - if (ka->sa_restorer) { - r26 = ka->sa_restorer; + if (ka->ka_restorer) { + r26 = ka->ka_restorer; } else { __put_user(INSN_MOV_R30_R16, &frame->retcode[0]); __put_user(INSN_LDI_R0 + TARGET_NR_rt_sigreturn, diff --git a/linux-user/syscall.c b/linux-user/syscall.c index e05870c33884..82736540ebcc 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -8989,7 +8989,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, act._sa_handler = old_act->_sa_handler; target_siginitset(&act.sa_mask, old_act->sa_mask); act.sa_flags = old_act->sa_flags; - act.sa_restorer = 0; + act.ka_restorer = 0; unlock_user_struct(old_act, arg2, 0); pact = &act; } @@ -9085,7 +9085,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, act._sa_handler = rt_act->_sa_handler; act.sa_mask = rt_act->sa_mask; act.sa_flags = rt_act->sa_flags; - act.sa_restorer = arg5; + act.ka_restorer = arg5; unlock_user_struct(rt_act, arg2, 0); pact = &act; } diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 25be414727f5..693d4f3788d4 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -519,7 +519,7 @@ struct target_sigaction { abi_ulong _sa_handler; abi_ulong sa_flags; target_sigset_t sa_mask; - abi_ulong sa_restorer; + abi_ulong ka_restorer; }; #elif defined(TARGET_MIPS) struct target_sigaction { From patchwork Mon May 17 18:14:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440220 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1357719jac; Mon, 17 May 2021 12:01:30 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwjHlQ7Kji4OWQYmb7l1Kx29vt/S6hGS4gpx8HJYjKWnvpES+YaTfdRzoDBEYlb3k+TgSbZ X-Received: by 2002:a6b:ec19:: with SMTP id c25mr1156352ioh.181.1621278090522; Mon, 17 May 2021 12:01:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621278090; cv=none; d=google.com; s=arc-20160816; b=E/W2kegpJM0Th67tvIdR99brxHL38ydh43AfFkR5SYITEgPfH6CSk+Drht0wRL5/g/ obav3Bjc8z3LYNgf8wRsqXGyu5tG0U1YawwEBrb7oJUe1OYcRGbvmZyQktMb4Kee3pYi YXCV4FpzzD2Z+MXfeSWBIN0sbf4D++XC4khcGM1MQZAtZRFX0nUMHDEttvwol71HJOAG 1rv+v0qMzLuC0g0khuRXh+1+6I/+l4UM4acN24463KbKKhH0Q6GahmfYR1S4zkqm2t1k xQe763tHI/Te2v+9oigsTk8+2hcge/X/0nBnPMWlQAAX6i12mqHSD1hmEObSxh8V0kqg DKRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=ELyVqeJxV5Ae54vDcafuOEoMrnQCuw/7tMCScIrsWq4=; b=AUtyAeARjF8nJUyXpET0EcA0rLuZ1P7Q8iGtS9mX8h31FWW5+C42GhjKs5Du3jCi5c 7NbqRJcNEckIqOVMzvBVCSFmtsG7MMs58uY9cQOnK/mKntULJeBLUmf8INfUpnFTfhmf SVLsCFvi74Susaaq1J0ZMnPOGhxHIscduNtkYlLlBit7DA3uCp94v637QIRaFXjRoILd 06cok4+5C415VuQS1cOpge6DoW80Ausd5jvSMxTzxOAnLoYOsaD/X+lUKieEUkCR4GF/ qur8CZkOuScfNXbE3/ZysLtDj4PwRF0c5LNprGh7XpjvWx0AGMxy8c2x/x1jJRc5lBM6 hYRQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id p9si18648940iov.92.2021.05.17.12.01.30 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 12:01:30 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:46992 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiUb-00051Y-Lp for patch@linaro.org; Mon, 17 May 2021 15:01:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34280) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihm2-0006vO-7E for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:26 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:39203) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlZ-0004ZJ-CD for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:25 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MaHOX-1lxIm82ylp-00WILc; Mon, 17 May 2021 20:14:53 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 53/59] linux-user: Pass ka_restorer to do_sigaction Date: Mon, 17 May 2021 20:14:18 +0200 Message-Id: <20210517181424.8093-54-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:mcsTfc6fOoZjp0wHQWNS2UTZdGTnyUWtJhL+kCpbN0KgtpwY21I BvztYYBMLD+ryRP9aIKW1af8yOigTph2jpJVkCVoVpuBvXh544mcAr6rwgn6iP59nlMNhQO O/5asGffLqeB95QguIQM0MW0PHxPTmbPbNwLOBkcIUbizhrExGkEA3/JVfvDg5oyC+CqOH0 qAFCCUYAIVbqEoT7mrHoQ== X-UI-Out-Filterresults: notjunk:1; V03:K0:O6hzklbdBm0=:EykCqzB6cRFiyJmtEpxUZe qFq1pDU/fcfq62r90FS/MdXqKPbWohthY7uvmI59kSkTkHo1T+rDX+LXMgBwY0jXHdpjC0eMf xhWSfY2+vbKTfHmJkho75Ak+poWGsG+1UqQbGWCoWdBxsfLmHsU1DvouuYUaUQdC6oKrzw7Z1 ZMWyJlwZ30t37qG3MxXvRZhbv7jS8sVtINvGMoLSQ6NFRHVJSTSjjsYF7T4383Du+SdNfi0zz AZHiixwPS+gZl9GTjWkVZUsdr4o8jdP3dl77eiyAuLFcf/WrPKfuXc4fg9LINZmfl5wu2MRkT TG/bazEK8zUGj2SE/SL5mfS5YRSYz2n8Duc2xqRVkmlSq+cw3WaeWjkjW55e43Cgp2rPQ7/cM L4LIpiYL94PpzsoC9insnNdOj1VCqiFk/MZ3+Ej+bL7xobrIDSxdhfuf3bIZX6d7nbzQhsL2O bA+m+FiZKFXzp03UDqCia2u+2L1k7rTbkwMEIbewNzUv0HsDfURfq2apvmV2I7H1mz8xrXhB5 1zs5CWnIoEB1euS8qkm6c8= Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Alex_Benn=C3=A9e?= , Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson The value of ka_restorer needs to be saved in sigact_table. At the moment, the attempt to save it in do_syscall is improperly clobbering user memory. Signed-off-by: Richard Henderson Reviewed-by: Alex Bennée Message-Id: <20210422230227.314751-4-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/signal.c | 5 ++++- linux-user/syscall.c | 19 ++++++------------- linux-user/syscall_defs.h | 2 +- 3 files changed, 11 insertions(+), 15 deletions(-) -- 2.31.1 diff --git a/linux-user/signal.c b/linux-user/signal.c index cbd80b28cf5a..9016896dcda0 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -842,7 +842,7 @@ abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong uoss_addr, /* do_sigaction() return target values and host errnos */ int do_sigaction(int sig, const struct target_sigaction *act, - struct target_sigaction *oact) + struct target_sigaction *oact, abi_ulong ka_restorer) { struct target_sigaction *k; struct sigaction act1; @@ -875,6 +875,9 @@ int do_sigaction(int sig, const struct target_sigaction *act, __get_user(k->sa_flags, &act->sa_flags); #ifdef TARGET_ARCH_HAS_SA_RESTORER __get_user(k->sa_restorer, &act->sa_restorer); +#endif +#ifdef TARGET_ARCH_HAS_KA_RESTORER + k->ka_restorer = ka_restorer; #endif /* To be swapped in target_to_host_sigset. */ k->sa_mask = act->sa_mask; diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 82736540ebcc..1f282574a12c 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -8989,11 +8989,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, act._sa_handler = old_act->_sa_handler; target_siginitset(&act.sa_mask, old_act->sa_mask); act.sa_flags = old_act->sa_flags; - act.ka_restorer = 0; unlock_user_struct(old_act, arg2, 0); pact = &act; } - ret = get_errno(do_sigaction(arg1, pact, &oact)); + ret = get_errno(do_sigaction(arg1, pact, &oact, 0)); if (!is_error(ret) && arg3) { if (!lock_user_struct(VERIFY_WRITE, old_act, arg3, 0)) return -TARGET_EFAULT; @@ -9017,7 +9016,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, pact = NULL; } - ret = get_errno(do_sigaction(arg1, pact, &oact)); + ret = get_errno(do_sigaction(arg1, pact, &oact, 0)); if (!is_error(ret) && arg3) { if (!lock_user_struct(VERIFY_WRITE, old_act, arg3, 0)) @@ -9040,15 +9039,12 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, target_siginitset(&act.sa_mask, old_act->sa_mask); act.sa_flags = old_act->sa_flags; act.sa_restorer = old_act->sa_restorer; -#ifdef TARGET_ARCH_HAS_KA_RESTORER - act.ka_restorer = 0; -#endif unlock_user_struct(old_act, arg2, 0); pact = &act; } else { pact = NULL; } - ret = get_errno(do_sigaction(arg1, pact, &oact)); + ret = get_errno(do_sigaction(arg1, pact, &oact, 0)); if (!is_error(ret) && arg3) { if (!lock_user_struct(VERIFY_WRITE, old_act, arg3, 0)) return -TARGET_EFAULT; @@ -9085,11 +9081,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, act._sa_handler = rt_act->_sa_handler; act.sa_mask = rt_act->sa_mask; act.sa_flags = rt_act->sa_flags; - act.ka_restorer = arg5; unlock_user_struct(rt_act, arg2, 0); pact = &act; } - ret = get_errno(do_sigaction(arg1, pact, &oact)); + ret = get_errno(do_sigaction(arg1, pact, &oact, arg5)); if (!is_error(ret) && arg3) { if (!lock_user_struct(VERIFY_WRITE, rt_act, arg3, 0)) return -TARGET_EFAULT; @@ -9104,6 +9099,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, target_ulong sigsetsize = arg5; #else target_ulong sigsetsize = arg4; + target_ulong restorer = 0; #endif struct target_sigaction *act; struct target_sigaction *oact; @@ -9115,9 +9111,6 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, if (!lock_user_struct(VERIFY_READ, act, arg2, 1)) { return -TARGET_EFAULT; } -#ifdef TARGET_ARCH_HAS_KA_RESTORER - act->ka_restorer = restorer; -#endif } else { act = NULL; } @@ -9128,7 +9121,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, } } else oact = NULL; - ret = get_errno(do_sigaction(arg1, act, oact)); + ret = get_errno(do_sigaction(arg1, act, oact, restorer)); rt_sigaction_fail: if (act) unlock_user_struct(act, arg2, 0); diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 693d4f3788d4..e4aaf8412f56 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -492,7 +492,7 @@ void target_to_host_old_sigset(sigset_t *sigset, const abi_ulong *old_sigset); struct target_sigaction; int do_sigaction(int sig, const struct target_sigaction *act, - struct target_sigaction *oact); + struct target_sigaction *oact, abi_ulong ka_restorer); #include "target_signal.h" From patchwork Mon May 17 18:14:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440222 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1360800jac; Mon, 17 May 2021 12:05:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyYivb+cKElqJXnDjokE7uGqghIRae3Y0pTdswPy7DB1HM82BDFNwrDs1KNCI8HrTkyLlS7 X-Received: by 2002:a02:3506:: with SMTP id k6mr1460591jaa.39.1621278300182; Mon, 17 May 2021 12:05:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621278300; cv=none; d=google.com; s=arc-20160816; b=xx3R8NK4005y823J3vN3YE/Y88XyzTwTm5cBF8zlkkLf6XUYBX7+7Oq/Y4vj7i76Ra SbrwtiM7D3JI7VcYbQfKjbsWiafp4o5zo+jVoXWieyd4VYCMe6YiAHOZBAFFsY/DZ21H p+MEXJzTqANy2HyIXWlmQ8AV5XCnudGUMu0ekzpNnSKwFoYYZXh4V/t7xBZlzQB4XQnJ uLHsw3ISucoIJE2NdFRQ3QAGT1bxrJs+hIAjIrcsAmZwYRGQXOff2ZjJeUDiFLlKlg+g /pOgAfSApN4DQDBcRPuoEel1j+5U/LuFw9E5eIJ8n6WQgiCh+vDiC0Ykw7SJ0tNaHV13 lBeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=2d/a7LA+iIL/9ZFexrcuKLMnnToCctqdJBLRwiXbzw0=; b=LC/JuXeU0H7XJiL7gy+IZIzK+Moikkky8MoejueB2fHz4a9IRrXcvf/Yv0GXM/Omih 8DZtc7I5OBhOksGjs9hbLzEBxr9L5skdu5ICbUNtoSqMG/IS0IZU4Ou11cjYo+AeIrI8 Qfi8iOFtLREfQB1nXcdEPvV0uEsMXBb95LoGd8Nlnmgq0n2jRp87C08z+7Gx++K273js 3fNMQ3piX+6kU/rh7QOALc4ACJxpI76hp7vBedjG4tsIFTjUHinrpPxywEyayI3gRM24 k1lbyfmqGV1jt80+99R6bUVybqtWWcRnVGwBfeVshzjBuSitWwCTDVjIuRcEmmlCuiZ1 f7Ug== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id n3si12760094jap.45.2021.05.17.12.05.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 12:05:00 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:55306 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiXz-0002G5-Gf for patch@linaro.org; Mon, 17 May 2021 15:04:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34362) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihm7-00075x-2V for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:31 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:40469) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihla-0004aE-V2 for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:30 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MVrXh-1lsv3z1RSv-00RsVI; Mon, 17 May 2021 20:14:54 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 54/59] linux-user: Honor TARGET_ARCH_HAS_SA_RESTORER in do_syscall Date: Mon, 17 May 2021 20:14:19 +0200 Message-Id: <20210517181424.8093-55-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:U19fCq8n1yeaOx3WZmmu9QX6E03U6ewNYqTR3Rp6Qp7GW5Y8pKp 3w6i3/T91Ytve8HKBEbpKVoRV5R5/fmGvllwEFTNXFLbfnFCzWbvy4UkBi2F7qaC/+E7bUv 3qVOVLmhUDNi96xUVKUGbjDJ3zZE5XaymNDAUMnJOyMgGamYGYAsTi3rsy1T5Wxy/9p1Ghj ktvnWjLjxL/RWUwfR2b7A== X-UI-Out-Filterresults: notjunk:1; V03:K0:K7mfQV6am8Y=:KlNU0bs3MP/TJZ0cEZOWs4 Mu/vf9fpFsm5IyW+DC2OSe8H4V08b/zWCCXiRLybtKsfsBEFjwFqLuAxN0nJsdHq1x5GG0Dk4 tOa3A6CjljIajDAv4ekePJ/90BlRZNyfrdd9pQ8CWBID0BGvpcnsb/Pmo+hzI+ZIVvehDbqsF AWCxrMDo5yaa/yer8MiLjz7aCWJuY6gBEMX/VJT7YFElmDtt6EEq7WdkA445G2EB5fQ66L01I H+WcoGSKavBFHX2tZc7b4bHBZ2VYoGBNx8KctGFh0baHiMtVba2MIQwytWreW+gZfV9EUGAzx XgB2K2qxxyZMyEhbvsZscMhSYAzvHb50byKNgJefyNXpQ5vED8zA/ZwaWQXzIKzfRGUSqlNyz QXg3IhHEo8WPAM+n4HCjJdAdWcFbAO5B4jUqcOx6hT6O15fQWmHUUq0SLrTa8O45qYjedvfXD O15B7ZZesS0lWBYcDAL4avyyFIjAHDxz2J0ZnjS96aguNZdms59iISgkB5m4aCg8xJN8TnrCB EIarAhLha1KCJkhD4HlinI= Received-SPF: none client-ip=212.227.126.131; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Alex_Benn=C3=A9e?= , Richard Henderson , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?b?w6k=?= Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Do not access a field that may not be present. This will become an issue when sharing more code in the next patch. Signed-off-by: Richard Henderson Reviewed-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20210422230227.314751-5-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 4 ++++ 1 file changed, 4 insertions(+) -- 2.31.1 diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 1f282574a12c..7b139a9c3a55 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9038,7 +9038,9 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, act._sa_handler = old_act->_sa_handler; target_siginitset(&act.sa_mask, old_act->sa_mask); act.sa_flags = old_act->sa_flags; +#ifdef TARGET_ARCH_HAS_SA_RESTORER act.sa_restorer = old_act->sa_restorer; +#endif unlock_user_struct(old_act, arg2, 0); pact = &act; } else { @@ -9051,7 +9053,9 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, old_act->_sa_handler = oact._sa_handler; old_act->sa_mask = oact.sa_mask.sig[0]; old_act->sa_flags = oact.sa_flags; +#ifdef TARGET_ARCH_HAS_SA_RESTORER old_act->sa_restorer = oact.sa_restorer; +#endif unlock_user_struct(old_act, arg3, 1); } #endif From patchwork Mon May 17 18:14:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440216 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1353012jac; Mon, 17 May 2021 11:54:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy7yzKO+FzFiCNcvAvMfvI90Iwc7rjTNHZHK9OlYrhR+GOgSv9n+hIXWfy0UzyWoGtIwRqK X-Received: by 2002:a92:7b12:: with SMTP id w18mr990287ilc.28.1621277646188; Mon, 17 May 2021 11:54:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277646; cv=none; d=google.com; s=arc-20160816; b=TtZW7fWdn2Z/Cv4wtC14U5vrAzwYmSE+i63W29x8h8vyNG0TlKjwU3s95VGFMSc6LA bfMx9VlFTpY2WyuYlYzaHNEZgjq1sb7oeFG7QKow0kEHj3b2wkvt2oH3a3DxLT7o7gx1 TaKXcCHS2rz45wYvssoLSe1+xRmLrgYD0J91Pq6bVlGgtDgRnhv/2cILTfUSU0zD92RS IThRvAeqwt60AiXnZ7lJMdZupSMMvPZNY8RfzK2IOp6lwfe5D4YZIVmjmfq5b8GMkHa4 YcBd8bF9Q8In2FctbPC3EY0odE9lgE2i8mgkDqEov5bsTVSS0qM37XvL27oDNsH9e/sE ghUQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=AwYgJlurWBBqoZMonKRkcCc9h3rr/nAQURDlGYcvXSE=; b=k/gbde6ypRSyuN2rKe6+Y6AX+w6CYPZBp9Q5cXGXg9e8Hs/6E/9zZ7vtMQE6zmiI9p FWUdwVXmpOehSWnvEy2MHaM98W+/NRP58z+l3wmHHvbXhBUpdvLuvnVdqxd06kVKQbTJ Hli03Wf4PaAFkfDSOf48OmQzIV9HJFhEPpnhpgq/bqQFVO0eIBNf2F/KZttqHF/40Mru CBSpWjScBvBwDpagaFyVscFCaSfrtTP5yGoLyMrA53le1C2j+1dj5JO9xfajKJWki8sR HnfoGWFiF4dHefY6VapPaMAQ4NvMfTJge73f4beviThdzhqSMrrFqSKs9OsjaTT1gDwD A+8Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id b1si18257120ioh.94.2021.05.17.11.54.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:54:06 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:50950 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiNR-0005f2-JZ for patch@linaro.org; Mon, 17 May 2021 14:54:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34276) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihm2-0006vJ-8L for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:26 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:46509) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlZ-0004ZR-BE for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:23 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1Ml3ym-1l3qdu3VgS-00lTp7; Mon, 17 May 2021 20:14:55 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 55/59] linux-user/alpha: Define TARGET_ARCH_HAS_KA_RESTORER Date: Mon, 17 May 2021 20:14:20 +0200 Message-Id: <20210517181424.8093-56-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:MFA5a6cPTBO0bOjE7+QLrnkIugrsFBVthsS6Axi48/E7iOmJpRJ kkK4OpeLKLVrA+crO0I6WHcFcNJyiqg3ZO+1xSabSovSzIvhLDy86a9PKJh37CPwFRIRkWv eDV0YUzdCVyS4RjUQdku6Fhq9QYTZOZWy5rPsSiHVryXNSGIti2Lo6yl7s6qFnG2d9U32n3 QyhZnXBzf+3q4NBw3JvCA== X-UI-Out-Filterresults: notjunk:1; V03:K0:3ZFjjahYV4w=:3v18EcRTtnwcDV2volzhZ2 WL/jty65RV592mp+0zMfKphDVbONUvZAsFNOxfa40WuSU8smsxo8zD6nJhlpK6hHPI4HiEoEd eKSLxfHj7J3XYF/BIVWCSWg/cCQHSllErHFToQeJ3sP5x06VmEUlOP7GkGQs9vpfwDMW5OWWY Rl6Ri8d//q2Xi2ucVsvIQwumsw+TgSuU6q+/s1HCvYxMUPOCT6404i0m0Qcxz0CB7sgnh7HUa 4oUEev2zSG+HItMX8KierOll4gk5tS3noGS4iZSMpWnD+Zqs+LExIj4WU+WA68x0eoHit28hm xwdy5+w5nrSRswuTUfHXQi7dvEpcEwjcyWCd9ks79+mFD9vwrk9PEAefQK4LroLCGqNZHckKD i005Vknnm8kKSlfYa2EtJ0tPO0w2t/zdtLwTSgwsh+MfZ6NF+UusA8CbNw4FjzOY/hVQ/xomV 1KlyMWrluF58wTqNZuJbd6cu1vX1Oy/4f7W3lgnj0REEyrpRLQ5d7gg+1U2d9s3ktzp5/iI1C HK0zMc202OWn9P+nSrGu0Q= Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Alex_Benn=C3=A9e?= , Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson This means that we can share the TARGET_NR_rt_sigaction code, and the target_rt_sigaction structure is unused. Untangling the ifdefs so that target_sigaction can be shared will wait until the next patch. Signed-off-by: Richard Henderson Reviewed-by: Alex Bennée Message-Id: <20210422230227.314751-6-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/alpha/target_signal.h | 1 + linux-user/syscall.c | 37 ++++++-------------------------- linux-user/syscall_defs.h | 6 ------ 3 files changed, 7 insertions(+), 37 deletions(-) -- 2.31.1 diff --git a/linux-user/alpha/target_signal.h b/linux-user/alpha/target_signal.h index 0b90d3a89701..250642913e2a 100644 --- a/linux-user/alpha/target_signal.h +++ b/linux-user/alpha/target_signal.h @@ -92,6 +92,7 @@ typedef struct target_sigaltstack { #define TARGET_GEN_SUBRNG7 -25 #define TARGET_ARCH_HAS_SETUP_FRAME +#define TARGET_ARCH_HAS_KA_RESTORER /* bit-flags */ #define TARGET_SS_AUTODISARM (1U << 31) /* disable sas during sighandling */ diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 7b139a9c3a55..4515f816b59b 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9064,41 +9064,17 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, #endif case TARGET_NR_rt_sigaction: { -#if defined(TARGET_ALPHA) - /* For Alpha and SPARC this is a 5 argument syscall, with + /* + * For Alpha and SPARC this is a 5 argument syscall, with * a 'restorer' parameter which must be copied into the * sa_restorer field of the sigaction struct. * For Alpha that 'restorer' is arg5; for SPARC it is arg4, * and arg5 is the sigsetsize. - * Alpha also has a separate rt_sigaction struct that it uses - * here; SPARC uses the usual sigaction struct. */ - struct target_rt_sigaction *rt_act; - struct target_sigaction act, oact, *pact = 0; - - if (arg4 != sizeof(target_sigset_t)) { - return -TARGET_EINVAL; - } - if (arg2) { - if (!lock_user_struct(VERIFY_READ, rt_act, arg2, 1)) - return -TARGET_EFAULT; - act._sa_handler = rt_act->_sa_handler; - act.sa_mask = rt_act->sa_mask; - act.sa_flags = rt_act->sa_flags; - unlock_user_struct(rt_act, arg2, 0); - pact = &act; - } - ret = get_errno(do_sigaction(arg1, pact, &oact, arg5)); - if (!is_error(ret) && arg3) { - if (!lock_user_struct(VERIFY_WRITE, rt_act, arg3, 0)) - return -TARGET_EFAULT; - rt_act->_sa_handler = oact._sa_handler; - rt_act->sa_mask = oact.sa_mask; - rt_act->sa_flags = oact.sa_flags; - unlock_user_struct(rt_act, arg3, 1); - } -#else -#ifdef TARGET_SPARC +#if defined(TARGET_ALPHA) + target_ulong sigsetsize = arg4; + target_ulong restorer = arg5; +#elif defined(TARGET_SPARC) target_ulong restorer = arg4; target_ulong sigsetsize = arg5; #else @@ -9131,7 +9107,6 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, unlock_user_struct(act, arg2, 0); if (oact) unlock_user_struct(oact, arg3, 1); -#endif } return ret; #ifdef TARGET_NR_sgetmask /* not on alpha */ diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index e4aaf8412f56..7a1d3b239c02 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -507,12 +507,6 @@ struct target_old_sigaction { int32_t sa_flags; }; -struct target_rt_sigaction { - abi_ulong _sa_handler; - abi_ulong sa_flags; - target_sigset_t sa_mask; -}; - /* This is the struct used inside the kernel. The ka_restorer field comes from the 5th argument to sys_rt_sigaction. */ struct target_sigaction { From patchwork Mon May 17 18:14:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440214 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1351999jac; Mon, 17 May 2021 11:52:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxA8QG7LkI/xooBFmw2k4sfhcAxXHAMKXQr8ml6uSWqNYQG9u6sK/ryzLUlHkudyI2YFEJd X-Received: by 2002:a05:6638:21a:: with SMTP id e26mr1424305jaq.58.1621277547314; Mon, 17 May 2021 11:52:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277547; cv=none; d=google.com; s=arc-20160816; b=boyNA8t6P6zTx6uIq1Y8l45Dzqh7zkhepp+EhQ5OIwsdlgEtGJyxcSXcORsgVVhxp4 xCYCkkkaP4A6FA1YzjW9Aiu2C5y1XkdSOVMlnzcr+soZu+/yW7h+lRTBTWB1GJb/5CzO zqV3DGgsErsCRZJkxGmxMawmkHMZJwNGuBxKjuXxxpMca2l2hco9+HOUkf4KdQd9xGRI XsJQA2rIOb3snBbfPxHSJ79weZUb8Ba2wBQQN/dcyaTsYtBQGDM/IDCvla1d/ReEv1Mu 4sHScxW66Cekrlqb4sVYExBHFN35oUy1Avnk8IDq2T643KX1cGv1W7x4Dv0tOa6fnIPE fhPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=BU1X358Qq1PSc9I/07tmIxZomp/RhDnwhqZACe/YyGc=; b=BA1ddAi29l9wV3RCWVFIqGYUPHMdU9Khtnb6jGG7vlSbn4JsTZQkd4UWbCYW1t/vtL B07o/NqS80e28j7WRfaOm500RVFN6LiThi0mkOrGVkfwvqI+vVgNwEke0W2NDK3mYaFl VI5mZlPLGR31T0q7YrMyUvfVKsVRCk2/LMkRf+qKLMLiUnzrO7TFR7kt9dI4GSq99BOh sqtTyE3O5OetHR8bGGSAqbvY2Sae/iyA3t29qOfsPbMAt04fXRP7rf0ZMXeIQhnduun2 IJbcyIz0i+qH5IulRKX2gaEC89k+K2q+w+UXHVF4zYpWptl2QEg34zFR6efZ/c/fXqFf ZKbw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id f12si8350103jas.31.2021.05.17.11.52.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:52:27 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:41938 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiLq-000852-Ql for patch@linaro.org; Mon, 17 May 2021 14:52:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34326) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihm4-000707-FR for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:28 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:55945) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlZ-0004ZQ-Ci for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:28 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MKd92-1m3gYd1MjM-00KylB; Mon, 17 May 2021 20:14:55 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 56/59] linux-user/alpha: Share code for TARGET_NR_sigaction Date: Mon, 17 May 2021 20:14:21 +0200 Message-Id: <20210517181424.8093-57-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:VRqOgVQyn2uZEI32R73D/tNDrEzGN9pMqKehuR8IzAu0OsRYqFb 7VMHyzT/fbly6sNo6FkT8U9NZ4jXNNs8YpJRJUdb6uUuYWKOyQ16zlqkijcbtbIObkHSGd/ avn2H01PK5kRI4Vy1lUlRK5NINvIg3EmfModtSO9MX8AB9i8bLT2UWVhvVUssQuj5x0TuSB LDVUp82LZ6Tuwdt8++XBQ== X-UI-Out-Filterresults: notjunk:1; V03:K0:1cFfBAlHvyc=:ZgBUCzpPZ31GopnXCR2ORY 8oqSkW+JAUkoTBGbbP/cerxBgNwqXR958v6h/IY3CgVSqs65EhYQxET512mshWzukryjnz4ME GdsegIVsRfXrKS/Msp8wX0vMKcAb9dDwmpz1/OAiUJ+i3ovQ60L69xpUqnYsT9nIXe7d4ye99 oXDC4y8DeE9Mk6HJZZ4PA+3Fr8GdtUamoRuK+omxj54J1ssprC/UxOJ4mTSVqVy6Gm06PCe/6 j/v7BweVAf2BM3Z7frBcszof5RkNAGstihICofWEhITVqljhf1MOpDhMVfiD7C5XK5Uyw+3vu hDYNt5R5tYGEtTBS/zp4TT/QZtlH277HzxcMxa9Q72SbYYOXf0HQXUQOQLJpzgXRyoyYCTZAT 5ytn1Amo72tbu5HWI0u9yFINourzhbpylgEc9hPeZHiI/vMJY5fv3UX7YyDfLGl6PM9/dX7bX aSRBO/baH/Tc2z7k+1+ZT/zzUws7kv3dKXqGNpWEMUXXLaktLGVxBmqnDXl9WaUWhWsZEl52H 2HQVUexUWmU8EXDzMmSTJk= Received-SPF: none client-ip=212.227.126.187; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Alex_Benn=C3=A9e?= , Richard Henderson , Laurent Vivier Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson There's no longer a difference between the alpha code and the generic code. There is a type difference in target_old_sigaction.sa_flags, which can be resolved with a very much smaller ifdef, which allows us to finish sharing the target_sigaction definition. Signed-off-by: Richard Henderson Reviewed-by: Alex Bennée Message-Id: <20210422230227.314751-7-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 23 +---------------------- linux-user/syscall_defs.h | 21 ++++++--------------- 2 files changed, 7 insertions(+), 37 deletions(-) -- 2.31.1 diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 4515f816b59b..2c5ced1570b5 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -8980,28 +8980,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, #ifdef TARGET_NR_sigaction case TARGET_NR_sigaction: { -#if defined(TARGET_ALPHA) - struct target_sigaction act, oact, *pact = 0; - struct target_old_sigaction *old_act; - if (arg2) { - if (!lock_user_struct(VERIFY_READ, old_act, arg2, 1)) - return -TARGET_EFAULT; - act._sa_handler = old_act->_sa_handler; - target_siginitset(&act.sa_mask, old_act->sa_mask); - act.sa_flags = old_act->sa_flags; - unlock_user_struct(old_act, arg2, 0); - pact = &act; - } - ret = get_errno(do_sigaction(arg1, pact, &oact, 0)); - if (!is_error(ret) && arg3) { - if (!lock_user_struct(VERIFY_WRITE, old_act, arg3, 0)) - return -TARGET_EFAULT; - old_act->_sa_handler = oact._sa_handler; - old_act->sa_mask = oact.sa_mask.sig[0]; - old_act->sa_flags = oact.sa_flags; - unlock_user_struct(old_act, arg3, 1); - } -#elif defined(TARGET_MIPS) +#if defined(TARGET_MIPS) struct target_sigaction act, oact, *pact, *old_act; if (arg2) { diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 7a1d3b239c02..18b031a2f6a8 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -501,21 +501,12 @@ int do_sigaction(int sig, const struct target_sigaction *act, #endif #if defined(TARGET_ALPHA) -struct target_old_sigaction { - abi_ulong _sa_handler; - abi_ulong sa_mask; - int32_t sa_flags; -}; +typedef int32_t target_old_sa_flags; +#else +typedef abi_ulong target_old_sa_flags; +#endif -/* This is the struct used inside the kernel. The ka_restorer - field comes from the 5th argument to sys_rt_sigaction. */ -struct target_sigaction { - abi_ulong _sa_handler; - abi_ulong sa_flags; - target_sigset_t sa_mask; - abi_ulong ka_restorer; -}; -#elif defined(TARGET_MIPS) +#if defined(TARGET_MIPS) struct target_sigaction { uint32_t sa_flags; #if defined(TARGET_ABI_MIPSN32) @@ -533,7 +524,7 @@ struct target_sigaction { struct target_old_sigaction { abi_ulong _sa_handler; abi_ulong sa_mask; - abi_ulong sa_flags; + target_old_sa_flags sa_flags; #ifdef TARGET_ARCH_HAS_SA_RESTORER abi_ulong sa_restorer; #endif From patchwork Mon May 17 18:14:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 440218 Delivered-To: patch@linaro.org Received: by 2002:a02:7a1b:0:0:0:0:0 with SMTP id a27csp1353191jac; Mon, 17 May 2021 11:54:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwtu5ZbsRWnsZl3DJVDmctGGmQDGvTLEK/BqO1uypv1mGoYg0NOdoIm6Iilwt+Lwm4pAPtE X-Received: by 2002:a6b:5a16:: with SMTP id o22mr1190363iob.63.1621277664308; Mon, 17 May 2021 11:54:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621277664; cv=none; d=google.com; s=arc-20160816; b=DXE+l/Y8OfVG4Xomk6QqMpWG8/vjP/JOkKt1JVBXlFIwf1bGnbhnNGVWKpAS9XEw6s GUYq8MYoqXvPUOoTUbzi9xe5zRRbtYMYdoOlEtih0047EP12PKPCLdKN5i5eD8qIaH+P PVopeWPfuxBnCazbbHSs8v4JaEhlmFnlVfkNoz2RNJece80J5+V/wRLSISK4PMCCpUq2 YqMN0ZDcuDaeuv1fi6cjtq7adB8oYwE5Fh6O1w6o/ONVeB9Gkthh3uqk+LJBQeQk8VNh NBB91LKA5nQMdGdk+7DsbELXGg+MXAZ9TUNNqYTQvjcl9x72JIXQQZR+57khjs6BmGkY /L5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:to:from; bh=ezkAlje0+7gYtPTUEeiGHVlJcUb34LYjic61YdLMn1Q=; b=AvR59lcE/jjP0OyWTnckZSTIuElp2KUCfOo//YDgu4nAP1HrQkeLudQsyMt7197EG7 hub1HQcQudRbq8+rSy5xz4ISQpUZmITQLCNr9AzK8vFuP6YEHiplnU/8PPiI5N+9YCET LRMEdECQjkbYb7fWVSAO1uaa71mvh8CalObFVRtB5db89k0hm/sny+G9M/p4h7emOWc8 3sX21eGUzA9VCYnuSU7qDkfL3i20acagoUROQpc2wCZSxOoq+i0/TtL+EXEVDoZoDjpD 2N/4qks6oWPdTDhOP9O8KGglEov4N+YXMJBVlxcw5EtvebIAqWrmXjm2V722eUXYiok9 48yQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id a5si5337971ilj.12.2021.05.17.11.54.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 17 May 2021 11:54:24 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org" Received: from localhost ([::1]:50436 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1liiNj-0005In-OS for patch@linaro.org; Mon, 17 May 2021 14:54:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34366) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihm7-00076l-8O for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:31 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:48479) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lihlc-0004bT-Ml for qemu-devel@nongnu.org; Mon, 17 May 2021 14:15:30 -0400 Received: from quad ([82.142.31.78]) by mrelayeu.kundenserver.de (mreue012 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MsrV2-1lTFHc3BmK-00tDcJ; Mon, 17 May 2021 20:14:56 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 57/59] linux-user: Tidy TARGET_NR_rt_sigaction Date: Mon, 17 May 2021 20:14:22 +0200 Message-Id: <20210517181424.8093-58-laurent@vivier.eu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517181424.8093-1-laurent@vivier.eu> References: <20210517181424.8093-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:BlVMGI2zvZfRIVjR+rXCubQm5WdKvDzhBPC8hICZpzPMZ4acVYv yis88kGPYpRO63B/PJ1RsRelOMaNUVGW5es10Gu51hbiLLRwbkMG3q2PaVaRD/IR+q+vWfj Ig2htFXyinA1E0ZZzayeSiyS3l8dxPFgQgJhhOQIQX8sQtzXsBf21kyNAEKPenPYESD5hLS 0QrK9KJACNZegm+as5u5w== X-UI-Out-Filterresults: notjunk:1; V03:K0:D0wpYJislns=:QKASAKOlpjHTzRnvjt5klq rb8s4vJF/j+MPI5IDc5Io9mui1qBy29rYpUH4UoIJyZgoBabavdmOMAVr1/Byp+A6donhQrAc zc4VRLjZ5ji1LfoVq7fPDnXPKWU/D+fjOm4uu3LUnCKyaRS2f6VnkQrvrYDR8IdYnROHC2VpK ScC0aH+xb9Ds6Nc76DPzto1R10CoOAQIhcjfit0QHRAh2gdaaVe8DaSJh9O6Yq50MhLcaTrbY SsRsFk2JaiAXMVBvsVIugh1rEl4B8esFKJ7KKyeSDk4DLwru06CVYoHflDUvhHfY4vOlWD4sX ZeaJmMzw2JXktztQyc+DcZmV+SKH1gyGUDyJb1vQronwHA6HDQiCT6V0UF1aylk5BIwPB3i+V CNosD+IrwGhuoW4TRI4QkJOz+SeB1sRrg+ZlgIU8Nfl/tdHrud5/fRFH1R8Qgz/dXRQp1cqKO +RV/2tD1YRnfatIuyBHnrSSh5//bPrnfe9aZ0J3XwtJgi53ZGdGHiTgHBVFDsbzo/OBEzfkhu xTrDjjI4k2OUMkGCN4g4v4= Received-SPF: none client-ip=212.227.126.130; envelope-from=laurent@vivier.eu; helo=mout.kundenserver.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Alex_Benn=C3=A9e?= , Richard Henderson , Laurent Vivier , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?b?w6k=?= Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Richard Henderson Initialize variables instead of elses. Use an else instead of a goto. Add braces. Signed-off-by: Richard Henderson Reviewed-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20210422230227.314751-8-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier --- linux-user/syscall.c | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) -- 2.31.1 diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 2c5ced1570b5..0ed58e9f5c06 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -9060,32 +9060,26 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, target_ulong sigsetsize = arg4; target_ulong restorer = 0; #endif - struct target_sigaction *act; - struct target_sigaction *oact; + struct target_sigaction *act = NULL; + struct target_sigaction *oact = NULL; if (sigsetsize != sizeof(target_sigset_t)) { return -TARGET_EINVAL; } - if (arg2) { - if (!lock_user_struct(VERIFY_READ, act, arg2, 1)) { - return -TARGET_EFAULT; - } - } else { - act = NULL; + if (arg2 && !lock_user_struct(VERIFY_READ, act, arg2, 1)) { + return -TARGET_EFAULT; } - if (arg3) { - if (!lock_user_struct(VERIFY_WRITE, oact, arg3, 0)) { - ret = -TARGET_EFAULT; - goto rt_sigaction_fail; + if (arg3 && !lock_user_struct(VERIFY_WRITE, oact, arg3, 0)) { + ret = -TARGET_EFAULT; + } else { + ret = get_errno(do_sigaction(arg1, act, oact, restorer)); + if (oact) { + unlock_user_struct(oact, arg3, 1); } - } else - oact = NULL; - ret = get_errno(do_sigaction(arg1, act, oact, restorer)); - rt_sigaction_fail: - if (act) + } + if (act) { unlock_user_struct(act, arg2, 0); - if (oact) - unlock_user_struct(oact, arg3, 1); + } } return ret; #ifdef TARGET_NR_sgetmask /* not on alpha */