From patchwork Tue Jul 18 21:10:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 122239 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2018298vqt; Tue, 18 Jul 2023 14:25:42 -0700 (PDT) X-Google-Smtp-Source: APBJJlHUXMY9aYBQ5K/s8duWg/9GZJeLavqj1zSjB7Zpz4cFRh3EDpzO4cMufGmufx0u/LptN2W0 X-Received: by 2002:a17:906:7386:b0:994:54af:e282 with SMTP id f6-20020a170906738600b0099454afe282mr963747ejl.10.1689715542627; Tue, 18 Jul 2023 14:25:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689715542; cv=none; d=google.com; s=arc-20160816; b=mQ/V/LzlDmN94RZpDTjAg1QSEt18WT1ETf3/gcqnPqsHtrOPiVboUUNhe38adfUOtr x8+Hzsfuf4dz6+FmzUvq3S1ysJC513zoRkmO6Ncm6m5FEsQlDkrSn0rqdyf7lIRtSChA dcpHc0KFgkOjU6aCLIhHIonMwWTI747KTgZmorGcZw18Q9sqZPlRBPAKJZYaslLOlwhr piaknjm8BBYmVbsbFcLFP/dKXNAq9iG7xUbzf+qQRtuXq43TvNXSsXZiVYiGXT3fP74v loRraZyKMWu+XQ1KekXVkNRpZI5QgQoEhtd2QhktoWMJiVvNdsKZHqCpZp5Sqr3bJycR tLLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=AvV/qwsFWrxrnAqLftHOSsuZnZnKL/+hGMEyYEU8/N8=; fh=LUnDCxFG3oyWlcYTkiNww5x4+0V5pkm51/GfDl61ZDU=; b=IyZZ1S7IpcvFMQBpW8ecrixx2zsuIhyYOrBPUSdjCB3dosotGyEtHCrjj4j09C8StX X7rr5TdeNjFLjrBJxZKd3kS8ZLFAOZcdqXyPUALNmwGlkE4DOxTGmoyrKOaS7/lHY8ef DO/n3YW8Vag5xTalFY9uya9DrnGrNs3Xm/g7KK11Xsh/Dp9XacJTsfQfqNh5Og4x6+ct WJEL/NTDnFPi5Te3XIRPsZOA2sdIdJR3faRbrJ0HD0nD7icJvPQFPgeUxuJQnV/0o2oB KexQQfaHyUPM5k0H7ebpJWfpjrU3uOV5Zlnf16GednPD8LpnQSD3dmAe8h5eNATRn15Z nLDQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m14-20020a170906580e00b0098759716e36si1786674ejq.217.2023.07.18.14.25.13; Tue, 18 Jul 2023 14:25:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229864AbjGRVLE (ORCPT + 99 others); Tue, 18 Jul 2023 17:11:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35072 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229571AbjGRVLC (ORCPT ); Tue, 18 Jul 2023 17:11:02 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0CDAAEC; Tue, 18 Jul 2023 14:10:59 -0700 (PDT) X-QQ-mid: bizesmtp70t1689714650ti363d26 Received: from linux-lab-host.localdomain ( [119.123.130.39]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 19 Jul 2023 05:10:49 +0800 (CST) X-QQ-SSF: 01200000000000D0X000000A0000000 X-QQ-FEAT: wPivafIDGPPEvqeYZTPmewPyvVWylqcAja+mkp8ND6UqgiOzbaRKXCiHoclg8 YoxnLzcOckWPg+3DMm7n5F/IXhD2CKmcsZAgst044DG4HdtnJCC4VZig0bEEnMhzKVHsfxw kqaMdtSytK+0A8csmqqHPK1lGDEfp+38E3v5G7CflcJCUIzIqbN4O65TDlbjHXxnXq5oaaX 6gZo2u3yyKD46zQO7GvOw9+0WD7nV2lgw6xPJd2wqjP+jQkr2/3AZpmXYSUL69GXuvZJghl YX7sYBRQMrp0apBHoWlUWwyfL7stsDO1hIMNn+X/Rqh+3zRHS9w4dePUoUZ0R1McY+kJ1Ty qsd7+IA+jLKWO6NIAxnsi+n7E4cVqvxgrjPZNtKTEQsVpol+9xlzMZx1+h6FA== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 7805254917606532531 From: Zhangjin Wu To: w@1wt.eu Cc: thomas@t-8ch.de, arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v1 1/8] tools/nolibc: add support for powerpc Date: Wed, 19 Jul 2023 05:10:48 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771795165120437152 X-GMAIL-MSGID: 1771795165120437152 Both syscall declarations and _start code definition are added for powerpc to nolibc. Like mips, powerpc uses a register (exactly, the summary overflow bit) to record the error occurred, and uses another register to return the value [1]. So, the return value of every syscall declaration must be normalized to easier the __sysret helper, return -value when there is an error, otheriwse, return value directly. Glibc and musl use different methods to check the summary overflow bit, glibc (sysdeps/unix/sysv/linux/powerpc/sysdep.h) saves the cr register to r0 at first, and then check the summary overflow bit in cr0: mfcr r0 r0 & (1 << 28) ? -r3 : r3 --> 10003c14: 7c 00 00 26 mfcr r0 10003c18: 74 09 10 00 andis. r9,r0,4096 10003c1c: 41 82 00 08 beq 0x10003c24 10003c20: 7c 63 00 d0 neg r3,r3 Musl (arch/powerpc/syscall_arch.h) directly checks the summary overflow bit with the 'bns' instruction: /* no summary overflow bit means no error, return value directly */ bns+ 1f /* otherwise, return negated value */ neg r3, r3 1: --> 10000418: 40 a3 00 08 bns 0x10000420 1000041c: 7c 63 00 d0 neg r3,r3 The later one is smaller, here applies it. arch/powerpc/include/asm/vdso/gettimeofday.h file uses the smaller method for do_syscall_2() too. [1]: https://man7.org/linux/man-pages/man2/syscall.2.html Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-powerpc.h | 156 ++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 tools/include/nolibc/arch-powerpc.h diff --git a/tools/include/nolibc/arch-powerpc.h b/tools/include/nolibc/arch-powerpc.h new file mode 100644 index 000000000000..100ec0f412dc --- /dev/null +++ b/tools/include/nolibc/arch-powerpc.h @@ -0,0 +1,156 @@ +/* SPDX-License-Identifier: LGPL-2.1 OR MIT */ +/* + * PowerPC specific definitions for NOLIBC + * Copyright (C) 2023 Zhangjin Wu + */ + +#ifndef _NOLIBC_ARCH_POWERPC_H +#define _NOLIBC_ARCH_POWERPC_H + +#include "compiler.h" +#include "crt.h" + +/* Syscalls for PowerPC : + * - stack is 16-byte aligned + * - syscall number is passed in r0 + * - arguments are in r3, r4, r5, r6, r7, r8, r9 + * - the system call is performed by calling "sc" + * - syscall return comes in r3, and the summary overflow bit is checked + * to know if an error occurred, in which case errno is in r3. + * - the arguments are cast to long and assigned into the target + * registers which are then simply passed as registers to the asm code, + * so that we don't have to experience issues with register constraints. + */ + +#define _NOLIBC_SYSCALL_CLOBBERLIST \ + "memory", "cr0", "r9", "r10", "r11", "r12" + +#define my_syscall0(num) \ +({ \ + register long r0 __asm__ ("r0") = (num); \ + register long r3 __asm__ ("r3"); \ + \ + __asm__ volatile ( \ + "sc; bns+ 1f; neg %1, %1; 1:\n" \ + : "+r"(r0), "=r"(r3) \ + :: "r4", "r5", "r6", "r7", "r8", _NOLIBC_SYSCALL_CLOBBERLIST \ + ); \ + r3; \ +}) + +#define my_syscall1(num, arg1) \ +({ \ + register long r0 __asm__ ("r0") = (num); \ + register long r3 __asm__ ("r3") = (long)(arg1); \ + \ + __asm__ volatile ( \ + "sc; bns+ 1f; neg %1, %1; 1:\n" \ + : "+r"(r0), "+r"(r3) \ + :: "r4", "r5", "r6", "r7", "r8", _NOLIBC_SYSCALL_CLOBBERLIST \ + ); \ + r3; \ +}) + + +#define my_syscall2(num, arg1, arg2) \ +({ \ + register long r0 __asm__ ("r0") = (num); \ + register long r3 __asm__ ("r3") = (long)(arg1); \ + register long r4 __asm__ ("r4") = (long)(arg2); \ + \ + __asm__ volatile ( \ + "sc; bns+ 1f; neg %1, %1; 1:\n" \ + : "+r"(r0), "+r"(r3), \ + "+r"(r4) \ + :: "r5", "r6", "r7", "r8", _NOLIBC_SYSCALL_CLOBBERLIST \ + ); \ + r3; \ +}) + + +#define my_syscall3(num, arg1, arg2, arg3) \ +({ \ + register long r0 __asm__ ("r0") = (num); \ + register long r3 __asm__ ("r3") = (long)(arg1); \ + register long r4 __asm__ ("r4") = (long)(arg2); \ + register long r5 __asm__ ("r5") = (long)(arg3); \ + \ + __asm__ volatile ( \ + "sc; bns+ 1f; neg %1, %1; 1:\n" \ + : "+r"(r0), "+r"(r3), \ + "+r"(r4), "+r"(r5) \ + :: "r6", "r7", "r8", _NOLIBC_SYSCALL_CLOBBERLIST \ + ); \ + r3; \ +}) + + +#define my_syscall4(num, arg1, arg2, arg3, arg4) \ +({ \ + register long r0 __asm__ ("r0") = (num); \ + register long r3 __asm__ ("r3") = (long)(arg1); \ + register long r4 __asm__ ("r4") = (long)(arg2); \ + register long r5 __asm__ ("r5") = (long)(arg3); \ + register long r6 __asm__ ("r6") = (long)(arg4); \ + \ + __asm__ volatile ( \ + "sc; bns+ 1f; neg %1, %1; 1:\n" \ + : "+r"(r0), "+r"(r3), \ + "+r"(r4), "+r"(r5), "+r"(r6) \ + :: "r7", "r8", _NOLIBC_SYSCALL_CLOBBERLIST \ + ); \ + r3; \ +}) + + +#define my_syscall5(num, arg1, arg2, arg3, arg4, arg5) \ +({ \ + register long r0 __asm__ ("r0") = (num); \ + register long r3 __asm__ ("r3") = (long)(arg1); \ + register long r4 __asm__ ("r4") = (long)(arg2); \ + register long r5 __asm__ ("r5") = (long)(arg3); \ + register long r6 __asm__ ("r6") = (long)(arg4); \ + register long r7 __asm__ ("r7") = (long)(arg5); \ + \ + __asm__ volatile ( \ + "sc; bns+ 1f; neg %1, %1; 1:\n" \ + : "+r"(r0), "+r"(r3), \ + "+r"(r4), "+r"(r5), "+r"(r6), "+r"(r7) \ + :: "r8", _NOLIBC_SYSCALL_CLOBBERLIST \ + ); \ + r3; \ +}) + +#define my_syscall6(num, arg1, arg2, arg3, arg4, arg5, arg6) \ +({ \ + register long r0 __asm__ ("r0") = (num); \ + register long r3 __asm__ ("r3") = (long)(arg1); \ + register long r4 __asm__ ("r4") = (long)(arg2); \ + register long r5 __asm__ ("r5") = (long)(arg3); \ + register long r6 __asm__ ("r6") = (long)(arg4); \ + register long r7 __asm__ ("r7") = (long)(arg5); \ + register long r8 __asm__ ("r8") = (long)(arg6); \ + \ + __asm__ volatile ( \ + "sc; bns+ 1f; neg %1, %1; 1:\n" \ + : "+r"(r0), "+r"(r3), \ + "+r"(r4), "+r"(r5), "+r"(r6), "+r"(r7), "+r"(r8) \ + :: _NOLIBC_SYSCALL_CLOBBERLIST \ + ); \ + r3; \ +}) + +/* startup code */ +void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) +{ + __asm__ volatile ( + "mr 3, 1\n" /* save stack pointer to r3, as arg1 of _start_c */ + "clrrwi 1, 1, 4\n" /* align the stack to 16 bytes */ + "li 0, 0\n" /* zero the frame pointer */ + "stwu 1, -16(1)\n" /* the initial stack frame */ + "bl _start_c\n" /* transfer to c runtime */ + ); + __builtin_unreachable(); +} + +#endif /* _NOLIBC_ARCH_POWERPC_H */ From patchwork Tue Jul 18 21:11:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 122231 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2017780vqt; Tue, 18 Jul 2023 14:24:26 -0700 (PDT) X-Google-Smtp-Source: APBJJlHoU165v536RqaE1m1MW/ampItVS7yvZWLvPBff5HyJfOKIDBrjyHNJK7X7HAVah9Ge1s9I X-Received: by 2002:a17:902:748c:b0:1b6:c139:9b23 with SMTP id h12-20020a170902748c00b001b6c1399b23mr905129pll.26.1689715466214; Tue, 18 Jul 2023 14:24:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689715466; cv=none; d=google.com; s=arc-20160816; b=XojPV6wODLubxWXH5B9Mc3lIu8wz+9hC8bAiJrSzWZSDuNE3k7tDbPJd2/rKfY0gYR fVm4lMVj08NkqQIdQISiRiiGMGlZM5eO2Lv6YyolXZb0fGvfaKT/+GnTxE6uVdgzuDF9 i8ltvHoGdGE8c/IKZHJXABSa1ipNwBsiL5WfQuV483QBc2oScvs52F1YYJTdHtivwNIS 1bN4BKjf/PB7UFE8k9x1J7y/RxPcXQVqUzSSOfgLMn6+a14+RsX8J02/6L5LSHvW6Ili dCaUjWwZRTQ6fO7TyTq3TfcnctMF7YFLkxUiRG5KNKIQOH9HEjFfpmK7VsQ7uCXXxEU6 YScg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=MD5Qv/gJ8YF/7/wcYhBv0O9VXHeFePApjjWnS/CEA98=; fh=LUnDCxFG3oyWlcYTkiNww5x4+0V5pkm51/GfDl61ZDU=; b=AtIBcVd5pgvL80xT5eHHFMFEI06BtygdSk/Zn776sutUEoB1BR3Gf1s9p5Lozb1wcH Lv2/7Lptv9rV2bxBY46Ztlq2s2Ft84TBKaKEYMHTL3I99jHv/5Cq7Lmt7UgMHlJlCBUs tsf1fBRoBhy8GU3kUf/LS6eBWu1aRg46RuGgkmNs0hnPMREEMIY2tPI0Bimurx5Eo9yb GWjLFs61mv2fOY/1uSPrCyM2pnOsai40s6fQiIJ5oxX96yJFHzJ1uM0om1virtPSMxv7 1S77lByp1gvMHcJx0WXg+LzK+jqyYzViL04x1JCKczHNwBF2xEfICf8nvlL4F6SvBRQr zt6A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p13-20020a1709028a8d00b001b8c6890595si2052402plo.310.2023.07.18.14.24.12; Tue, 18 Jul 2023 14:24:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231268AbjGRVMZ (ORCPT + 99 others); Tue, 18 Jul 2023 17:12:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230419AbjGRVMT (ORCPT ); Tue, 18 Jul 2023 17:12:19 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0E7821FEE; Tue, 18 Jul 2023 14:12:05 -0700 (PDT) X-QQ-mid: bizesmtp67t1689714716ty3d409i Received: from linux-lab-host.localdomain ( [119.123.130.39]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 19 Jul 2023 05:11:55 +0800 (CST) X-QQ-SSF: 01200000000000D0X000000A0000000 X-QQ-FEAT: znfcQSa1hKbIWy9/nudIS6dweUsnw6YVkjkrjXVuU+TODYlb+AgCL6pXkl2Fl tSsRaDf72WXJcU3KEzH9E4XSY2yEuk3T/diWm8Ne5HqGX0DrjpE477mcQpG4G5DFd9ODAOv uaikbHrw6qk530JkQ8AXJcHgiIds6d+3aJefPFODPpZsURPJhdgFwh0jQjZ/vmKkYggOmvg aszaovcQXFBHNKeguR9bBylNG6atlyI7bfvZaKxSTY+3RBNZwLkFtoz5htQh0d6mbj20RuF K+5rrb2HGie6OTmRGi4ibC/KnE/f91NZCFgxKvguB/uEmc1BehQ7DhvhA7zqSZvkzSXxWHD 9PT7i9S5yx9Zpsyo+xynEYrc3KrTZZkfVU5bd7OV511CmwkmBLBB7D8q7X6YQ== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 11373982133652074623 From: Zhangjin Wu To: w@1wt.eu Cc: thomas@t-8ch.de, arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v1 2/8] tools/nolibc: add support for powerpc64 Date: Wed, 19 Jul 2023 05:11:54 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771795084347679342 X-GMAIL-MSGID: 1771795084347679342 This follows the 64-bit PowerPC ABI [1], refers to the slides: "A new ABI for little-endian PowerPC64 Design & Implementation" [2] and the musl code in arch/powerpc64/crt_arch.h. Firstly, stdu and clrrdi are used instead of stwu and clrrwi for powerpc64. Second, the stack frame size is increased to 32 bytes for powerpc64, 32 bytes is the minimal stack frame size supported described in [2]. Besides, the TOC pointer (GOT pointer) must be saved to r2. This works on both little endian and big endian 64-bit PowerPC. [1]: https://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi.pdf [2]: https://www.llvm.org/devmtg/2014-04/PDFs/Talks/Euro-LLVM-2014-Weigand.pdf Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-powerpc.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/include/nolibc/arch-powerpc.h b/tools/include/nolibc/arch-powerpc.h index 100ec0f412dc..7b28ebcfcc23 100644 --- a/tools/include/nolibc/arch-powerpc.h +++ b/tools/include/nolibc/arch-powerpc.h @@ -143,6 +143,19 @@ /* startup code */ void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_stack_protector _start(void) { +#ifdef __powerpc64__ + /* On 64-bit PowerPC, save TOC/GOT pointer to r2 */ + extern char TOC __asm__ (".TOC."); + register volatile long r2 __asm__ ("r2") = (void *)&TOC - (void *)_start; + + __asm__ volatile ( + "mr 3, 1\n" /* save stack pointer to r3, as arg1 of _start_c */ + "clrrdi 1, 1, 4\n" /* align the stack to 16 bytes */ + "li 0, 0\n" /* zero the frame pointer */ + "stdu 1, -32(1)\n" /* the initial stack frame */ + "bl _start_c\n" /* transfer to c runtime */ + ); +#else __asm__ volatile ( "mr 3, 1\n" /* save stack pointer to r3, as arg1 of _start_c */ "clrrwi 1, 1, 4\n" /* align the stack to 16 bytes */ @@ -150,6 +163,7 @@ void __attribute__((weak, noreturn, optimize("Os", "omit-frame-pointer"))) __no_ "stwu 1, -16(1)\n" /* the initial stack frame */ "bl _start_c\n" /* transfer to c runtime */ ); +#endif __builtin_unreachable(); } From patchwork Tue Jul 18 21:13:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 122238 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2018291vqt; Tue, 18 Jul 2023 14:25:42 -0700 (PDT) X-Google-Smtp-Source: APBJJlFV0EgiExNQLQHOtFmP6czhwNJc2RZvMK+DEn28VHPhYwSe/R6SHSQK8vl1/hd8npELhwle X-Received: by 2002:a17:906:ca:b0:988:f559:47b with SMTP id 10-20020a17090600ca00b00988f559047bmr735249eji.31.1689715541955; Tue, 18 Jul 2023 14:25:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689715541; cv=none; d=google.com; s=arc-20160816; b=TeQy0GSXRhN1i3uH17re9kT2hMq9KKNDDIuOBzX0AXkDhrYNW/5Qy8rXfO167YZb7I FPHzLWBKJps2qvMtE95i2JoWjIyKusk5R9rSjAmKK8WKEgrJXTk4mPWFKNvKqsEwC8g8 shli4L2BBwWNIPGsKzXMah95HOfcN01A5VmgTocXimLB+DpehxZRZTNKHsRc0js0WhOR UaOIUxsYik27wvRQYXM0I62V8xxnmfYI16vXK/1ZchhqtO09Ehy/xRlomX+WtO8JW3SO J3ZBLNG1QS4c8mpfCZ2/ZUpx9bb+Rt2JFoWvZzFOxk8oyTGTQ0UNzt/TKSZprYOkP09r zWBQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=NfyTxUtHEE7hTikCv6F9gcK5zANqa6jYjoe1dMKDPig=; fh=LUnDCxFG3oyWlcYTkiNww5x4+0V5pkm51/GfDl61ZDU=; b=cbeboVqml3Gs6l2+/BrRMy0ld+9kjwsGbCw/fOQ/YP2hGs8Im6vxYqE5fEhdpsivtm He7cXWkBYgsXt5SLLb/OJimK++fa+H4PRJqMG/Hq9OxyeTq9v711OwkXQEpupHAzAoge KsA40+jvEGN01TqLnyskrOSobJb1pZZS+tbN5KkrH/wD81fdUykF1ymRDCGsSF1qgKGS y7TC8r2Q7StEUz7f128hAefX/jOkuc/QTEWuV17doXxSzACOAfzF+Xogv/vpU4rNhkS4 F/Zr2N+kTj5UwMqRKhGEmRr/mpIXlORK2MLg8igKeAOBPu0qXkgSdYVBwqS24yXzF3oY L2Ag== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d11-20020a170906370b00b00992f45c9343si1652472ejc.1025.2023.07.18.14.25.16; Tue, 18 Jul 2023 14:25:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231253AbjGRVNi (ORCPT + 99 others); Tue, 18 Jul 2023 17:13:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37670 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230205AbjGRVNg (ORCPT ); Tue, 18 Jul 2023 17:13:36 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B245219B4; Tue, 18 Jul 2023 14:13:13 -0700 (PDT) X-QQ-mid: bizesmtp63t1689714782trzjin3e Received: from linux-lab-host.localdomain ( [119.123.130.39]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 19 Jul 2023 05:13:01 +0800 (CST) X-QQ-SSF: 01200000000000D0X000000A0000000 X-QQ-FEAT: l1AKOOPZQsd2aCFsuejlNygv+phjrrzDIHE36qpwYCRFFVPb7T6TNOUd714WZ V+Eq9b0Q7T1QA85+NfBHTpJmI/t3DNgUsEnfwX+9uSeZ8DVVMD1MoCVJAmEirVXb5bnycmX IG0S/sAWuKOgLuoMLpCJyCAKbgSX6/7Y2B3/g9Y+o7Bkqcq4KwKEnsFyrdLRRI5plgb5pcw cb3RIj/J84BRFBYO+sknqb4qbSrT7OqAyYsh7elnNOEFikxelUCPbOHg1LxZtbQc4pNubRA yZCQulxaGRRjMkCQj+vPoh0+N8meAJrdfnx05uyQv3XpV8BT5rsMcBG7CjJ97NU6LQxC8Si BVa5fjFX2BLJAc8qXfML/PYZrQceL2pQnH5rq98cHk+0x/n2Z+x2VUjLkY0Qw== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 2481483960197194193 From: Zhangjin Wu To: w@1wt.eu Cc: thomas@t-8ch.de, arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v1 3/8] selftests/nolibc: select_null: fix up for big endian powerpc64 Date: Wed, 19 Jul 2023 05:13:01 +0800 Message-Id: <56e91281fde98fb3b2e34986d96870d76ebc3238.1689713175.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771795163959225719 X-GMAIL-MSGID: 1771795163959225719 The following error reported while running nolibc-test on the big endian 64-bit PowerPC kernel compiled with powerpc64le-linux-gnu-gcc in Ubuntu 20.04. 56 select_nullinit[1]: illegal instruction (4) at 100042a8 nip 100042a8 lr 100042a8 code 1 in init[10000000+10000] init[1]: code: 7c6307b4 7c234840 4081f580 7c6300d0 907d0000 3860ffff 4bfff570 3ca2fffe init[1]: code: 38800038 38a5d547 7fc3f378 4bffcd65 <1000038c> 38c10060 38a00000 38800000 Let's explicitly initialize all of the timeval members to zero. Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/nolibc-test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 03b1d30f5507..ec2c7774522e 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -858,7 +858,7 @@ int run_syscall(int min, int max) CASE_TEST(read_badf); EXPECT_SYSER(1, read(-1, &tmp, 1), -1, EBADF); break; CASE_TEST(rmdir_blah); EXPECT_SYSER(1, rmdir("/blah"), -1, ENOENT); break; CASE_TEST(sched_yield); EXPECT_SYSZR(1, sched_yield()); break; - CASE_TEST(select_null); EXPECT_SYSZR(1, ({ struct timeval tv = { 0 }; select(0, NULL, NULL, NULL, &tv); })); break; + CASE_TEST(select_null); EXPECT_SYSZR(1, ({ struct timeval tv = { 0, 0 }; select(0, NULL, NULL, NULL, &tv); })); break; CASE_TEST(select_stdout); EXPECT_SYSNE(1, ({ fd_set fds; FD_ZERO(&fds); FD_SET(1, &fds); select(2, NULL, &fds, NULL, NULL); }), -1); break; CASE_TEST(select_fault); EXPECT_SYSER(1, select(1, (void *)1, NULL, NULL, 0), -1, EFAULT); break; CASE_TEST(stat_blah); EXPECT_SYSER(1, stat("/proc/self/blah", &stat_buf), -1, ENOENT); break; From patchwork Tue Jul 18 21:14:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 122227 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2015207vqt; Tue, 18 Jul 2023 14:18:40 -0700 (PDT) X-Google-Smtp-Source: APBJJlGPZg/ObyIOhi3WU24fCQfR9izitBSDUJsxu88NeUFvb9VYP2fS82IkCRp1hJyu1elKb4cl X-Received: by 2002:a05:6a20:431f:b0:130:9638:36d4 with SMTP id h31-20020a056a20431f00b00130963836d4mr16062177pzk.33.1689715120402; Tue, 18 Jul 2023 14:18:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689715120; cv=none; d=google.com; s=arc-20160816; b=Po/OhUigPUt63DlUeWI1E4xfq/q5grLDFmbNILFIIo0S1BAEII/qNqgcK8eCDKRd6j ctStsWNa+gIpzjUTnQj3sPRLMt62oG0Ob6kE/moMLWuGuoLKLj3k3DS9x4U9/lAQAPay WrS7rdVutwZQxRN9u/IjPjegVLtl1rOMvKpZD3uSTdEAyvnAbnbNPxbw8q45zF4R0roi Ey45Cynku68A6hVCurAlu5Ud6AYb+Q8GrLKL8hDcO3QBGmeLez+Qi4wRE6ZfYCceoimb bV1WGddrnVGuSWRMwd2xabW8BUTwBj1bPS+tbAInMCQyOqojv0Vm7kCiKZpRwhQQLyrX 3c7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=r7Cmd/XHyUl2Ty9XJ2Bs+6IEKcbeTFzbbxd3pqlVF7s=; fh=3xNEhT4JwWJBHsL+y4xHd45q8QLNnF9PXVo1MLCBxA4=; b=rgJqDHvb5I6KmO3fUK4erGp8mdf71ssydUYT/w2VbcOUgzIpCemZ+yHIpldxiTMu3v BxsYEuHR1wIYbwQK5vgeJkQiLgFJGJtOvrKzZ9U9Nu1Rnwtw5MiW0Hp4DwOqir10OwUy 9OS/ug1cMWX9ICNniyhOynvy9GzwgXERCPh98khfEsKRX4Oa8oGhWl9ZmDXcj6Ry0olq PpWAORBlJyTIHCcB8UT0kVBh9WAwUkHsJ4ZtE6Dn+rPEDJkW9e9ytbiYrSzpJyKWrtrY 6/sSoIRVp46KeCgdha94UpqFDXJw6I9S1xOpSnQFpsEvG7j4ozyIJkAD1D5+9NLzJFYn Z+pg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c31-20020a634e1f000000b00553ced07d17si2069996pgb.123.2023.07.18.14.18.27; Tue, 18 Jul 2023 14:18:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230466AbjGRVOW (ORCPT + 99 others); Tue, 18 Jul 2023 17:14:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38378 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229510AbjGRVOV (ORCPT ); Tue, 18 Jul 2023 17:14:21 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F4A6C0; Tue, 18 Jul 2023 14:14:19 -0700 (PDT) X-QQ-mid: bizesmtp76t1689714848tywoz5oa Received: from linux-lab-host.localdomain ( [119.123.130.39]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 19 Jul 2023 05:14:07 +0800 (CST) X-QQ-SSF: 01200000000000D0X000000A0000000 X-QQ-FEAT: tJPajVdBfNIK2jxArdUWYFT16jn6ztkWRncwJYA/LCJCGKduhgveUNIZLG4JM n2oXYzi9kWKFTKTs66un9clianapv6W7HqIAE3p9mJvLcb2yRSJYREt+J04+h2Tbj8FRt66 XqqfSoAIxuRyxtOWChZqbONtmAf0R9vp041dPA0/5wFaHxSE+OE3fEbaA1lEAc3/x8fU9IB 9bBZUiTMU9XdJy+Clz/WobmhLn//ADk+ZKbcXG8+FhQB9LVNOfRkWJB2PtnMwZq2Hr5RJ7X HooTWAdGrYAP7eGfD2NAzaosBmpLE/P4gARAo6Pm7rzkP9i7ZwPSl/7/ukTdU/4HexqkeCg jeg24Wq3PI6R352t53XZSSli+8EbjgKgCqeVy93AovVbfa2CJfOOu/NiGcPriOACoXIsX62 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 12934479316635104382 From: Zhangjin Wu To: w@1wt.eu Cc: thomas@t-8ch.de, arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Th?= =?utf-8?q?omas_Wei=C3=9Fschuh?= Subject: [PATCH v1 4/8] selftests/nolibc: add extra config file customize support Date: Wed, 19 Jul 2023 05:14:07 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771794722166725382 X-GMAIL-MSGID: 1771794722166725382 The default DEFCONFIG_ may not always work for all architectures, some architectures require to add extra kernel config options, this adds a new 'extconfig' target for this requirement. It allows to customize extra kernel config options via the common common.config and the architecture specific .config, at last trigger 'allnoconfig' to let them take effect with missing config options as disabled. The scripts/kconfig/merge_config.sh tool is used to merge the extra config files. Suggested-by: Thomas Weißschuh Link: https://lore.kernel.org/lkml/67eb70d4-c9ff-4afc-bac7-7f36cc2c81bc@t-8ch.de/ Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index f42adef87e12..08a5ca5f418b 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -39,6 +39,9 @@ DEFCONFIG_s390 = defconfig DEFCONFIG_loongarch = defconfig DEFCONFIG = $(DEFCONFIG_$(ARCH)) +# extra kernel config files under configs/, include common + architecture specific +EXTCONFIG = common.config $(ARCH).config + # optional tests to run (default = all) TEST = @@ -162,6 +165,10 @@ initramfs: nolibc-test defconfig: $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) mrproper $(DEFCONFIG) prepare +extconfig: + $(Q)$(srctree)/scripts/kconfig/merge_config.sh -O "$(srctree)" -m "$(srctree)/.config" $(foreach c,$(EXTCONFIG),$(wildcard $(CURDIR)/configs/$c)) + $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) KCONFIG_ALLCONFIG="$(srctree)/.config" allnoconfig + kernel: initramfs $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) $(IMAGE_NAME) CONFIG_INITRAMFS_SOURCE=$(CURDIR)/initramfs From patchwork Tue Jul 18 21:15:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 122235 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2018198vqt; Tue, 18 Jul 2023 14:25:30 -0700 (PDT) X-Google-Smtp-Source: APBJJlEPaBdUsQBEYfqY9/J4O/mqlo4LOf9YAZyGfKEqQz2PahlYR+4R0oTsLk37EtSOejHJoujn X-Received: by 2002:a17:907:d24:b0:98e:3dac:6260 with SMTP id gn36-20020a1709070d2400b0098e3dac6260mr414957ejc.13.1689715530093; Tue, 18 Jul 2023 14:25:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689715530; cv=none; d=google.com; s=arc-20160816; b=BOlo62rOwRkxlf1YpJdLRbrs2pO1SffB2T33+/hXWsTGrda1m+/pDvDjqB1+vBILTm 0dzn62BkImBGTQMXvTgHrjSn6a1aumyk6cb2PqSP8OfVKKje83/p+fOvJ9AoiJjuX8og ks4Kcu8Lp/3qSbtpqSNrtpiBHuI/ucX0YP/q3t0hOk8+1c7IapuGlF9ljCgQB1pWyHY0 3MsresSihQ1c9mRKqORpG+4mjRN/kC1ex5UkFrNVeuT1C+PsnJ+YgOGaf5YzixZkzHvd fWm4WYQ8yqHsmgGunvsZgfCGB+L+PayOiZOxH0/sDUByBs3wza+1QgMIxbb123Jd4YkT zePA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=SqZ8ZUJLgpR/iZX2YgbtjNOvIKpdGdKk6JZJTb0tIIQ=; fh=LUnDCxFG3oyWlcYTkiNww5x4+0V5pkm51/GfDl61ZDU=; b=ZzKJkbP6mPeqJ0XzfAwc5FgqUJ7e9V4l1zkNyg5sATjb/6iTnVZE0YfFG+ce5eEVEa GuS5AsUCszRjll2v5uXtN2V+WQsU0syfJrJxKqPxowLf8wB2M+O2v6Kv9R75ekznVUgc 64GpkhZXf8DiNjBqyXi+OfGMPncJxXvYeWATHmDYDYUSIJkMQnIInLXH8oUgjqZfkU0L kQDZSI1pnrKu7kA56MrDXPRH95w3hiQrkYB5jXvAr1mlNxP6wp5PZRpbhW3vy3L2ztMU Idctnba3+6Wma9hr1stdVHeOikXs+1J1suz74KW42Fv9E4Hk2uTXL4JmO/kZ3Hzmut7G K/5g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g7-20020a17090669c700b00992bbb918dfsi1591137ejs.173.2023.07.18.14.25.05; Tue, 18 Jul 2023 14:25:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231246AbjGRVP1 (ORCPT + 99 others); Tue, 18 Jul 2023 17:15:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229510AbjGRVP0 (ORCPT ); Tue, 18 Jul 2023 17:15:26 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8121EC0; Tue, 18 Jul 2023 14:15:24 -0700 (PDT) X-QQ-mid: bizesmtp91t1689714915t194m5qj Received: from linux-lab-host.localdomain ( [119.123.130.39]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 19 Jul 2023 05:15:13 +0800 (CST) X-QQ-SSF: 01200000000000D0X000000A0000000 X-QQ-FEAT: lO87fmWkX3FnwSGm+p0pup/4ktDW2xqng3XU6uxahpZJpMrHSZkTO/ZQMQKyN UPuxfSq2bT+YWZH8/JoUGxD+9G4acuQLNRp+qxc//cgvPEs5ciLw66XWiRK6yOZO6GK+pdC VqNLE6cAOhHSErPFNvNUtD8uSfxg5uNMNKGRb04urZdjpxUUlDI29ZJLnhZVDBM5IkBkPWt +l7wWNU3VvOqy8p7rVML4Z9szsWyS3l+Q+p1RflMALejBKs/W5+/i245VHuVLToacNizW7U OOtveNPOw3Gs2p8xqw6UM1mgxuYPsoWt9ewH6BzFJdYm4IsXviKAfbpEUPXGalUxPpebOlI C4uyKdE7KancNwnMomkEL3dSAbDJjgSTgB/WASQ8BOJwBj9PIREimeXPGB7cw== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 5940336848902200637 From: Zhangjin Wu To: w@1wt.eu Cc: thomas@t-8ch.de, arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v1 5/8] selftests/nolibc: add XARCH and ARCH mapping support Date: Wed, 19 Jul 2023 05:15:13 +0800 Message-Id: <90c1d88dabf73e100dc840965fbdfe3ad5dc550f.1689713175.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771795151801829755 X-GMAIL-MSGID: 1771795151801829755 To test the architectures not directly supported by kernel, let's add a new XARCH as our own test input and map between XARCH and ARCH to make sure pass a right ARCH to kernel for a XARCH input and also configure a default XARCH for ARCH. ARCH is a subset of XARCH, to test more architectures than the ARCH variable directly supported by kernel, the old architecture specific variables used by our test are converted to use XARCH instead of ARCH. Suggested-by: Willy Tarreau Link: https://lore.kernel.org/lkml/20230702171715.GD16233@1wt.eu/ Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 34 +++++++++++++++---------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 08a5ca5f418b..b17a82efe6de 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -14,6 +14,13 @@ include $(srctree)/scripts/subarch.include ARCH = $(SUBARCH) endif +# XARCH and ARCH mapping +# XARCH is specified by user +XARCH ?= $(or $(XARCH_$(ARCH)),$(ARCH)) + +# ARCH is supported by kernel +ARCH := $(or $(ARCH_$(XARCH)),$(XARCH)) + # kernel image names by architecture IMAGE_i386 = arch/x86/boot/bzImage IMAGE_x86_64 = arch/x86/boot/bzImage @@ -24,7 +31,7 @@ IMAGE_mips = vmlinuz IMAGE_riscv = arch/riscv/boot/Image IMAGE_s390 = arch/s390/boot/bzImage IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi -IMAGE = $(IMAGE_$(ARCH)) +IMAGE = $(IMAGE_$(XARCH)) IMAGE_NAME = $(notdir $(IMAGE)) # default kernel configurations that appear to be usable @@ -37,10 +44,10 @@ DEFCONFIG_mips = malta_defconfig DEFCONFIG_riscv = defconfig DEFCONFIG_s390 = defconfig DEFCONFIG_loongarch = defconfig -DEFCONFIG = $(DEFCONFIG_$(ARCH)) +DEFCONFIG = $(DEFCONFIG_$(XARCH)) # extra kernel config files under configs/, include common + architecture specific -EXTCONFIG = common.config $(ARCH).config +EXTCONFIG = common.config $(XARCH).config # optional tests to run (default = all) TEST = @@ -55,7 +62,7 @@ QEMU_ARCH_mips = mipsel # works with malta_defconfig QEMU_ARCH_riscv = riscv64 QEMU_ARCH_s390 = s390x QEMU_ARCH_loongarch = loongarch64 -QEMU_ARCH = $(QEMU_ARCH_$(ARCH)) +QEMU_ARCH = $(QEMU_ARCH_$(XARCH)) # QEMU_ARGS : some arch-specific args to pass to qemu QEMU_ARGS_i386 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)" @@ -67,7 +74,7 @@ QEMU_ARGS_mips = -M malta -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_riscv = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_s390 = -M s390-ccw-virtio -m 1G -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_loongarch = -M virt -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" -QEMU_ARGS = $(QEMU_ARGS_$(ARCH)) $(QEMU_ARGS_EXTRA) +QEMU_ARGS = $(QEMU_ARGS_$(XARCH)) $(QEMU_ARGS_EXTRA) # OUTPUT is only set when run from the main makefile, otherwise # it defaults to this nolibc directory. @@ -84,7 +91,7 @@ CFLAGS_mips = -EL CFLAGS_STACKPROTECTOR ?= $(call cc-option,-mstack-protector-guard=global $(call cc-option,-fstack-protector-all)) CFLAGS ?= -Os -fno-ident -fno-asynchronous-unwind-tables -std=c89 \ $(call cc-option,-fno-stack-protector) \ - $(CFLAGS_$(ARCH)) $(CFLAGS_STACKPROTECTOR) + $(CFLAGS_$(XARCH)) $(CFLAGS_STACKPROTECTOR) LDFLAGS := -s REPORT ?= awk '/\[OK\][\r]*$$/{p++} /\[FAIL\][\r]*$$/{if (!f) printf("\n"); f++; print;} /\[SKIPPED\][\r]*$$/{s++} \ @@ -99,24 +106,25 @@ help: @echo " sysroot create the nolibc sysroot here (uses \$$ARCH)" @echo " nolibc-test build the executable (uses \$$CC and \$$CROSS_COMPILE)" @echo " libc-test build an executable using the compiler's default libc instead" - @echo " run-user runs the executable under QEMU (uses \$$ARCH, \$$TEST)" + @echo " run-user runs the executable under QEMU (uses \$$XARCH, \$$TEST)" @echo " initramfs prepare the initramfs with nolibc-test" - @echo " defconfig create a fresh new default config (uses \$$ARCH)" - @echo " kernel (re)build the kernel with the initramfs (uses \$$ARCH)" - @echo " run runs the kernel in QEMU after building it (uses \$$ARCH, \$$TEST)" - @echo " rerun runs a previously prebuilt kernel in QEMU (uses \$$ARCH, \$$TEST)" + @echo " defconfig create a fresh new default config (uses \$$XARCH)" + @echo " kernel (re)build the kernel with the initramfs (uses \$$XARCH)" + @echo " run runs the kernel in QEMU after building it (uses \$$XARCH, \$$TEST)" + @echo " rerun runs a previously prebuilt kernel in QEMU (uses \$$XARCH, \$$TEST)" @echo " clean clean the sysroot, initramfs, build and output files" @echo "" @echo "The output file is \"run.out\". Test ranges may be passed using \$$TEST." @echo "" @echo "Currently using the following variables:" @echo " ARCH = $(ARCH)" + @echo " XARCH = $(XARCH)" @echo " CROSS_COMPILE = $(CROSS_COMPILE)" @echo " CC = $(CC)" @echo " OUTPUT = $(OUTPUT)" @echo " TEST = $(TEST)" - @echo " QEMU_ARCH = $(if $(QEMU_ARCH),$(QEMU_ARCH),UNKNOWN_ARCH) [determined from \$$ARCH]" - @echo " IMAGE_NAME = $(if $(IMAGE_NAME),$(IMAGE_NAME),UNKNOWN_ARCH) [determined from \$$ARCH]" + @echo " QEMU_ARCH = $(if $(QEMU_ARCH),$(QEMU_ARCH),UNKNOWN_ARCH) [determined from \$$XARCH]" + @echo " IMAGE_NAME = $(if $(IMAGE_NAME),$(IMAGE_NAME),UNKNOWN_ARCH) [determined from \$$XARCH]" @echo "" all: run From patchwork Tue Jul 18 21:16:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 122232 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2017923vqt; Tue, 18 Jul 2023 14:24:50 -0700 (PDT) X-Google-Smtp-Source: APBJJlEIHV7wlJcIjzdz+Z1bo09wI3qLwAA5/DwZmHbEtxx5KYVr77HjqHQ6sDsjMN+NiHUIakPM X-Received: by 2002:a05:6358:5e1d:b0:132:f2dc:e961 with SMTP id q29-20020a0563585e1d00b00132f2dce961mr345007rwn.10.1689715490517; Tue, 18 Jul 2023 14:24:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689715490; cv=none; d=google.com; s=arc-20160816; b=ZpjyYqqmse5hg2aT2kIaUe2la4W/gt37CSpLQpgew3Tw+FSxptqVveWzjL4nGH+fZh H8zgeYm1oFCAehpU6IXGIceS/V2J/4D1jFyhy6A/nhaDIWwrYEXdJfGGKWaZP9Ifc5eq +wr+o7GlLmKt7mPZJJF3nIIPuLwjhxDzNuGKnstqAM/5DV3bVZlpeUz3dyfPO53g/U3R vpf1gfRtPXlOUnBrf/RSNqWUpKjz4L6G05DfOrCrjcrMAZFSkSGztKJ16Dp0VYclwwF2 8ud+PCxkmLQvqHMpWtmehVNaEMsj9ujtiCuKoz6i1H21E9xYR7ZXwpugBwxowRA1xCkG 7Txw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=fhEhsf/aVhXGmALifm+beabZp19epvdB3LPhsKrwBrM=; fh=LUnDCxFG3oyWlcYTkiNww5x4+0V5pkm51/GfDl61ZDU=; b=sjjhtT6iPeMlKElHrSH9XcCQLtHfqMt6TRL7ReZFUWJAnpt/OrhrvyI74aS4Mi08rE 31YalXMBZhDUyjdVOEm9Fm/xeAzaDyRkJqkL7Nl+hRfQips0TodIdERf0OYyd0vEWug3 vDcKvCPmtUZrTq6aDGXR7Pw5IAYMN9NeAllM/zIVKUAWOBwCR03nr7+cc4akd2EtciR6 fAU57NDkJ8XTrcj2UbSTY+J1xRdfzd1WEbtBbX8cP4x0Idq9aKXYEzaPh2l/h8fkp5o6 uUK5dNE2T420GdBGNY0SfAuRF8xHVPzKwsw9cLb/r8rXkQkU+7MHYeWK05Id+lU54Fmm Wbkg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d71-20020a63364a000000b0053070cb6da8si2121911pga.99.2023.07.18.14.24.36; Tue, 18 Jul 2023 14:24:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231302AbjGRVQg (ORCPT + 99 others); Tue, 18 Jul 2023 17:16:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39252 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231276AbjGRVQd (ORCPT ); Tue, 18 Jul 2023 17:16:33 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DB0AFC0; Tue, 18 Jul 2023 14:16:30 -0700 (PDT) X-QQ-mid: bizesmtp64t1689714981twgbl5jf Received: from linux-lab-host.localdomain ( [119.123.130.39]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 19 Jul 2023 05:16:20 +0800 (CST) X-QQ-SSF: 01200000000000D0X000000A0000000 X-QQ-FEAT: rZJGTgY0+YMsNn0tiH5GxXHDHMTndtl7NbvdEtTMLGzjdqSAfitYAYhrVd6EZ baHRqA5DNH5svwEJ5bD3QJG0h66n7aQdSH/X3KBDUIJ22MhRZuf16kRymoZYYB+tEkFZ+/y DJencGX8HQllTd8CI3W50ssf6GJFjtKjYnRQvEuoxGFPASGko1jyo9h2aMj1pHl2bfJ2COI jlkdCwk7VOkbmjTTKPUV37SfynaULuvrG/R198MIx9wVQbPPjuPvtUm69ctskRY1yFwiQs6 PECDHee3muS9yLaSPb4QAjN0dTw5f9Chxtqk8/MVZJFnspIGcNQSUIGZq2E2u2Ub8U26Ogp Jb758x18DEVk5zMFBFSuIwYhhkfR/HYj7seXroVmVn2fxBL+DxHeS0C/kALaO9+gxpLlUG4 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 8636731950875008413 From: Zhangjin Wu To: w@1wt.eu Cc: thomas@t-8ch.de, arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v1 6/8] selftests/nolibc: add test support for powerpc Date: Wed, 19 Jul 2023 05:16:19 +0800 Message-Id: <548df83f58d7d6e2f9278b05239dd57501aa3603.1689713175.git.falcon@tinylab.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771795110469066357 X-GMAIL-MSGID: 1771795110469066357 The default qemu-system-ppc g3beige machine [1] is used to run 32-bit powerpc kernel. The pmac32_defconfig is used with extra PMACZILOG console options to enable normal print. Note, zImage doesn't boot due to "qemu-system-ppc: Some ROM regions are overlapping" error, so, vmlinux is used instead. [1]: https://qemu.readthedocs.io/en/latest/system/ppc/powermac.html Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 4 ++++ tools/testing/selftests/nolibc/configs/powerpc.config | 3 +++ 2 files changed, 7 insertions(+) create mode 100644 tools/testing/selftests/nolibc/configs/powerpc.config diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index b17a82efe6de..9c375fab84e5 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -28,6 +28,7 @@ IMAGE_x86 = arch/x86/boot/bzImage IMAGE_arm64 = arch/arm64/boot/Image IMAGE_arm = arch/arm/boot/zImage IMAGE_mips = vmlinuz +IMAGE_powerpc = vmlinux IMAGE_riscv = arch/riscv/boot/Image IMAGE_s390 = arch/s390/boot/bzImage IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi @@ -41,6 +42,7 @@ DEFCONFIG_x86 = defconfig DEFCONFIG_arm64 = defconfig DEFCONFIG_arm = multi_v7_defconfig DEFCONFIG_mips = malta_defconfig +DEFCONFIG_powerpc = pmac32_defconfig DEFCONFIG_riscv = defconfig DEFCONFIG_s390 = defconfig DEFCONFIG_loongarch = defconfig @@ -59,6 +61,7 @@ QEMU_ARCH_x86 = x86_64 QEMU_ARCH_arm64 = aarch64 QEMU_ARCH_arm = arm QEMU_ARCH_mips = mipsel # works with malta_defconfig +QEMU_ARCH_powerpc = ppc QEMU_ARCH_riscv = riscv64 QEMU_ARCH_s390 = s390x QEMU_ARCH_loongarch = loongarch64 @@ -71,6 +74,7 @@ QEMU_ARGS_x86 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $( QEMU_ARGS_arm64 = -M virt -cpu cortex-a53 -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_arm = -M virt -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_mips = -M malta -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_powerpc = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_riscv = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_s390 = -M s390-ccw-virtio -m 1G -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_loongarch = -M virt -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" diff --git a/tools/testing/selftests/nolibc/configs/powerpc.config b/tools/testing/selftests/nolibc/configs/powerpc.config new file mode 100644 index 000000000000..b1975f8253f7 --- /dev/null +++ b/tools/testing/selftests/nolibc/configs/powerpc.config @@ -0,0 +1,3 @@ +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y From patchwork Tue Jul 18 21:17:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 122243 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2018724vqt; Tue, 18 Jul 2023 14:26:35 -0700 (PDT) X-Google-Smtp-Source: APBJJlHLQeUa347byULHotTkqR/dQVKsc1X1FHGvXlAiI0WEEFwTmDNFsHmSmSonfprzMTMZmjTl X-Received: by 2002:a17:907:7f23:b0:992:9d41:875b with SMTP id qf35-20020a1709077f2300b009929d41875bmr933640ejc.32.1689715595562; Tue, 18 Jul 2023 14:26:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689715595; cv=none; d=google.com; s=arc-20160816; b=Cbs+LYxBlxs/Droly/vchkRjakNqNldRQ2Ed69FsN6EzJMEJ8uXgXSvGpfWgNB8Ajr Ck7X+32/3JCOnGt9pPXdIm60c1gfmWYDkXQjH0DJ/RX7HgX1nUZbt4SnwYwKAELanACj 6A2g9NOUt+OkvhIsGZnHXSDTOfsqrnNJwuOQNnTkdduagoiJf3HWPYVTU9LbKaGc5b+0 aVKH45CdafnG5F6iYbjJLIB/JaEsuG5OEfn0jjGBmdiAuTmLa/urgirBlr/IqT7HqLFS McbjDNSveipmHMAH/KA6T5gdomPTBQNiOpGB8hh/TM328z9DY482h/I6BU4r4keQxelk AhPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=Z0IZXD73mVCk8zJwIQNKhiaXkmrMVDHibFmhFvJ6amM=; fh=LUnDCxFG3oyWlcYTkiNww5x4+0V5pkm51/GfDl61ZDU=; b=UpSJa4pJZVsaRIZ66TLm+JMYSvz4zFYB953ekJtVcASw9mpQETZ2rfbQFm/PNQvCF8 GSynNW1dZ+A3nkZsJ2lXT/vQDWCYriIF7vDm8zWnSZ7B4DuEr8PA0bYGeqL8b5AI0QVt h4g7loLKXYbOjA0O0bbd8Eh5MpgKcEw8FZjAgZzqcX8ITm2gls0603ICVrFm249n7E1g FDQPkdzeNr1zoRR8RKTWt24m2CwFekYtLX3U2xxUpG5qlIfkPyUbHaCytHlDreqmmRx1 jjwYKKQJkHXazLRRQjJk9syj2igBOgBLZz+PCHzHaVJ4wfw+39wlJCshqUQRFsoMLZJY l9qw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g7-20020a17090669c700b00992bbb918dfsi1591137ejs.173.2023.07.18.14.26.07; Tue, 18 Jul 2023 14:26:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231295AbjGRVRk (ORCPT + 99 others); Tue, 18 Jul 2023 17:17:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40146 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229510AbjGRVRj (ORCPT ); Tue, 18 Jul 2023 17:17:39 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1CB69C0; Tue, 18 Jul 2023 14:17:36 -0700 (PDT) X-QQ-mid: bizesmtp63t1689715047trdiu2ha Received: from linux-lab-host.localdomain ( [119.123.130.39]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 19 Jul 2023 05:17:26 +0800 (CST) X-QQ-SSF: 00200000000000D0X000000A0000000 X-QQ-FEAT: dS+JUNSIibflfvQUqHphixHe9mxdIAUVUxmHwzGtcQgITEbA7xfHe3zzgA1HA xRrNTac7cs4ZtM0o+4x3EOE9R4Qb0zWh+NO9OxqzotIpkzVAf4+21FIrDBGK7Yiwgco6rh8 2m0sRNggyK3JBscnUP3S7HE8nsG3j475H3wxR38WjWv3Qx6MMNWMX0rUg1EgcT+0ffFlwe1 ewuJreu66wiUwG1w8G9FKsoLkmb/USYlSbryqK0M5r4QPvVJdHqoWBors3ltLorWzlW73OQ SdLXm57yRYmK6Zqm7VTl+hQXBeiAWft1bR6ECWtxoy5lgSV5ROcm47X2o2TeoiXMHaJ16BO cdLZ4eBmDX46qINKj9cdPHaZGbuuUdniiq/QHpxrCXDf3dyk/q7K/+d0b0jeSHU/D3kKaaE X-QQ-GoodBg: 0 X-BIZMAIL-ID: 15862837177121662062 From: Zhangjin Wu To: w@1wt.eu Cc: thomas@t-8ch.de, arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v1 7/8] selftests/nolibc: add test support for powerpc64le Date: Wed, 19 Jul 2023 05:17:26 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771795220178815065 X-GMAIL-MSGID: 1771795220178815065 Here adds test support for little endian 64-bit PowerPC. The powernv machine of qemu-system-ppc64le is used for there is just a working powernv_defconfig. As the document [1] shows: PowerNV (as Non-Virtualized) is the “bare metal” platform using the OPAL firmware. It runs Linux on IBM and OpenPOWER systems and it can be used as an hypervisor OS, running KVM guests, or simply as a host OS. [1]: https://qemu.readthedocs.io/en/latest/system/ppc/powernv.html Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 9c375fab84e5..fbdf7fd9bf96 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -19,6 +19,7 @@ endif XARCH ?= $(or $(XARCH_$(ARCH)),$(ARCH)) # ARCH is supported by kernel +ARCH_powerpc64le = powerpc ARCH := $(or $(ARCH_$(XARCH)),$(XARCH)) # kernel image names by architecture @@ -29,6 +30,7 @@ IMAGE_arm64 = arch/arm64/boot/Image IMAGE_arm = arch/arm/boot/zImage IMAGE_mips = vmlinuz IMAGE_powerpc = vmlinux +IMAGE_powerpc64le= arch/powerpc/boot/zImage IMAGE_riscv = arch/riscv/boot/Image IMAGE_s390 = arch/s390/boot/bzImage IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi @@ -43,6 +45,7 @@ DEFCONFIG_arm64 = defconfig DEFCONFIG_arm = multi_v7_defconfig DEFCONFIG_mips = malta_defconfig DEFCONFIG_powerpc = pmac32_defconfig +DEFCONFIG_powerpc64le= powernv_defconfig DEFCONFIG_riscv = defconfig DEFCONFIG_s390 = defconfig DEFCONFIG_loongarch = defconfig @@ -62,6 +65,7 @@ QEMU_ARCH_arm64 = aarch64 QEMU_ARCH_arm = arm QEMU_ARCH_mips = mipsel # works with malta_defconfig QEMU_ARCH_powerpc = ppc +QEMU_ARCH_powerpc64le= ppc64le QEMU_ARCH_riscv = riscv64 QEMU_ARCH_s390 = s390x QEMU_ARCH_loongarch = loongarch64 @@ -75,6 +79,7 @@ QEMU_ARGS_arm64 = -M virt -cpu cortex-a53 -append "panic=-1 $(TEST:%=NOLIBC QEMU_ARGS_arm = -M virt -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_mips = -M malta -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_powerpc = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_powerpc64le= -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_riscv = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_s390 = -M s390-ccw-virtio -m 1G -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_loongarch = -M virt -append "console=ttyS0,115200 panic=-1 $(TEST:%=NOLIBC_TEST=%)" @@ -90,6 +95,7 @@ else Q=@ endif +CFLAGS_powerpc64le = -m64 -mlittle-endian -Wl,-EL,-melf64ppc CFLAGS_s390 = -m64 CFLAGS_mips = -EL CFLAGS_STACKPROTECTOR ?= $(call cc-option,-mstack-protector-guard=global $(call cc-option,-fstack-protector-all)) From patchwork Tue Jul 18 21:18:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 122256 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2021266vqt; Tue, 18 Jul 2023 14:32:13 -0700 (PDT) X-Google-Smtp-Source: APBJJlFdzfdbhs8J1kwA3zyYBSFQ7MRSpIlpGS8HbjOZoFOQBNPyeY9+Doaqt7UktViRHXLpAJHE X-Received: by 2002:aa7:d8c7:0:b0:51b:dcb4:a9b3 with SMTP id k7-20020aa7d8c7000000b0051bdcb4a9b3mr879797eds.24.1689715933206; Tue, 18 Jul 2023 14:32:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689715933; cv=none; d=google.com; s=arc-20160816; b=mWUnSixnvRUJAM1nfFliMKQmpE1Q3volDeyb4mT4pKtGn7SVHZlqIjbfwH/bHgu9Cl tkWpsUxczISI2uHza9V2Uu7cO8CajmaQcq1AAALEg7gXA5usuoMGP48VHLwhuVLcvgjc LqUIOSC1h69fzAz73K85MwOd77zx9zFcHkwKyg2/oGqcOrHYSBNCahtyQNcez/oHEET7 9XfUAaoy6VxT059pc1smz5gC0YRbKR9ZJ9hgh2aAXlYbeUNPP5aXbnUHfEEFNf4XUtjS GQY3c2cZUTWDd0WDXJzuC751ZZanMzCPcmqhb16j/KoyDOLbk3v9MtK58M/ReNRnFuLd qIkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=/tz5f8P28pxOGOVzndhM3pfLGf+vUdrOZPrnJvBvyV4=; fh=LUnDCxFG3oyWlcYTkiNww5x4+0V5pkm51/GfDl61ZDU=; b=KzKLS7SqeL0Y+pRMEE3aDDemoAjtOU4JTI0RiMrzbiJAwvHO2UjWaKj5dbnycd4CPS 0dfYNUNG8oS1gcGMM420S6g7EaCuvW6k0zmePSE28yT//Oj5XIAVGcO0mt73pTkENA7T RmslZEwk2+pgZxJFUk13x6HsobK2QWjrH5AclPIP+Zq2V6a53WLXZqWYpVVEHWmZmN7U o6vRLpXIX5gBRSODWDteFVbpUwWgYwN/PsegTcSR2qThxVJG9dj/rKZa+0vCoNg1o4v4 WW3YAH19o/9q/ruO37xitBw/vwSozkSLm1C1GpAHBv3xmeStovJnhuk34KMqoHU1kIvo +zBw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j1-20020aa7ca41000000b0051dd50a5a08si1767085edt.229.2023.07.18.14.31.49; Tue, 18 Jul 2023 14:32:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231316AbjGRVS6 (ORCPT + 99 others); Tue, 18 Jul 2023 17:18:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231340AbjGRVSt (ORCPT ); Tue, 18 Jul 2023 17:18:49 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91D4A1992; Tue, 18 Jul 2023 14:18:43 -0700 (PDT) X-QQ-mid: bizesmtp62t1689715113t4aqmkoo Received: from linux-lab-host.localdomain ( [119.123.130.39]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 19 Jul 2023 05:18:32 +0800 (CST) X-QQ-SSF: 00200000000000D0X000B00A0000000 X-QQ-FEAT: eTp2eCgHrZnVchQBQHtIq1r0Chl0Y2QbztCX0TuLdQWRfW6TBfD0oOxr2ZGUl yeDiNZSVENj5aynfdi2NOfwTm0jEDkw5naUuGrqduIBj7DrVxkjq7hzmqe466uOcMmQ4Pwu UheYGug3IvwmwqNhO0f54gtD5CS3BqKxSYZsenHMTFf/s4z03vCgj7ZUqzXY8eRywSO+OWS I2bbHl1rsY8vhO5wagJxT4zU80r57W2C8xG3Prz2vxWKEQyWYDNwLPmwlY/0oa7JPlIi6Ct NLQlRXtazcamKO4G51OA+NdQE9LFeIj3+wi2vuM0ZaQc3OwR6Tzwjo44z5oybS/0jggoEeX c84ZB+ZfpFDm5HG45ZE7Np6rreJ6+cp9ChpV7qRly3xGJeCnGVwbYqt6fpZ1zrfZJofeqbY eLYGk1HeKtk= X-QQ-GoodBg: 0 X-BIZMAIL-ID: 11777367648574905451 From: Zhangjin Wu To: w@1wt.eu Cc: thomas@t-8ch.de, arnd@arndb.de, falcon@tinylab.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: [PATCH v1 8/8] selftests/nolibc: add test support for powerpc64 Date: Wed, 19 Jul 2023 05:18:32 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-1 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771795574633143566 X-GMAIL-MSGID: 1771795574633143566 Here adds test support for big endian 64-bit PowerPC. The powernv machine of qemu-system-ppc64 is used with powernv_be_defconfig. As the document [1] shows: PowerNV (as Non-Virtualized) is the “bare metal” platform using the OPAL firmware. It runs Linux on IBM and OpenPOWER systems and it can be used as an hypervisor OS, running KVM guests, or simply as a host OS. Note, differs from little endian 64-bit PowerPC, vmlinux is used instead of zImage, because big endian zImage [2] only boot on qemu with x-vof=on (added from qemu v7.0) and a fixup patch [3] for qemu v7.0.51: [1]: https://qemu.readthedocs.io/en/latest/system/ppc/powernv.html [2]: https://github.com/linuxppc/issues/issues/402 [3]: https://lore.kernel.org/qemu-devel/20220504065536.3534488-1-aik@ozlabs.ru/ Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index fbdf7fd9bf96..cced1d60ecf9 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -19,6 +19,7 @@ endif XARCH ?= $(or $(XARCH_$(ARCH)),$(ARCH)) # ARCH is supported by kernel +ARCH_powerpc64 = powerpc ARCH_powerpc64le = powerpc ARCH := $(or $(ARCH_$(XARCH)),$(XARCH)) @@ -30,6 +31,7 @@ IMAGE_arm64 = arch/arm64/boot/Image IMAGE_arm = arch/arm/boot/zImage IMAGE_mips = vmlinuz IMAGE_powerpc = vmlinux +IMAGE_powerpc64 = vmlinux IMAGE_powerpc64le= arch/powerpc/boot/zImage IMAGE_riscv = arch/riscv/boot/Image IMAGE_s390 = arch/s390/boot/bzImage @@ -45,6 +47,7 @@ DEFCONFIG_arm64 = defconfig DEFCONFIG_arm = multi_v7_defconfig DEFCONFIG_mips = malta_defconfig DEFCONFIG_powerpc = pmac32_defconfig +DEFCONFIG_powerpc64 = powernv_be_defconfig DEFCONFIG_powerpc64le= powernv_defconfig DEFCONFIG_riscv = defconfig DEFCONFIG_s390 = defconfig @@ -65,6 +68,7 @@ QEMU_ARCH_arm64 = aarch64 QEMU_ARCH_arm = arm QEMU_ARCH_mips = mipsel # works with malta_defconfig QEMU_ARCH_powerpc = ppc +QEMU_ARCH_powerpc64 = ppc64 QEMU_ARCH_powerpc64le= ppc64le QEMU_ARCH_riscv = riscv64 QEMU_ARCH_s390 = s390x @@ -79,6 +83,7 @@ QEMU_ARGS_arm64 = -M virt -cpu cortex-a53 -append "panic=-1 $(TEST:%=NOLIBC QEMU_ARGS_arm = -M virt -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_mips = -M malta -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_powerpc = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_powerpc64 = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_powerpc64le= -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_riscv = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_s390 = -M s390-ccw-virtio -m 1G -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" @@ -95,6 +100,7 @@ else Q=@ endif +CFLAGS_powerpc64 = -m64 -mbig-endian -mmultiple -Wl,-EB,-melf64ppc CFLAGS_powerpc64le = -m64 -mlittle-endian -Wl,-EL,-melf64ppc CFLAGS_s390 = -m64 CFLAGS_mips = -EL