From nobody Tue Feb 10 10:19:44 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1640055095713443.7629111210872; Mon, 20 Dec 2021 18:51:35 -0800 (PST) Received: from localhost ([::1]:48794 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzVFW-0005ld-R4 for importer@patchew.org; Mon, 20 Dec 2021 21:51:34 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54200) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzVEI-0003b0-H7 for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:18 -0500 Received: from [2607:f8b0:4864:20::52c] (port=43776 helo=mail-pg1-x52c.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mzVEG-0000A6-RY for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:18 -0500 Received: by mail-pg1-x52c.google.com with SMTP id 8so3467385pgc.10 for ; Mon, 20 Dec 2021 18:50:16 -0800 (PST) Received: from localhost.localdomain ([156.19.246.20]) by smtp.gmail.com with ESMTPSA id bg23sm694025pjb.24.2021.12.20.18.50.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Dec 2021 18:50:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Qz+xdjhIIVqjd9hJ/vGpCTslUdMVxxkBaypOe4lBkQo=; b=rt7uL8tyF2eVsXOh4ifpZoro0Ztm9DLC99lbq8Nw4uAmB/7g0ReWFreAYjKcMGzBgj 1wo2WdXK0aXrDMQPhdJzauz99sUBEigIQjaWJi2WFvl0sWR6TJHPiPnY/atut8M78EML 1NJQB3yAKG/RvBlHQXID0zqxvhgC35KRIUp2/ArqgVIoyDqYdt59Ew9Vsz2LWTAuN6pV MPsTLxT9yYRO3EjtvvwJ0F3RjPYOSz9665+JDo/15su9dHuEmGsyeCn8wzuTSEMm4rot K5zC+BkFAbP/HqRdOb66w6gCytab9vZ1IpExOEbeMeNXFeAhPq+mohS+U5gLMx84MFVA JQqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Qz+xdjhIIVqjd9hJ/vGpCTslUdMVxxkBaypOe4lBkQo=; b=8Cp/PYMmUu9XL7V94TOZDye48DZiE0GstWsbYgadbczExLKD5nIs9eFrHZ4exrFTLX KohFanl1JYoaF4tQCd1gT/4YumGudX8LLcny+hHfX9cLRGK9VB4qYwHHcQuSVYnBkEkX pruu92EYYxbnlgE5gBt5yfC1JCaubKdC+j7bcvZvC1aj49LgpUTq9BfP1mFITIs7Ot7Q mUhOyEdEAdo8ZvrAe9rTR39b2ev1Qs8Y0dADH0NfzuXeMYp2jniDwp0RurBR8dFxhVtR EPV6O+nb1IfVWmKkdpCFYhcDzwfUMU/fUWCyZ6o3MT+76eqb0tmbZKhZ4GSKOj+OP18f xKOQ== X-Gm-Message-State: AOAM530XHlJ5yRmPK6ePjG4W/gUufZ5G3WiUjBWAZpOmPzIrNpPDQjEz ZgYCSt+Aly0cQrfylHP2TCCM5g9bI3gdgw== X-Google-Smtp-Source: ABdhPJxYTMCnyFQWUueg1aeS/DzjhEeXl2dpD2Mu3TeQNwNKPWwHdc7yANCArL1LozrfY9f+ih+lzA== X-Received: by 2002:aa7:8891:0:b0:4ba:ee8a:8cdd with SMTP id z17-20020aa78891000000b004baee8a8cddmr1041442pfe.79.1640055015479; Mon, 20 Dec 2021 18:50:15 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 1/7] linux-user/nios2: Properly emulate EXCP_TRAP Date: Mon, 20 Dec 2021 18:50:06 -0800 Message-Id: <20211221025012.1057923-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211221025012.1057923-1-richard.henderson@linaro.org> References: <20211221025012.1057923-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::52c (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , laurent@vivier.eu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1640055097459100001 The real kernel has to load the instruction and extract the imm5 field; for qemu, modify the translator to do this. The use of R_AT for this in cpu_loop was a bug. Handle the other trap numbers as per the kernel's trap_table. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier --- target/nios2/cpu.h | 2 +- linux-user/nios2/cpu_loop.c | 40 ++++++++++++++++++++----------------- target/nios2/translate.c | 17 +++++++++++++++- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/target/nios2/cpu.h b/target/nios2/cpu.h index 1a69ed7a49..d2ba0c5bbd 100644 --- a/target/nios2/cpu.h +++ b/target/nios2/cpu.h @@ -160,9 +160,9 @@ struct CPUNios2State { =20 #if !defined(CONFIG_USER_ONLY) Nios2MMU mmu; - uint32_t irq_pending; #endif + int error_code; }; =20 /** diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index 34290fb3b5..5c3d01d22d 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -26,7 +26,6 @@ void cpu_loop(CPUNios2State *env) { CPUState *cs =3D env_cpu(env); - Nios2CPU *cpu =3D NIOS2_CPU(cs); target_siginfo_t info; int trapnr, ret; =20 @@ -39,9 +38,10 @@ void cpu_loop(CPUNios2State *env) case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ break; + case EXCP_TRAP: - if (env->regs[R_AT] =3D=3D 0) { - abi_long ret; + switch (env->error_code) { + case 0: qemu_log_mask(CPU_LOG_INT, "\nSyscall\n"); =20 ret =3D do_syscall(env, env->regs[2], @@ -55,26 +55,30 @@ void cpu_loop(CPUNios2State *env) =20 env->regs[2] =3D abs(ret); /* Return value is 0..4096 */ - env->regs[7] =3D (ret > 0xfffffffffffff000ULL); - env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; - env->regs[CR_STATUS] &=3D ~0x3; - env->regs[R_EA] =3D env->regs[R_PC] + 4; + env->regs[7] =3D ret > 0xfffff000u; env->regs[R_PC] +=3D 4; break; - } else { - qemu_log_mask(CPU_LOG_INT, "\nTrap\n"); =20 - env->regs[CR_ESTATUS] =3D env->regs[CR_STATUS]; - env->regs[CR_STATUS] &=3D ~0x3; - env->regs[R_EA] =3D env->regs[R_PC] + 4; - env->regs[R_PC] =3D cpu->exception_addr; - - info.si_signo =3D TARGET_SIGTRAP; - info.si_errno =3D 0; - info.si_code =3D TARGET_TRAP_BRKPT; - queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + case 1: + qemu_log_mask(CPU_LOG_INT, "\nTrap 1\n"); + force_sig_fault(TARGET_SIGUSR1, 0, env->regs[R_PC]); + break; + case 2: + qemu_log_mask(CPU_LOG_INT, "\nTrap 2\n"); + force_sig_fault(TARGET_SIGUSR2, 0, env->regs[R_PC]); + break; + case 31: + qemu_log_mask(CPU_LOG_INT, "\nTrap 31\n"); + force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->re= gs[R_PC]); + break; + default: + qemu_log_mask(CPU_LOG_INT, "\nTrap %d\n", env->error_code); + force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLTRP, + env->regs[R_PC]); break; } + break; + case EXCP_DEBUG: info.si_signo =3D TARGET_SIGTRAP; info.si_errno =3D 0; diff --git a/target/nios2/translate.c b/target/nios2/translate.c index 08d7ac5398..a759877519 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -636,6 +636,21 @@ static void divu(DisasContext *dc, uint32_t code, uint= 32_t flags) tcg_temp_free(t0); } =20 +static void trap(DisasContext *dc, uint32_t code, uint32_t flags) +{ +#ifdef CONFIG_USER_ONLY + /* + * The imm5 field is not stored anywhere on real hw; the kernel + * has to load the insn and extract the field. But we can make + * things easier for cpu_loop if we pop this into env->error_code. + */ + R_TYPE(instr, code); + tcg_gen_st_i32(tcg_constant_i32(instr.imm5), cpu_env, + offsetof(CPUNios2State, error_code)); +#endif + t_gen_helper_raise_exception(dc, EXCP_TRAP); +} + static const Nios2Instruction r_type_instructions[] =3D { INSTRUCTION_ILLEGAL(), INSTRUCTION(eret), /* eret */ @@ -682,7 +697,7 @@ static const Nios2Instruction r_type_instructions[] =3D= { INSTRUCTION_ILLEGAL(), INSTRUCTION_ILLEGAL(), INSTRUCTION_ILLEGAL(), - INSTRUCTION_FLG(gen_excp, EXCP_TRAP), /* trap */ + INSTRUCTION(trap), /* trap */ INSTRUCTION(wrctl), /* wrctl */ INSTRUCTION_ILLEGAL(), INSTRUCTION_FLG(gen_cmpxx, TCG_COND_LTU), /* cmpltu */ --=20 2.25.1 From nobody Tue Feb 10 10:19:44 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1640055260807599.4382361251246; Mon, 20 Dec 2021 18:54:20 -0800 (PST) Received: from localhost ([::1]:54730 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzVIB-0001Pj-TR for importer@patchew.org; Mon, 20 Dec 2021 21:54:19 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54222) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzVEJ-0003bU-D7 for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:19 -0500 Received: from [2607:f8b0:4864:20::533] (port=33724 helo=mail-pg1-x533.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mzVEH-0000AC-Jz for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:18 -0500 Received: by mail-pg1-x533.google.com with SMTP id f125so11082179pgc.0 for ; Mon, 20 Dec 2021 18:50:17 -0800 (PST) Received: from localhost.localdomain ([156.19.246.20]) by smtp.gmail.com with ESMTPSA id bg23sm694025pjb.24.2021.12.20.18.50.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Dec 2021 18:50:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HbNBQfasK4f+xfMQiEwPjjsKiwcmSRl4Jt7JCBlYZlo=; b=NfUfLCNIjMo8KMEKTAiv2uAEDlt0axISwbzsiOaD+OSocglWRo4Tx7kAlBR4tQfmml pvFCLm446w9QXbadzxKNpt034iCGmw+oX1New3O2pexBhh4ef9Qdylr3wtRN6alY6VXQ byyMj6mklHJp/LBIOz6J8Sw5vFb2B5PtYga/F0eyk2Rg24BPpRHr8DqMnO0x8162ovnd xv5lljWuTZ+9fZCZPq1O2Dd03SSNMICnoM4z/4RYHY2MufJ9Usf9oRJBORhXuQkWb+Y0 zp9YkyNdD3N5x8iCoXyJeOk9PQkvpxGe0UbvVRCXx8b8DKB/Ac1gS7uL0w216MIVwsYc 60/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HbNBQfasK4f+xfMQiEwPjjsKiwcmSRl4Jt7JCBlYZlo=; b=12AaVBMhuHzR7N59lDJsgCotA+ZM/ezuWPN/VjENZIfvtIJq6K49MCMWD0z6HdXd/j hFx9DOzQTt0Iyrt90YqGQ+Ihqpanciocg6l6Ufv3Khi9isbkhexb9YMU2P/9ZzTH27Iw pwNEt0UDvs/MeUsbsdGr3dntFb/UkIORWnPQLOolPT9S8V6/+fxYZRl7fnzHp1iCKuTu IHWgcN36xoo4aQEcZcs8y3cxhQalJooFxTzeBVnMoQtNH4qfLsRycRqIZxaul5ceZX7s MFs5zxA6EGkttLnwrK2uoVmcpExvvfxTTvQPIyWATWZuAXxD9IaNlR406Ej3q1PPehRG o7Ug== X-Gm-Message-State: AOAM532cWvBmcEC0hILwS6kF/qxaCVn4W2aSZFILlz4QnK5nGK3r1NzK S/GiMd7Dys1/oOCnK2TaRO+P6lZ93oCTiA== X-Google-Smtp-Source: ABdhPJyYbtXJWtdWGGPIbY3YXaSyCLEszXqfC3O0a3YnpC4CNhlbLR6B4taKqDbYJO1oiPgoS54D8g== X-Received: by 2002:a63:4c45:: with SMTP id m5mr1013980pgl.105.1640055016375; Mon, 20 Dec 2021 18:50:16 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 2/7] linux-user/nios2: Fixes for signal frame setup Date: Mon, 20 Dec 2021 18:50:07 -0800 Message-Id: <20211221025012.1057923-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211221025012.1057923-1-richard.henderson@linaro.org> References: <20211221025012.1057923-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::533 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , =?UTF-8?q?Alex=20Benn=C3=A9e?= , laurent@vivier.eu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1640055261718100001 Do not confuse host and guest addresses. Lock and unlock the target_rt_sigframe structure in setup_rt_sigframe. Since rt_setup_ucontext always returns 0, drop the return value entirely. This eliminates the only write to the err variable in setup_rt_sigframe. Always copy the siginfo structure. Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/nios2/signal.c | 49 ++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 29 deletions(-) diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index a77e8a40f4..adbffe32e3 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -42,7 +42,7 @@ struct target_rt_sigframe { struct target_ucontext uc; }; =20 -static int rt_setup_ucontext(struct target_ucontext *uc, CPUNios2State *en= v) +static void rt_setup_ucontext(struct target_ucontext *uc, CPUNios2State *e= nv) { unsigned long *gregs =3D uc->tuc_mcontext.gregs; =20 @@ -75,8 +75,6 @@ static int rt_setup_ucontext(struct target_ucontext *uc, = CPUNios2State *env) __put_user(env->regs[R_GP], &gregs[25]); __put_user(env->regs[R_EA], &gregs[27]); __put_user(env->regs[R_SP], &gregs[28]); - - return 0; } =20 static int rt_restore_ucontext(CPUNios2State *env, struct target_ucontext = *uc, @@ -135,8 +133,8 @@ static int rt_restore_ucontext(CPUNios2State *env, stru= ct target_ucontext *uc, return 0; } =20 -static void *get_sigframe(struct target_sigaction *ka, CPUNios2State *env, - size_t frame_size) +static abi_ptr get_sigframe(struct target_sigaction *ka, CPUNios2State *en= v, + size_t frame_size) { unsigned long usp; =20 @@ -144,7 +142,7 @@ static void *get_sigframe(struct target_sigaction *ka, = CPUNios2State *env, usp =3D target_sigsp(get_sp_from_cpustate(env), ka); =20 /* Verify, is it 32 or 64 bit aligned */ - return (void *)((usp - frame_size) & -8UL); + return (usp - frame_size) & -8; } =20 void setup_rt_frame(int sig, struct target_sigaction *ka, @@ -153,26 +151,25 @@ void setup_rt_frame(int sig, struct target_sigaction = *ka, CPUNios2State *env) { struct target_rt_sigframe *frame; - int i, err =3D 0; + abi_ptr frame_addr; + int i; =20 - frame =3D get_sigframe(ka, env, sizeof(*frame)); - - if (ka->sa_flags & SA_SIGINFO) { - tswap_siginfo(&frame->info, info); + frame_addr =3D get_sigframe(ka, env, sizeof(*frame)); + if (!lock_user_struct(VERIFY_WRITE, frame, frame_addr, 0)) { + force_sigsegv(sig); + return; } =20 + tswap_siginfo(&frame->info, info); + /* Create the ucontext. */ __put_user(0, &frame->uc.tuc_flags); __put_user(0, &frame->uc.tuc_link); target_save_altstack(&frame->uc.tuc_stack, env); - err |=3D rt_setup_ucontext(&frame->uc, env); + rt_setup_ucontext(&frame->uc, env); for (i =3D 0; i < TARGET_NSIG_WORDS; i++) { __put_user((abi_ulong)set->sig[i], - (abi_ulong *)&frame->uc.tuc_sigmask.sig[i]); - } - - if (err) { - goto give_sigsegv; + (abi_ulong *)&frame->uc.tuc_sigmask.sig[i]); } =20 /* Set up to return from userspace; jump to fixed address sigreturn @@ -180,19 +177,13 @@ void setup_rt_frame(int sig, struct target_sigaction = *ka, env->regs[R_RA] =3D (unsigned long) (0x1044); =20 /* Set up registers for signal handler */ - env->regs[R_SP] =3D (unsigned long) frame; - env->regs[4] =3D (unsigned long) sig; - env->regs[5] =3D (unsigned long) &frame->info; - env->regs[6] =3D (unsigned long) &frame->uc; - env->regs[R_EA] =3D (unsigned long) ka->_sa_handler; - return; + env->regs[R_SP] =3D frame_addr; + env->regs[4] =3D sig; + env->regs[5] =3D frame_addr + offsetof(struct target_rt_sigframe, info= ); + env->regs[6] =3D frame_addr + offsetof(struct target_rt_sigframe, uc); + env->regs[R_EA] =3D ka->_sa_handler; =20 -give_sigsegv: - if (sig =3D=3D TARGET_SIGSEGV) { - ka->_sa_handler =3D TARGET_SIG_DFL; - } - force_sigsegv(sig); - return; + unlock_user_struct(frame, frame_addr, 1); } =20 long do_sigreturn(CPUNios2State *env) --=20 2.25.1 From nobody Tue Feb 10 10:19:44 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1640055264; cv=none; d=zohomail.com; s=zohoarc; b=A6oc7Ln7btVE+iJWiCIuD1jSXWP65uYo4MttZb/lqrG1KoRSp9kzbXcUmNxBJtsVUPcbJpMXM7uaRlMwneFS7k6fc9rxojI4H3tL+ML7JKdJ50KIgDd1Jl+qFhyDQnECTLm6qoIY1XM9rXrqeJponxbL5crQmEB/D6BxgWXc97k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640055264; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Zi74zX03AzlDYSTcNyOeKzOi2PA59RfE+ydGeg7N9HY=; b=kmmt2ecrthysLxVXejK7EglXEKzB0BRiuxKVoy5o1yZuTJtQ4WCgL2sJ8gB0EgZehEQd/WTu68SHcsTPDScdgGho9dyBYqm0wHsL8f2J2uUQAbxjs7wVx2rQniOrbtk4pqM1FFrNz/Uc2eRs/u/rHSd3WGYDWAPVze/Eqeb48Fk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1640055264125599.7544800827577; Mon, 20 Dec 2021 18:54:24 -0800 (PST) Received: from localhost ([::1]:54932 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzVIF-0001Xx-6j for importer@patchew.org; Mon, 20 Dec 2021 21:54:23 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54234) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzVEK-0003ck-5t for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:20 -0500 Received: from [2607:f8b0:4864:20::62c] (port=38787 helo=mail-pl1-x62c.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mzVEI-0000AT-Gn for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:19 -0500 Received: by mail-pl1-x62c.google.com with SMTP id c7so801932plg.5 for ; Mon, 20 Dec 2021 18:50:18 -0800 (PST) Received: from localhost.localdomain ([156.19.246.20]) by smtp.gmail.com with ESMTPSA id bg23sm694025pjb.24.2021.12.20.18.50.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Dec 2021 18:50:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Zi74zX03AzlDYSTcNyOeKzOi2PA59RfE+ydGeg7N9HY=; b=Fw7zeAnKqY9GgyMFP5//31pAZL4+H5ZEBINP2esOAQPdAaSQgYCkH/sALJz8g7B1lL EOiO2ylgEalGv50W52V2gnWJSkrqmHaMAidDpGOUlbOaVzLXLq3pbzX3sia5yDXGoQ7b OW+fEVcsGzl+dwA3rfuWIwHxendwJlfquk30LCfxW8v6QjNb+FqFDVxdrjoIbQQ5CK/W 58GEIBCHrehIywX98O0LQioKcxaxRCP4T6D+J1BCcI9vkYtKdhdKve9Y7EkduUsne9VJ lJ5Dp0zAFwpNsm08QRGxtESNx/wDo0bOUXOtoTlUDCcP121XSKuNW4xzBNv5Rue0/MPE zmkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Zi74zX03AzlDYSTcNyOeKzOi2PA59RfE+ydGeg7N9HY=; b=0mzZYDIX9bbc+wru2hsXMmHUtyebq07Ha3Bzfwj1W/Wra+OwoVBK0ewJvMi5n4MtyM z9e3jI8+8Z3fdn6csj5w8LcQs834syqOABE2JGa0Rk7N0V4SF0Y/auviPcEzr3pgKMnX 9W5I10ukIhe1wixMe1jVuBmmFW9OWuDvg+HnZx8w/s2qRSY5xAT8brtYH3FXhMM2oWJ8 yrmXcz4fNN4NVXNDNTaUMkokVJ8MPHlAv8B7uj0aYyOh/On4PPyqynu5ezsKGm5K35UJ u9XuZvuUa4Zj9QYly+d3P99GlRoOHb97FsXqrB1pcGb/iey0kvmYco3GwwdOBeNJnigv 3uLw== X-Gm-Message-State: AOAM532V5FWt8lNWOrgoaZCsOhghs1HMS91ataEN6e4tG6/8U3c6d+ZX cZHU5XnT4XkBnVkgL8vQydkpQ31Vaj8pfw== X-Google-Smtp-Source: ABdhPJzTGRRYENAjGviqAThKSPWIknmULUMW7fu50tGSWotahxlXJHS3MJ+v/GV+qTuxlCe8qzckxA== X-Received: by 2002:a17:90a:6b44:: with SMTP id x4mr1303915pjl.27.1640055017198; Mon, 20 Dec 2021 18:50:17 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 3/7] linux-user/elfload: Rename ARM_COMMPAGE to HI_COMMPAGE Date: Mon, 20 Dec 2021 18:50:08 -0800 Message-Id: <20211221025012.1057923-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211221025012.1057923-1-richard.henderson@linaro.org> References: <20211221025012.1057923-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::62c (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1640055265946100001 Content-Type: text/plain; charset="utf-8" Arm will no longer be the only target requiring a commpage, but it will continue to be the only target placing the page at the high end of the address space. Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson --- linux-user/elfload.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index 767f54c76d..d34cd4fe43 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -390,11 +390,11 @@ enum { =20 /* The commpage only exists for 32 bit kernels */ =20 -#define ARM_COMMPAGE (intptr_t)0xffff0f00u +#define HI_COMMPAGE (intptr_t)0xffff0f00u =20 static bool init_guest_commpage(void) { - void *want =3D g2h_untagged(ARM_COMMPAGE & -qemu_host_page_size); + void *want =3D g2h_untagged(HI_COMMPAGE & -qemu_host_page_size); void *addr =3D mmap(want, qemu_host_page_size, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0); =20 @@ -2160,8 +2160,8 @@ static abi_ulong create_elf_tables(abi_ulong p, int a= rgc, int envc, return sp; } =20 -#ifndef ARM_COMMPAGE -#define ARM_COMMPAGE 0 +#ifndef HI_COMMPAGE +#define HI_COMMPAGE 0 #define init_guest_commpage() true #endif =20 @@ -2361,7 +2361,7 @@ static void pgb_static(const char *image_name, abi_ul= ong orig_loaddr, } =20 loaddr &=3D -align; - if (ARM_COMMPAGE) { + if (HI_COMMPAGE) { /* * Extend the allocation to include the commpage. * For a 64-bit host, this is just 4GiB; for a 32-bit host we @@ -2372,14 +2372,14 @@ static void pgb_static(const char *image_name, abi_= ulong orig_loaddr, if (sizeof(uintptr_t) =3D=3D 8 || loaddr >=3D 0x80000000u) { hiaddr =3D (uintptr_t) 4 << 30; } else { - offset =3D -(ARM_COMMPAGE & -align); + offset =3D -(HI_COMMPAGE & -align); } } =20 addr =3D pgb_find_hole(loaddr, hiaddr - loaddr, align, offset); if (addr =3D=3D -1) { /* - * If ARM_COMMPAGE, there *might* be a non-consecutive allocation + * If HI_COMMPAGE, there *might* be a non-consecutive allocation * that can satisfy both. But as the normal arm32 link base addre= ss * is ~32k, and we extend down to include the commpage, making the * overhead only ~96k, this is unlikely. @@ -2400,7 +2400,7 @@ static void pgb_dynamic(const char *image_name, long = align) * All we need is a commpage that satisfies align. * If we do not need a commpage, leave guest_base =3D=3D 0. */ - if (ARM_COMMPAGE) { + if (HI_COMMPAGE) { uintptr_t addr, commpage; =20 /* 64-bit hosts should have used reserved_va. */ @@ -2410,7 +2410,7 @@ static void pgb_dynamic(const char *image_name, long = align) * By putting the commpage at the first hole, that puts guest_base * just above that, and maximises the positive guest addresses. */ - commpage =3D ARM_COMMPAGE & -align; + commpage =3D HI_COMMPAGE & -align; addr =3D pgb_find_hole(commpage, -commpage, align, 0); assert(addr !=3D -1); guest_base =3D addr; --=20 2.25.1 From nobody Tue Feb 10 10:19:44 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1640055434; cv=none; d=zohomail.com; s=zohoarc; b=TsmOssX2WSh7LO5zBosFz2lQ2uZDAkK91nB9sSDlvnM38iWTqhXT2CHHr6EzFPG4lgOmw5dts/Ju7IiLvoTwgqtE7qysazqjNVKtykztcIjp+yZvnY6xsvw/XC2lc1vcwBljdkBQnV3ZyJyVjjtPET/2rk2OqXGmAb/ArA+rJx0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640055434; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=WD5SX/a7MEJASWKLyGWdbzVbY06pcJ/VW3E6SnKv2TU=; b=BIJRpzBVVEzuPwKzX6A6N3WBbvlhgNDBOamWHicHPGD2Pox7Tj3pdzexpyPBwIBSd4NhxnEeD066OGauMu3pkDRFCBwOoj7eciDwU8rsTZ4oBWno6bEVp5Fx2w/JoKvGf3qHGKMX+4N4PYzrqmKHn907ExQztxpDp4k6IN1iMmM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1640055434478128.44549788394704; Mon, 20 Dec 2021 18:57:14 -0800 (PST) Received: from localhost ([::1]:59242 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzVKy-0004W1-9f for importer@patchew.org; Mon, 20 Dec 2021 21:57:12 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54248) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzVEK-0003eW-UB for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:21 -0500 Received: from [2607:f8b0:4864:20::1036] (port=51153 helo=mail-pj1-x1036.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mzVEJ-0000Al-7p for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:20 -0500 Received: by mail-pj1-x1036.google.com with SMTP id gj24so11203375pjb.0 for ; Mon, 20 Dec 2021 18:50:18 -0800 (PST) Received: from localhost.localdomain ([156.19.246.20]) by smtp.gmail.com with ESMTPSA id bg23sm694025pjb.24.2021.12.20.18.50.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Dec 2021 18:50:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WD5SX/a7MEJASWKLyGWdbzVbY06pcJ/VW3E6SnKv2TU=; b=vi5BzYdIS91HMr0rGrWK7j/4h2hDjkzdzR04Ol58IblVxqG9axbMu8jJ6furDOpz0j /d3wvfo2NzG7hlndTII5CsR9cnTFVnY1EijEZsUgD8NW4DDZOzshBH4gQJloBqFuOJaL /mY0M4AcVfxlhBKVci1OoK2QEPvs7i9I7XzWiQ/nva7BL/fewlmgnQvVeTHsK5rCLHnl QVPzhLvY8+Ir70PxU+L13fqZ+aE71luc3RilYD7BNnF7auZ73ihBQ8jLYbxMiK7uua/8 nv0TFxIuaF+9n7aVnw6Rv+pbb0ugfJWrpUPvz975FUN4XqpXycjQO5ERkLrdCT5flKsC MAVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WD5SX/a7MEJASWKLyGWdbzVbY06pcJ/VW3E6SnKv2TU=; b=Y4xbuX+l0D1x0K1L6CU1WfiCfYGFl4sAvIK7IBr2rFjvB7zbSwjgTtNbRFrSHLMW2S Uwd/jXAGI70f2xon70mtCEBjkO5pTWWat6GerhqYQnlWWpXeUTnxgtJY0q6m9bpX6gv9 ezGT+v0nY8gShPsfLLldlSU+kg5hUZESC0gghO/AOw70X32CklxEPBzij4Jggb2GGPny q1nZ5Nmhy4Vl3I01G8SEJCGDZnfbjwunSTv3jfk0/YfQGxbB7Fy+vBc0tigdQgg+s+O4 tRCv8YBu+6Bib0g+IxLX1u52XFFY6IWryLFC82HmEvNMiawg+kQM7zkUZ2dwQ+k2Xh+L bBBg== X-Gm-Message-State: AOAM530XNci8B1JYloEbiLgEcecyxa7mNcvQUKuUxjM84tkcap1UxtY4 bkWz1N8XeYoWuO0NXSk42bwDhQwmYz5/Eg== X-Google-Smtp-Source: ABdhPJyKBNNm3cR/WZ7LjoUp/vgOxfp0KbF88+dxlR+A3CQWFiDNPK9z93McxYFbychrUG6OLuR0/w== X-Received: by 2002:a17:90b:1d09:: with SMTP id on9mr1280649pjb.191.1640055017936; Mon, 20 Dec 2021 18:50:17 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 4/7] linux-user/nios2: Map a real kuser page Date: Mon, 20 Dec 2021 18:50:09 -0800 Message-Id: <20211221025012.1057923-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211221025012.1057923-1-richard.henderson@linaro.org> References: <20211221025012.1057923-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1036 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1640055436083100001 Content-Type: text/plain; charset="utf-8" The first word of page1 is data, so the whole thing can't be implemented with emulation of addresses. Use init_guest_commpage for the allocation. Hijack trap number 16 to implement cmpxchg. Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier --- linux-user/elfload.c | 50 ++++++++++++++++++++++++++++++++++++- linux-user/nios2/cpu_loop.c | 50 ++++++++++++++++++++----------------- target/nios2/translate.c | 9 ------- 3 files changed, 76 insertions(+), 33 deletions(-) diff --git a/linux-user/elfload.c b/linux-user/elfload.c index d34cd4fe43..329b2375ef 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1099,6 +1099,47 @@ static void init_thread(struct target_pt_regs *regs,= struct image_info *infop) regs->estatus =3D 0x3; } =20 +#define LO_COMMPAGE TARGET_PAGE_SIZE + +static bool init_guest_commpage(void) +{ + static const uint8_t kuser_page[4 + 2 * 64] =3D { + /* __kuser_helper_version */ + [0x00] =3D 0x02, 0x00, 0x00, 0x00, + + /* __kuser_cmpxchg */ + [0x04] =3D 0x3a, 0x6c, 0x3b, 0x00, /* trap 16 */ + 0x3a, 0x28, 0x00, 0xf8, /* ret */ + + /* __kuser_sigtramp */ + [0x44] =3D 0xc4, 0x22, 0x80, 0x00, /* movi r2, __NR_rt_sigreturn = */ + 0x3a, 0x68, 0x3b, 0x00, /* trap 0 */ + }; + + void *want =3D g2h_untagged(LO_COMMPAGE & -qemu_host_page_size); + void *addr =3D mmap(want, qemu_host_page_size, PROT_READ | PROT_WRITE, + MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0); + + if (addr =3D=3D MAP_FAILED) { + perror("Allocating guest commpage"); + exit(EXIT_FAILURE); + } + if (addr !=3D want) { + return false; + } + + memcpy(addr, kuser_page, sizeof(kuser_page)); + + if (mprotect(addr, qemu_host_page_size, PROT_READ)) { + perror("Protecting guest commpage"); + exit(EXIT_FAILURE); + } + + page_set_flags(LO_COMMPAGE, LO_COMMPAGE + TARGET_PAGE_SIZE, + PAGE_READ | PAGE_EXEC | PAGE_VALID); + return true; +} + #define ELF_EXEC_PAGESIZE 4096 =20 #define USE_ELF_CORE_DUMP @@ -2160,8 +2201,13 @@ static abi_ulong create_elf_tables(abi_ulong p, int = argc, int envc, return sp; } =20 -#ifndef HI_COMMPAGE +#if defined(HI_COMMPAGE) +#define LO_COMMPAGE 0 +#elif defined(LO_COMMPAGE) #define HI_COMMPAGE 0 +#else +#define HI_COMMPAGE 0 +#define LO_COMMPAGE 0 #define init_guest_commpage() true #endif =20 @@ -2374,6 +2420,8 @@ static void pgb_static(const char *image_name, abi_ul= ong orig_loaddr, } else { offset =3D -(HI_COMMPAGE & -align); } + } else if (LO_COMMPAGE) { + loaddr =3D MIN(loaddr, LO_COMMPAGE & -align); } =20 addr =3D pgb_find_hole(loaddr, hiaddr - loaddr, align, offset); diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index 5c3d01d22d..de0fc63e21 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -76,6 +76,32 @@ void cpu_loop(CPUNios2State *env) force_sig_fault(TARGET_SIGILL, TARGET_ILL_ILLTRP, env->regs[R_PC]); break; + + case 16: /* QEMU specific, for __kuser_cmpxchg */ + { + abi_ptr g =3D env->regs[4]; + uint32_t *h, n, o; + + if (g & 0x3) { + force_sig_fault(TARGET_SIGBUS, TARGET_BUS_ADRALN, = g); + break; + } + ret =3D page_get_flags(g); + if (!(ret & PAGE_VALID)) { + force_sig_fault(TARGET_SIGSEGV, TARGET_SEGV_MAPERR= , g); + break; + } + if (!(ret & PAGE_READ) || !(ret & PAGE_WRITE)) { + force_sig_fault(TARGET_SIGSEGV, TARGET_SEGV_ACCERR= , g); + break; + } + h =3D g2h(cs, g); + o =3D env->regs[5]; + n =3D env->regs[6]; + env->regs[2] =3D qatomic_cmpxchg(h, o, n) - o; + env->regs[R_PC] +=3D 4; + } + break; } break; =20 @@ -86,29 +112,7 @@ void cpu_loop(CPUNios2State *env) queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); break; case 0xaa: - switch (env->regs[R_PC]) { - /*case 0x1000:*/ /* TODO:__kuser_helper_version */ - case 0x1004: /* __kuser_cmpxchg */ - start_exclusive(); - if (env->regs[4] & 0x3) { - goto kuser_fail; - } - ret =3D get_user_u32(env->regs[2], env->regs[4]); - if (ret) { - end_exclusive(); - goto kuser_fail; - } - env->regs[2] -=3D env->regs[5]; - if (env->regs[2] =3D=3D 0) { - put_user_u32(env->regs[6], env->regs[4]); - } - end_exclusive(); - env->regs[R_PC] =3D env->regs[R_RA]; - break; - /*case 0x1040:*/ /* TODO:__kuser_sigtramp */ - default: - ; -kuser_fail: + { info.si_signo =3D TARGET_SIGSEGV; info.si_errno =3D 0; /* TODO: check env->error_code */ diff --git a/target/nios2/translate.c b/target/nios2/translate.c index a759877519..f9abc2fdd2 100644 --- a/target/nios2/translate.c +++ b/target/nios2/translate.c @@ -795,15 +795,6 @@ static void nios2_tr_translate_insn(DisasContextBase *= dcbase, CPUState *cs) dc->base.pc_next =3D pc + 4; =20 /* Decode an instruction */ - -#if defined(CONFIG_USER_ONLY) - /* FIXME: Is this needed ? */ - if (pc >=3D 0x1000 && pc < 0x2000) { - t_gen_helper_raise_exception(dc, 0xaa); - return; - } -#endif - code =3D cpu_ldl_code(env, pc); op =3D get_opcode(code); =20 --=20 2.25.1 From nobody Tue Feb 10 10:19:44 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1640055181; cv=none; d=zohomail.com; s=zohoarc; b=SWu/GxghCO1X+yZA4zU0h5/vWqog/5GndWsRNy2LcaR+0rfd+Bxnhdq4/263DOfYd0mGp8kJkX2D8DFjjPcmHlPN8uui2nMcmimnVWaIPrxIXCWzM2v5sMaBkkgxbGx121vTTNF9svIvV89wu9BFUyOl3HF0n0En8v8XJ8rlhgw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640055181; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=F9yEwPrmR9xpxjbUMZcvWlIm4BrVKkXnEjUbM9qs6VM=; b=dODVLt8I1seFBHNpuAD5dIFuS53SIDOZrsT8bHilhS8LDpvZWvxG8gAJPfdl4D5nW+OjfopQnM9lPeyL+dmjlSR7fvaK2pRKi6qkgSiJEjagYH2vTKo11G2XFdK5psMhgIJ8jiXKu2z+QnF4SqhNv/tmgeNEVS8UxhXAI9qc2Mw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1640055181528648.6753974635301; Mon, 20 Dec 2021 18:53:01 -0800 (PST) Received: from localhost ([::1]:50744 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzVGu-000782-9L for importer@patchew.org; Mon, 20 Dec 2021 21:53:00 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54282) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzVEM-0003hK-5o for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:22 -0500 Received: from [2607:f8b0:4864:20::52d] (port=44924 helo=mail-pg1-x52d.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mzVEK-0000C3-6z for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:21 -0500 Received: by mail-pg1-x52d.google.com with SMTP id m15so11016644pgu.11 for ; Mon, 20 Dec 2021 18:50:19 -0800 (PST) Received: from localhost.localdomain ([156.19.246.20]) by smtp.gmail.com with ESMTPSA id bg23sm694025pjb.24.2021.12.20.18.50.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Dec 2021 18:50:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=F9yEwPrmR9xpxjbUMZcvWlIm4BrVKkXnEjUbM9qs6VM=; b=D8TZnIfLabC0AmpSuzjzLdtK0EWfT+HTror9COebxvSfFoRHkl1YGeEJyI0Wcpfxoe IjuOb7QEmLSp11PIsk2KsMdkFDSfGPVhPXzinYzwQ9nj9kdliJM877tGBU4w1hWmdlzZ QeVL4YaKjXkFb4YSMLWUMq8Pjwf8DaXbasXAJFu+jy6PzL47peoKYbrfqeZ96KHZrl40 qz/WnFLdnLd91tD4vn9cbOjKyswNDyKmZu55rpooIwdXXAelgnG+lsUWceOF8ft9vXEB SlCbkAn37tnMHG5PN+UAU51JThg43Ncg9iOLetSiURpF0e0DD7ZcjLh5zAlw2ySM9NUe wNtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=F9yEwPrmR9xpxjbUMZcvWlIm4BrVKkXnEjUbM9qs6VM=; b=HP4xgqSYHhllqXq6UHMdsyAFqPSEtNhWDzFb0FK8Xlrh8CByrPiclAz2saZZFw+EsF Z2q81Ye5FFDkXXEXcRi/+R3ly23l1D9J3SAocIAVfCBfhcTT00sPpQf7enoJDg0cDDjL vFOs84UOuPQ9vU8Y/07IfL5Uh4Op9C3dBy7t3ZhRw3p4MRJamj/ey2hKxbN2GzX53t7M 3mLTpKW/9qh+mb4S6iBKiRdyZlQB/16jFagJvQ73Q2XfzwYS6d6Eiu+P125fYMk2yaia KPIvmQhCbHvNAJLZsdnh30LKdCnMSRRvC++izXsuqZ5ljieoERWvtx8Njjj/87Io6o3G mexA== X-Gm-Message-State: AOAM530mPv2zzbIvAsxw3B5fWS/I7t0ok8JdEF6JLbVN1R6/CV31I+Fa ajkJAV7pZfpRIfp1FxQql/zaNEEU+5tY0g== X-Google-Smtp-Source: ABdhPJxsqRoyVh2syVTmaMp7paIxU5zmdXoD8JSvBoX9syj+vknf0TQmf2A0KKK9Gd/DaDHNAlfVPg== X-Received: by 2002:a65:6411:: with SMTP id a17mr1043081pgv.203.1640055018869; Mon, 20 Dec 2021 18:50:18 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 5/7] linux-user/nios2: Fix EA vs PC confusion Date: Mon, 20 Dec 2021 18:50:10 -0800 Message-Id: <20211221025012.1057923-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211221025012.1057923-1-richard.henderson@linaro.org> References: <20211221025012.1057923-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::52d (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1640055183745100001 Content-Type: text/plain; charset="utf-8" The real kernel will talk about the user PC as EA, because that's where the hardware will have copied it, and where it expects to put it to then use ERET. But qemu does not emulate all of the exception stuff while emulating user-only. Manipulate PC directly. This fixes signal entry and return, and eliminates some slight confusion from target_cpu_copy_regs. Signed-off-by: Richard Henderson Reviewed-by: Laurent Vivier --- linux-user/nios2/cpu_loop.c | 5 +---- linux-user/nios2/signal.c | 6 +++--- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index de0fc63e21..1e93ef34e6 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -155,9 +155,6 @@ void target_cpu_copy_regs(CPUArchState *env, struct tar= get_pt_regs *regs) env->regs[R_SP] =3D regs->sp; env->regs[R_GP] =3D regs->gp; env->regs[CR_ESTATUS] =3D regs->estatus; - env->regs[R_EA] =3D regs->ea; - /* TODO: unsigned long orig_r7; */ - - /* Emulate eret when starting thread. */ env->regs[R_PC] =3D regs->ea; + /* TODO: unsigned long orig_r7; */ } diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index adbffe32e3..20b65aa06e 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -73,7 +73,7 @@ static void rt_setup_ucontext(struct target_ucontext *uc,= CPUNios2State *env) __put_user(env->regs[R_RA], &gregs[23]); __put_user(env->regs[R_FP], &gregs[24]); __put_user(env->regs[R_GP], &gregs[25]); - __put_user(env->regs[R_EA], &gregs[27]); + __put_user(env->regs[R_PC], &gregs[27]); __put_user(env->regs[R_SP], &gregs[28]); } =20 @@ -122,7 +122,7 @@ static int rt_restore_ucontext(CPUNios2State *env, stru= ct target_ucontext *uc, __get_user(env->regs[R_GP], &gregs[25]); /* Not really necessary no user settable bits */ __get_user(temp, &gregs[26]); - __get_user(env->regs[R_EA], &gregs[27]); + __get_user(env->regs[R_PC], &gregs[27]); =20 __get_user(env->regs[R_RA], &gregs[23]); __get_user(env->regs[R_SP], &gregs[28]); @@ -181,7 +181,7 @@ void setup_rt_frame(int sig, struct target_sigaction *k= a, env->regs[4] =3D sig; env->regs[5] =3D frame_addr + offsetof(struct target_rt_sigframe, info= ); env->regs[6] =3D frame_addr + offsetof(struct target_rt_sigframe, uc); - env->regs[R_EA] =3D ka->_sa_handler; + env->regs[R_PC] =3D ka->_sa_handler; =20 unlock_user_struct(frame, frame_addr, 1); } --=20 2.25.1 From nobody Tue Feb 10 10:19:44 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1640055559; cv=none; d=zohomail.com; s=zohoarc; b=X8Ed2Qh7nny+EzmD8bc5i48/AdHUa0l5vhSSnlXCYtWxT7ae5z8MyVCDl8KD2fKrC7fGtCxzulbI5fJG3R+jRlj3pyaAR4gUx7UaCCtnzUTX2YWA4tx/d4INiZPB1rC/2xd1E3NuTKohm8XWg2oZnxlioVE9fcH8conMNE1wR1s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640055559; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iHsxRB8KyaG7WhuzCtkZtRVF4Ccf8PekyBx+hSykVAQ=; b=mKpq5zEEvHqOdDlnamWb/fSaPsp14Y15eBj3P/TD/PrQ1+nV8jaczj72qpXyHPoedT8ZUWYSfg8ziP3yVbOcPkXV7BiZ8Rv3NHEI76SGymP74AoTonkyYcEdXa2y+SY9J6hGTOKXZlcnhY9mOMiamu130bkEQ09BpJ842cBrDQM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16400555592798.392131328635514; Mon, 20 Dec 2021 18:59:19 -0800 (PST) Received: from localhost ([::1]:34240 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzVN0-0006pk-7v for importer@patchew.org; Mon, 20 Dec 2021 21:59:18 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54292) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzVEM-0003j6-Mf for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:22 -0500 Received: from [2607:f8b0:4864:20::1029] (port=43565 helo=mail-pj1-x1029.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mzVEL-0000Cd-0z for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:22 -0500 Received: by mail-pj1-x1029.google.com with SMTP id a11-20020a17090a854b00b001b11aae38d6so1817611pjw.2 for ; Mon, 20 Dec 2021 18:50:20 -0800 (PST) Received: from localhost.localdomain ([156.19.246.20]) by smtp.gmail.com with ESMTPSA id bg23sm694025pjb.24.2021.12.20.18.50.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Dec 2021 18:50:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iHsxRB8KyaG7WhuzCtkZtRVF4Ccf8PekyBx+hSykVAQ=; b=rqalFPFkC7D6+9XeYByvlxdC413CYAZRlevg4Jbw3i3urdreKeqZwN4TWMEcQyTZfa ulvpXxBwyi2aJHbZsK1kE5f3VNrVVac2x6tVI6kCBA85drwa7aRxI8M4kWwbSQZ8KRHZ a2aKvrOZbzG7mhwLeWdhv1bK6khOydQJYuX8CWg9oUGUWAmwErt6ytQTRDmDeYRRJH7V Qx14bXB+q/YPVw7uZsEeHTxKGNyLfaQ9Q7tSZ+QLVb2O1NYqwG8p5HaI7cw9/HeN+/fr DgVLi5/WXMW519wM0cSl2dFX9GAmfNw3DzCr3ueehTcZ04y/pf/Qk4EF5ih2nFatTz7k UZjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iHsxRB8KyaG7WhuzCtkZtRVF4Ccf8PekyBx+hSykVAQ=; b=N5aij3X96hWGrWCjZmK3BpEJhFuQ6w4F8zUl7TLGBSZNA7UsCYODyh3orPlLTYwYNI BAuLuEqBuAKBPgzBXsdE1fr85LutBYJhyLG/kb8BbjbIEqY1iDGulUOmexXW9k7Fyw74 0sjvgI9wm6MlP2yf4JK3IJeK3TpCbST7WipKPNnz8bOrYQcn2Tcj/acI0TMoZj2IuyJ6 8Y+Pv3IZofRs9+UsIRvd/dV3pl/XeLm1j5oInsfQ+5HFqMH1unEZHcr8VuHQSs03BTW9 o+54NcecHY8kNwZyUcx2nswLxN6yq0raocALAZL+GmySA/7lQ3Lxs2eC/IXD+zpRy90t PHTw== X-Gm-Message-State: AOAM5323iALJNlRYgpYqbICia4i7ytnmQPvuo0+fx3qr7z85Xaf04Az/ CPNGy+/aqBoKLjc+Q4zOv8XH8IhppmUJ0Q== X-Google-Smtp-Source: ABdhPJxZtgqBmmYvOMYz1Wsw/TIITg0lHsVAMufXwQV9so6ac6cvqK0zQZEEI8/hk0Vphw/Q6+ge0A== X-Received: by 2002:a17:90b:1c0b:: with SMTP id oc11mr1349168pjb.174.1640055019680; Mon, 20 Dec 2021 18:50:19 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 6/7] linux-user/nios2: Fix sigmask in setup_rt_frame Date: Mon, 20 Dec 2021 18:50:11 -0800 Message-Id: <20211221025012.1057923-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211221025012.1057923-1-richard.henderson@linaro.org> References: <20211221025012.1057923-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::1029 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1640055561306100001 Content-Type: text/plain; charset="utf-8" Do not cast the signal mask elements; trust __put_user. Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson --- linux-user/nios2/signal.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index 20b65aa06e..80e3d42fc9 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -168,8 +168,7 @@ void setup_rt_frame(int sig, struct target_sigaction *k= a, target_save_altstack(&frame->uc.tuc_stack, env); rt_setup_ucontext(&frame->uc, env); for (i =3D 0; i < TARGET_NSIG_WORDS; i++) { - __put_user((abi_ulong)set->sig[i], - (abi_ulong *)&frame->uc.tuc_sigmask.sig[i]); + __put_user(set->sig[i], &frame->uc.tuc_sigmask.sig[i]); } =20 /* Set up to return from userspace; jump to fixed address sigreturn --=20 2.25.1 From nobody Tue Feb 10 10:19:44 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1640055429; cv=none; d=zohomail.com; s=zohoarc; b=JEmoG0awE/Egd4vE9xs9WBaWmb8es629kqQ0yS1oDM0fDezhYOKKzSm+lYwRxlgwVrALVNQAPopoZkpcLlyTeBVQHmY5F6Fmg/QxL4a/1XFW1zYiChWw7U1OqxGfC4FPA20Unp/nEwDdPjra9UfXrxNsIwyf1xI1XgKCfZ8BS3E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640055429; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=isjT3VM0fssSgBZyBVG7BinpIcaowlRssp8BNfIngDU=; b=NT4KCcunpdiIzjYYKKQiQD44Jw3px+aFv9F75rkpI2vaFJPW+aGnhYeFDDEYCwlgO+ZfQbA95hQYeKP6ffEO06BrWX6L2pLGHX6GdJIMb3sNgyUGTq6bK+gy7B3VSwGFyfe/xI4trDTIuaajpaDW5LgomsuO8cfD31FeaRtWGIY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1640055428995932.3685146859175; Mon, 20 Dec 2021 18:57:08 -0800 (PST) Received: from localhost ([::1]:59048 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mzVKt-0004Nv-W7 for importer@patchew.org; Mon, 20 Dec 2021 21:57:08 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54306) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mzVEN-0003m6-KV for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:23 -0500 Received: from [2607:f8b0:4864:20::529] (port=37648 helo=mail-pg1-x529.google.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mzVEL-0000DQ-UV for qemu-devel@nongnu.org; Mon, 20 Dec 2021 21:50:23 -0500 Received: by mail-pg1-x529.google.com with SMTP id a23so11037162pgm.4 for ; Mon, 20 Dec 2021 18:50:21 -0800 (PST) Received: from localhost.localdomain ([156.19.246.20]) by smtp.gmail.com with ESMTPSA id bg23sm694025pjb.24.2021.12.20.18.50.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Dec 2021 18:50:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=isjT3VM0fssSgBZyBVG7BinpIcaowlRssp8BNfIngDU=; b=qEMK4bV0Ey3Oi/KzFEFwGRoC/Mg1tbvFb81ieKvcru8GgS8qARGWfLjChBna+mnzdk QhvK1qYQQt0Uwt/M1BJHXAoMTOzlHNAyIds+4WbQ6C0tC6QOPqFA6ihEVBJ3CXm0fj93 FJ6Fv37Rq9nsIfYXvN6cWrJWcH9A1Q9kEDzULB0yRP5BQornIe0FvL/xNxBnWpPskgFv hRWtw1BFm+1sXF+5orQum6eb44NH1OBbPNEFtk0NexNinpkF/YHxFFGEofkp91YoQQoN uHTbaLOS7efryPOofcHkl1q2dos/KGdrAR1qMarSPR8lF06iBy5YOo29kg6DeaQM6b8+ vv4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=isjT3VM0fssSgBZyBVG7BinpIcaowlRssp8BNfIngDU=; b=2j7yqlgK3BL4IzSOIDeWa6fqD7vEqM4ZU4/NlbWtHf5nf6Y7WWWA8ZzxG4WtKa5uIB a9itzcxYW03FiRwMS2EvSlcFkBjLpuyvx80raLfg1IjzHnKtzTAstUBH3UR06SqQRsbc xAU9yeZWvwCSSdByZAws+W7DzFVZjzzKqWDj182eZ01atsIgLiqm/l5ZWkeMrP+quUD0 Rb0rFv1Wp8OnMDQoBpycIdOYBmJXpv3PjHpv/yK7zWyR6QMf+z6mPbqsDA7N6rG4w8WA 6qGw+rvamVbscxAEpfnetvn5X75rCSNn70fxSvYrQMGc2INq44Ynu3RMJZbeoLI3ajQH Zgtw== X-Gm-Message-State: AOAM530TqTebOkH5L0jp+U/svwRDse+aeM3joOqdlIMwO9QzMPcOehik kgHsadzC3grD9YqJceLuSlFw998SoggmJw== X-Google-Smtp-Source: ABdhPJwiTIioNUlA6yBonPBwwHWK06aSxIzFm3pJRhiOfESuYQv5+HVZrImu5UJl3lOsI9yj+ZqX7A== X-Received: by 2002:a63:8448:: with SMTP id k69mr1044271pgd.268.1640055020610; Mon, 20 Dec 2021 18:50:20 -0800 (PST) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PATCH v2 7/7] linux-user/nios2: Use set_sigmask in do_rt_sigreturn Date: Mon, 20 Dec 2021 18:50:12 -0800 Message-Id: <20211221025012.1057923-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211221025012.1057923-1-richard.henderson@linaro.org> References: <20211221025012.1057923-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Host-Lookup-Failed: Reverse DNS lookup failed for 2607:f8b0:4864:20::529 (failed) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: laurent@vivier.eu Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1640055429553100001 Content-Type: text/plain; charset="utf-8" Using do_sigprocmask directly was incorrect, as it will leave the signal blocked by the outer layers of linux-user. Reviewed-by: Laurent Vivier Signed-off-by: Richard Henderson --- linux-user/nios2/signal.c | 2 +- linux-user/signal.c | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/linux-user/nios2/signal.c b/linux-user/nios2/signal.c index 80e3d42fc9..517cd39270 100644 --- a/linux-user/nios2/signal.c +++ b/linux-user/nios2/signal.c @@ -205,7 +205,7 @@ long do_rt_sigreturn(CPUNios2State *env) } =20 target_to_host_sigset(&set, &frame->uc.tuc_sigmask); - do_sigprocmask(SIG_SETMASK, &set, NULL); + set_sigmask(&set); =20 if (rt_restore_ucontext(env, &frame->uc, &rval)) { goto badframe; diff --git a/linux-user/signal.c b/linux-user/signal.c index 6d5e5b698c..8cb33a351c 100644 --- a/linux-user/signal.c +++ b/linux-user/signal.c @@ -258,7 +258,6 @@ int do_sigprocmask(int how, const sigset_t *set, sigset= _t *oldset) return 0; } =20 -#if !defined(TARGET_NIOS2) /* Just set the guest's signal mask to the specified value; the * caller is assumed to have called block_signals() already. */ @@ -268,7 +267,6 @@ void set_sigmask(const sigset_t *set) =20 ts->signal_mask =3D *set; } -#endif =20 /* sigaltstack management */ =20 --=20 2.25.1