From patchwork Tue Aug 1 19:37: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: 129464 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp2911962vqg; Tue, 1 Aug 2023 13:19:04 -0700 (PDT) X-Google-Smtp-Source: APBJJlGlQAN6E1oOnG4b8JBdSk4Hj6AfOquM8YCJy+P1CXHVnAZnyNK+LNKA3oOWvS8GFe1q1g8n X-Received: by 2002:a05:6a00:2d10:b0:682:37be:c9fe with SMTP id fa16-20020a056a002d1000b0068237bec9femr17614109pfb.10.1690921144705; Tue, 01 Aug 2023 13:19:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690921144; cv=none; d=google.com; s=arc-20160816; b=I9/XxN2a9aSG+JcCr1VwPD9YvZi5IZBjceL/P7Usmh+/rYMIVDCgUmpmW12pnmUUWW 0VhIuTaYtPkXNhhQmB8ApCrp5g5eIdTFxooqdXPSV/IS8ZK9kUvPh0crY9osjOFPlIgD uIBBMbM9FrJnP6LJ2u8c8mtqzog0q+JuZfvTuKU7KSMrCzq6eWTmCERmkaUlejRi7DdP l3K7dBQJACeKpCTWUKskWx5GrivqJ/B9pb5TfBuswHBlRmLXsS7jkI5xFf8VgyReoGXT YzcDgkxxtvZO/IToynR/Q2Zf7sv+occa9ucFoP89gCLTlUdPGD80rvu1RnO5gvEbhOUU q4Lg== 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=4iF19rOHF+69dx621YMhO/SVRlZCUao2mJkWNJSAy1w=; fh=7VEAlmh5C0HpP6zqTCNK3j6ZHP9gC5nJSc+EpvArsOo=; b=iXToIeFgjx7ltxjGIyXE4bKrUnvbzAcIa8PvksZVxyKHtwjYnAuUmsjGdgW9dRvhEL KLIQycbuQMQOunYL97beodiYNtjVtmUMV4Sa6Kcob/6GE5pmht2iglOB0Ca9MwJ4cNVn jcw9XXr2vM4hCM4LKfA1MK7aFk7G8Bc7Gif6M9OLiub5tejv7B0tQE0vSgQb1aYIb+/r 7lyfL92fys6JJogKnSahw9vzQb/dOGAPeF34iIvLuPP4jiv5MR1PrteEu6ziOcGvg0rw qH8owVC0x93V2rp8yA1zCPRyUBwbNAM7OKgkKVrVWU3a+i5YV4rzoQWrIWqX+tq+Gbdb DqdQ== 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 t33-20020a634461000000b00563b0cbe802si2067071pgk.109.2023.08.01.13.18.48; Tue, 01 Aug 2023 13:19:04 -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 S232512AbjHAThV (ORCPT + 99 others); Tue, 1 Aug 2023 15:37:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229597AbjHAThU (ORCPT ); Tue, 1 Aug 2023 15:37:20 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0510519A8; Tue, 1 Aug 2023 12:37:17 -0700 (PDT) X-QQ-mid: bizesmtp81t1690918628tr7frdws Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:37:07 +0800 (CST) X-QQ-SSF: 01200000002000E0X000B00A0000000 X-QQ-FEAT: nMuci6qhcePNZexNdfK8eOvqSccdPs48Lmb47GPqY3ATKs5rNzaOmthRr4FhU a+Fzqt4LawPRTY+gAR6cyr8QyAGnxd4oIx4YmBP7+SUYqdA4BKJ0jCGdaZ7impXQKNS4loo 0G3wEmFLZJ4Ey7E2iS2d+EaNnehStUo/O5X6NzodlLYW23V/AwcRH6TKzWE3UwT+hWxvdIp 9qypWJQohZxkZIvYzHKdY5Uvu29NOgQhTFsqvVanRQe6ohqyz2XzNHCioIj+0Pd7jrNXDYp VlrxPDMXXSZEdo11XvolKdQ8qru0gmbhUXIoJ8iRK/XNz6yOkkVPCF29WlBlQtY0jeEAN4D m0WkcMfCCTm4slW1iZ/qQzff2lyyyFqB5B9QhDyadDOxgd9bj71V/d+yUWA8uXCrPJiuMjQ X-QQ-GoodBg: 0 X-BIZMAIL-ID: 3387646506112095998 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH v4 01/12] tools/nolibc: add support for powerpc Date: Wed, 2 Aug 2023 03:37: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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=no 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: 1773059330227737489 X-GMAIL-MSGID: 1773059330227737489 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 match 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, it is smaller: /* 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 Like musl, Linux (arch/powerpc/include/asm/vdso/gettimeofday.h) uses the same method for do_syscall_2() too. Here applies the second method to get smaller size. [1]: https://man7.org/linux/man-pages/man2/syscall.2.html Reviewed-by: Thomas Weißschuh Signed-off-by: Zhangjin Wu --- tools/include/nolibc/arch-powerpc.h | 188 ++++++++++++++++++++++++++++ tools/include/nolibc/arch.h | 2 + 2 files changed, 190 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..caa943e1521a --- /dev/null +++ b/tools/include/nolibc/arch-powerpc.h @@ -0,0 +1,188 @@ +/* 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", "r12", "r11", "r10", "r9" + +#define my_syscall0(num) \ +({ \ + register long _ret __asm__ ("r3"); \ + register long _num __asm__ ("r0") = (num); \ + \ + __asm__ volatile ( \ + " sc\n" \ + " bns+ 1f\n" \ + " neg %0, %0\n" \ + "1:\n" \ + : "=r"(_ret), "+r"(_num) \ + : \ + : _NOLIBC_SYSCALL_CLOBBERLIST, "r8", "r7", "r6", "r5", "r4" \ + ); \ + _ret; \ +}) + +#define my_syscall1(num, arg1) \ +({ \ + register long _ret __asm__ ("r3"); \ + register long _num __asm__ ("r0") = (num); \ + register long _arg1 __asm__ ("r3") = (long)(arg1); \ + \ + __asm__ volatile ( \ + " sc\n" \ + " bns+ 1f\n" \ + " neg %0, %0\n" \ + "1:\n" \ + : "=r"(_ret), "+r"(_num) \ + : "0"(_arg1) \ + : _NOLIBC_SYSCALL_CLOBBERLIST, "r8", "r7", "r6", "r5", "r4" \ + ); \ + _ret; \ +}) + + +#define my_syscall2(num, arg1, arg2) \ +({ \ + register long _ret __asm__ ("r3"); \ + register long _num __asm__ ("r0") = (num); \ + register long _arg1 __asm__ ("r3") = (long)(arg1); \ + register long _arg2 __asm__ ("r4") = (long)(arg2); \ + \ + __asm__ volatile ( \ + " sc\n" \ + " bns+ 1f\n" \ + " neg %0, %0\n" \ + "1:\n" \ + : "=r"(_ret), "+r"(_num), "+r"(_arg2) \ + : "0"(_arg1) \ + : _NOLIBC_SYSCALL_CLOBBERLIST, "r8", "r7", "r6", "r5" \ + ); \ + _ret; \ +}) + + +#define my_syscall3(num, arg1, arg2, arg3) \ +({ \ + register long _ret __asm__ ("r3"); \ + register long _num __asm__ ("r0") = (num); \ + register long _arg1 __asm__ ("r3") = (long)(arg1); \ + register long _arg2 __asm__ ("r4") = (long)(arg2); \ + register long _arg3 __asm__ ("r5") = (long)(arg3); \ + \ + __asm__ volatile ( \ + " sc\n" \ + " bns+ 1f\n" \ + " neg %0, %0\n" \ + "1:\n" \ + : "=r"(_ret), "+r"(_num), "+r"(_arg2), "+r"(_arg3) \ + : "0"(_arg1) \ + : _NOLIBC_SYSCALL_CLOBBERLIST, "r8", "r7", "r6" \ + ); \ + _ret; \ +}) + + +#define my_syscall4(num, arg1, arg2, arg3, arg4) \ +({ \ + register long _ret __asm__ ("r3"); \ + register long _num __asm__ ("r0") = (num); \ + register long _arg1 __asm__ ("r3") = (long)(arg1); \ + register long _arg2 __asm__ ("r4") = (long)(arg2); \ + register long _arg3 __asm__ ("r5") = (long)(arg3); \ + register long _arg4 __asm__ ("r6") = (long)(arg4); \ + \ + __asm__ volatile ( \ + " sc\n" \ + " bns+ 1f\n" \ + " neg %0, %0\n" \ + "1:\n" \ + : "=r"(_ret), "+r"(_num), "+r"(_arg2), "+r"(_arg3), \ + "+r"(_arg4) \ + : "0"(_arg1) \ + : _NOLIBC_SYSCALL_CLOBBERLIST, "r8", "r7" \ + ); \ + _ret; \ +}) + + +#define my_syscall5(num, arg1, arg2, arg3, arg4, arg5) \ +({ \ + register long _ret __asm__ ("r3"); \ + register long _num __asm__ ("r0") = (num); \ + register long _arg1 __asm__ ("r3") = (long)(arg1); \ + register long _arg2 __asm__ ("r4") = (long)(arg2); \ + register long _arg3 __asm__ ("r5") = (long)(arg3); \ + register long _arg4 __asm__ ("r6") = (long)(arg4); \ + register long _arg5 __asm__ ("r7") = (long)(arg5); \ + \ + __asm__ volatile ( \ + " sc\n" \ + " bns+ 1f\n" \ + " neg %0, %0\n" \ + "1:\n" \ + : "=r"(_ret), "+r"(_num), "+r"(_arg2), "+r"(_arg3), \ + "+r"(_arg4), "+r"(_arg5) \ + : "0"(_arg1) \ + : _NOLIBC_SYSCALL_CLOBBERLIST, "r8" \ + ); \ + _ret; \ +}) + +#define my_syscall6(num, arg1, arg2, arg3, arg4, arg5, arg6) \ +({ \ + register long _ret __asm__ ("r3"); \ + register long _num __asm__ ("r0") = (num); \ + register long _arg1 __asm__ ("r3") = (long)(arg1); \ + register long _arg2 __asm__ ("r4") = (long)(arg2); \ + register long _arg3 __asm__ ("r5") = (long)(arg3); \ + register long _arg4 __asm__ ("r6") = (long)(arg4); \ + register long _arg5 __asm__ ("r7") = (long)(arg5); \ + register long _arg6 __asm__ ("r8") = (long)(arg6); \ + \ + __asm__ volatile ( \ + " sc\n" \ + " bns+ 1f\n" \ + " neg %0, %0\n" \ + "1:\n" \ + : "=r"(_ret), "+r"(_num), "+r"(_arg2), "+r"(_arg3), \ + "+r"(_arg4), "+r"(_arg5), "+r"(_arg6) \ + : "0"(_arg1) \ + : _NOLIBC_SYSCALL_CLOBBERLIST \ + ); \ + _ret; \ +}) + +/* 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 */ diff --git a/tools/include/nolibc/arch.h b/tools/include/nolibc/arch.h index 82b43935650f..e276fb0680af 100644 --- a/tools/include/nolibc/arch.h +++ b/tools/include/nolibc/arch.h @@ -25,6 +25,8 @@ #include "arch-aarch64.h" #elif defined(__mips__) && defined(_ABIO32) #include "arch-mips.h" +#elif defined(__powerpc__) +#include "arch-powerpc.h" #elif defined(__riscv) #include "arch-riscv.h" #elif defined(__s390x__) From patchwork Tue Aug 1 19:38:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 129465 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp2912107vqg; Tue, 1 Aug 2023 13:19:21 -0700 (PDT) X-Google-Smtp-Source: APBJJlEk98Y4Mw6Nm+7mnFLiQkzHUKgh3/Ifir3GdBZv5kQFaHaLO4w2tdfQWhUHdAyPgnaEIhWK X-Received: by 2002:a05:6a00:2d94:b0:682:7d8a:f887 with SMTP id fb20-20020a056a002d9400b006827d8af887mr14727128pfb.30.1690921160641; Tue, 01 Aug 2023 13:19:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690921160; cv=none; d=google.com; s=arc-20160816; b=NU6CR0lareGrawJgX97Wi4yWtgCL5TrLHA6cSEgackHM9h7xtcMXG1xWyp53rEtdcA EvBDPppOSkHNt6FjHiAka38J7Ul5WpUOYJDIqiq1Z4W1uvJ3fRCl+nKRL0qKnxwLiKjg SOj0jmQbj9hLclGjFznDCT3nlsVwmlvUqwzenllzMbZdBNY/BjOrz/wbC+L2jgHFoXYW Soxh9ZsPgxUAZEIsm9gi4N3auL4HJOtCGZQP5Gvvd2C57Bh1GmnLL1alSoHPJBcGcI/M cWoyvNNaPNoDEkLNlsCiL7IVroj+Jf3Mwrx0sOsTR1d/MmrlyZX7AfF1hdKoDyURydSR 5V1Q== 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=rj8V0ixGBWjisirqTZqgshVRWu3QCY5VAFC7+YwDslw=; fh=7VEAlmh5C0HpP6zqTCNK3j6ZHP9gC5nJSc+EpvArsOo=; b=bmi7W9hkoY3cELlsh3cbZk1yqwwH6MAhJIvQNiAfTxbwWCxmKj72tsCTPoGarYU9KZ jWIEbQkIHkXva5e9sckebUOVIeQJV6wwYK28Z5GnXyyKhT/8lWXvCgF0WNp7FOteYrUg 1ozsaEMd3B2fJ+PRZszDn2aQem31/JOVlPOzhX33ZKIiFqjlGO67OVEjFwvMB8RViv1Q Qo8m1+1HWUK4hT2B42a7/JVh09ax5I6x5mdk6uTXLe6HLg01N5VupbCAQRv9U8rW6zQn w3huevYTiXxh/FX5DOVM/qpo/aUV4cpi5NHQA2vI0Bm7isSLE7BPIMloypvuSq7jOxmM s6Jg== 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 f21-20020a056a0022d500b00680a955d325si6768000pfj.45.2023.08.01.13.19.04; Tue, 01 Aug 2023 13:19:20 -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 S232520AbjHATi1 (ORCPT + 99 others); Tue, 1 Aug 2023 15:38:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59506 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230335AbjHATiZ (ORCPT ); Tue, 1 Aug 2023 15:38:25 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ADD8419A8; Tue, 1 Aug 2023 12:38:23 -0700 (PDT) X-QQ-mid: bizesmtp81t1690918693tg2dq5ek Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:38:12 +0800 (CST) X-QQ-SSF: 01200000002000E0X000B00A0000000 X-QQ-FEAT: ILHsT53NKPj8ls9nBXhaMQdmUugA36bMela6yczSsq9f5iOfohgag2rYI/DM4 cX+y+nB9lugbsEcSFSzlkAkKr8S4Vlw1poG1xM3NW9j4VF3N5NYg25Gz/xPQK/Zjdu9rt+c W7IOsY1t2GanKBqRP49C9lmwsfGAT77Nbf/ceMWQPNDA1rOKRVq0LS5hlF5WLDobuoVGrZ7 0YiXICnjCO8JlfPm3jQn3/KfV/jXUFva6CjhP03G9wjAUtdXHBmK2/FzBkQ821QM/Dg98T3 9cqIyxUhQmIxEV/oLie5dGuVdim+euBiQ9ITptmtmzJ97A2YK4+zDyJwAVBVW3rO2r4wJCT YkuXu7MGXSmhPvG5NtshP49ua4TbfD72M5xpeZG7BzgyEHUhRpAWqEOyItFjg== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 12236267546790964810 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH v4 02/12] tools/nolibc: add support for powerpc64 Date: Wed, 2 Aug 2023 03:38:12 +0800 Message-Id: <6f9c496695b5d44a3a694abc571e183b80d9081d.1690916314.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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=no 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: 1773059346811102205 X-GMAIL-MSGID: 1773059346811102205 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. First, 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 Reviewed-by: Thomas Weißschuh 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 caa943e1521a..d783ed0b5dbd 100644 --- a/tools/include/nolibc/arch-powerpc.h +++ b/tools/include/nolibc/arch-powerpc.h @@ -175,6 +175,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 */ @@ -182,6 +195,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 Aug 1 19:39:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 129481 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f41:0:b0:3e4:2afc:c1 with SMTP id v1csp20204vqx; Tue, 1 Aug 2023 14:20:26 -0700 (PDT) X-Google-Smtp-Source: APBJJlERGjPgChEphLrK+7SynKkbF4iM2PBeZ8ksGo/++Njlbf+WUbOB1UywcJcgtn5PQ9VaPkuA X-Received: by 2002:ac2:53bb:0:b0:4f8:5472:7307 with SMTP id j27-20020ac253bb000000b004f854727307mr2723874lfh.31.1690924826107; Tue, 01 Aug 2023 14:20:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690924826; cv=none; d=google.com; s=arc-20160816; b=HrlXelZhqkk7mY+WTdkkVhKR7DdgwHGLP45jb8+sQnZtIOMIceQiddi3/ET/fkQZz+ 35vbP+ysD1jV1We2zWr95213BhW1jw46UWM9vWwN9E0/WP2pD1YONRXqnP/D7lZxycWe C8adQeORGSwjJvc3DC7W4Mecz9gkQat3BvbFKy7EFH5bq9rTofDKLVPO604zqdlaWJN1 Zu+GPRvG1F5OisXFBr4BkFR3jfpm9pTmVfLALT37sv0o1DWPNYnhRghOc+P9+lC8kMnc QhEBI7QFZBGFhM+FDIj2RNUaUWmx9xjpKSNc/2cBmDsV96KlpHCS+dPLT4eOvVwelAiP /tHQ== 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=LfBw16rgXlqTVhJXRHLU2/WxsL8K55ruQHvzhKrAjWI=; fh=xUlByBi+AOhlmUOP7Fsh4gyC+PRyawzp/HzGQQ0fKGA=; b=oZx9d7mPFrQ1hQIMlBk2ZyeAu0rBs9IrPnOV7uvCp/XQHNOTMud2zE53xEAY2DC2nh Se70nd0MM6Ct1pIe7IyeJi6I6IvM2dEQ3oXTgku1kKHFdnBD8ZYqzamUPsQc5CrFRiJN ix6zyKil5/LlUG5PN2fNiQa5ecAJE87wN3s3NbaIc+VaJwXI11vrCFsnWU+lj+ye5YnV H0NJSZdrJgEJ9pCRh4ufxf3ghigulMddzQabdBiOd2tIuIP/k4Y8pYcZaL6ifvzGu1CU DAyAxNTgZMLfYLiPYzYbEwK/L+pCDziHgecHd/4IvcuyGuPdNeZwisDH+Mtjrq3oB66f QYWQ== 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 o12-20020aa7d3cc000000b005223c394943si9162426edr.71.2023.08.01.14.20.01; Tue, 01 Aug 2023 14:20:25 -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 S229653AbjHATjb (ORCPT + 99 others); Tue, 1 Aug 2023 15:39:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60274 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231517AbjHATj3 (ORCPT ); Tue, 1 Aug 2023 15:39:29 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5348619A8; Tue, 1 Aug 2023 12:39:27 -0700 (PDT) X-QQ-mid: bizesmtp82t1690918758tdq8mq9o Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:39:17 +0800 (CST) X-QQ-SSF: 01200000002000E0X000B00A0000000 X-QQ-FEAT: D6RqbDSxuq47V5/O0pbAo//GjZY8tPkJDPm56ilbwVbuqUTvdeK45RzFqkM0Q KlzUVm0mvSANRZiFY/pk4AgC+392xKcWobxCOHq4xZhdAAEUHx/8H2B5+QowAaGRVrSdSJy T0IquIBWkJt2/dEwnf45XnkSFdVuNF1Wx2m9wreliQcI1wxdRr9N+1VbIyPtxPW3CyU3bCz /L/MA/eRdzdfS80LJhaaD/KNQTm+8CXjsL5V9SfQxMT5CHfSKOuBbCOVzSx4UG+Sidq/DIM q6gcP7jOJpKQIztrGBwt57kvX4S3PXduASWn2IK2zi5BVIO4xH9BIBVGyhi/9OAAr60hJEK qT4friMz9RjQbyxiovCRW/dstWz3sMr5XJNUnntWjuZwx96UBeVDEfplylR6CizeVU1KpE9 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 6478331743894401545 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu Subject: [PATCH v4 03/12] selftests/nolibc: fix up O= option support Date: Wed, 2 Aug 2023 03:39:17 +0800 Message-Id: <3daf2650a61e4605d68d5982ebd32e1edb7e6782.1690916314.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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no 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: 1773063190130327472 X-GMAIL-MSGID: 1773063190130327472 To avoid pollute the source code tree and avoid mrproper for every architecture switch, the O= argument must be supported. Both IMAGE and .config are from the building directory, let's use objtree instead of srctree for them. If no O= option specified, means building kernel in source code tree, objtree should be srctree in such case. Suggested-by: Willy Tarreau Link: https://lore.kernel.org/lkml/ZK0AB1OXH1s2xYsh@1wt.eu/ Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index f42adef87e12..f0bda0d28000 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -9,6 +9,9 @@ ifeq ($(srctree),) srctree := $(patsubst %/tools/testing/selftests/,%,$(dir $(CURDIR))) endif +# add objtree for O= argument, required by IMAGE and .config +objtree ?= $(srctree) + ifeq ($(ARCH),) include $(srctree)/scripts/subarch.include ARCH = $(SUBARCH) @@ -167,12 +170,12 @@ kernel: initramfs # run the tests after building the kernel run: kernel - $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(srctree)/$(IMAGE)" -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" + $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(objtree)/$(IMAGE)" -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" $(Q)$(REPORT) $(CURDIR)/run.out # re-run the tests from an existing kernel rerun: - $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(srctree)/$(IMAGE)" -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" + $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(objtree)/$(IMAGE)" -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" $(Q)$(REPORT) $(CURDIR)/run.out clean: From patchwork Tue Aug 1 19:40:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 129473 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6359:610b:b0:134:c3fc:3153 with SMTP id rz11csp50386rwb; Tue, 1 Aug 2023 13:47:08 -0700 (PDT) X-Google-Smtp-Source: APBJJlGJrH9+gDYq0VqSDsGRLA/8ZAa4e7+W04MvjRf2hxxwBAd1Ypu9t9Y2ty85jYvsoWMl3GpE X-Received: by 2002:a2e:8395:0:b0:2b6:9ebc:daf8 with SMTP id x21-20020a2e8395000000b002b69ebcdaf8mr2903325ljg.31.1690922828570; Tue, 01 Aug 2023 13:47:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690922828; cv=none; d=google.com; s=arc-20160816; b=QeF/SQOtfBpP7Y6jGuIfoFer1H2YhcoMByK64TjErKMriQQq7bD29cIYLsF1+NgGnO DF0NS9StLtG+9AxB5AeXdYRZRarYqKzMmvua2xhDHsv2lNF3BUrViMXo5OsppGk9URZH /CdTSeQ8uQ4kOzP/vrA0KyN2V3XP5xUaT229bDibNm0mLUFywpZ99MYrUUypZiYeXkwG g1Z2BTtls5de99NBysM/bLGM2mbwvU94z4ZVq29GwAKnKR9QQPzlVRpzMK+L7dciD4Vx ynhZStmQtEES0vgVafb+O53DYFPQeSsp1DRCzxViBhjS79+XE2MWxrLRQ4pcDBzLqp+2 kjmg== 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=URwcHQeJdfPFuPYOMAOfcLMjrlwAheH1Mgfvw03CCBo=; fh=xUlByBi+AOhlmUOP7Fsh4gyC+PRyawzp/HzGQQ0fKGA=; b=xn94O3zqhYoryvh7tthtMsWCJDhdiV1giKYlyKKC5lMWXsIQ7ZQGFRSCFwFk8DT0/P MWOMzz5koN42FUS/JObvob3uJeasd4wTXBtL4sUaEe3zRzS/UQuLscmef86qoPz+gtCm DNBfJOOisNluM6sjaN7a+Mge0SZIfeUwrMxHtfTbu0S1w/v2V0pyyzNjw1c5xhDkMOl3 KPxS6gTvFkhMj6SWHrJ7slL/zPOzL1uL9nVih7pf+Bk9ZwQUM18WVYMl6ktHS2ogSjqW F7aHHkHzCAHqtXtYhWXXSm1VgynOg9kBOBgp2Wty0VyiT0DcPPqz4s5C+YSlUYHSmpFQ i1jw== 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 br15-20020a170906d14f00b00977eb8d769bsi5528868ejb.289.2023.08.01.13.46.32; Tue, 01 Aug 2023 13:47:08 -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 S232224AbjHATkg (ORCPT + 99 others); Tue, 1 Aug 2023 15:40:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60782 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229802AbjHATke (ORCPT ); Tue, 1 Aug 2023 15:40:34 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 62D2019AA; Tue, 1 Aug 2023 12:40:32 -0700 (PDT) X-QQ-mid: bizesmtp83t1690918822txdprirx Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:40:21 +0800 (CST) X-QQ-SSF: 01200000002000E0X000B00A0000000 X-QQ-FEAT: mkz8qCx1xSPVZcKO2fmc3LAHwgMtTWIuFhUvM0Ah3H0V9yzy3C6jPnbyi3oG7 IaHjirJSaeNisKe1ZE6dMGqfaMDQV8lzetKG3trVM8FLpFopf/5FDgkS4JXY7BmF5w8HwXF GszTzjCqu4gCZQa9Kf+Qcp7cRHuIwsdMaU25M2pmyvgLcIicoteXreZSstJoenuuasVWYkU 7I293AlhT7b2DKX1yMn4k9QQ+tVTnAjuTmSefIG+JHqVC5uYBa4jW6Msa8eDMaepTqrsVJR cL9TSwIAGW2UJqusan/rRc3o7Ic8JDAdnEHCPrCaW71WrjxCPM5tESHoIwiAfTp0AXmD2lY clOwjDAeftJFT33LBpJZLW7k5rg5K9NrXSYRLLbZc5/mnzr23yBLQLp86lAp7JwOq7jV33C X-QQ-GoodBg: 0 X-BIZMAIL-ID: 10879325403677757569 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu Subject: [PATCH v4 04/12] selftests/nolibc: add macros to reduce duplicated changes Date: Wed, 2 Aug 2023 03:40:21 +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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no 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: 1773061095908487716 X-GMAIL-MSGID: 1773061095908487716 The kernel targets share the same kernel make operations, the same .config file, the same kernel image, add MAKE_KERNEL, KERNEL_CONFIG and KERNEL_IMAGE for them. Many targets use the same log file, add RUN_OUT to allow save log by architecture, for example: 'make RUN_OUT=$PWD/run.$arch.out'. The qemu run/rerun targets share the same qemu system run command, add QEMU_SYSTEM_RUN for them. Suggested-by: Willy Tarreau Link: https://lore.kernel.org/lkml/20230722122009.GE17311@1wt.eu/ Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 35 ++++++++++++++++--------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index f0bda0d28000..fdc72ca75589 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -142,41 +142,52 @@ endif libc-test: nolibc-test.c $(QUIET_CC)$(CC) -o $@ $< +# common macros for logging +RUN_OUT = $(CURDIR)/run.out + # local libc-test run-libc-test: libc-test - $(Q)./libc-test > "$(CURDIR)/run.out" || : - $(Q)$(REPORT) $(CURDIR)/run.out + $(Q)./libc-test > "$(RUN_OUT)" || : + $(Q)$(REPORT) "$(RUN_OUT)" # local nolibc-test run-nolibc-test: nolibc-test - $(Q)./nolibc-test > "$(CURDIR)/run.out" || : - $(Q)$(REPORT) $(CURDIR)/run.out + $(Q)./nolibc-test > "$(RUN_OUT)" || : + $(Q)$(REPORT) "$(RUN_OUT)" # qemu user-land test run-user: nolibc-test - $(Q)qemu-$(QEMU_ARCH) ./nolibc-test > "$(CURDIR)/run.out" || : - $(Q)$(REPORT) $(CURDIR)/run.out + $(Q)qemu-$(QEMU_ARCH) ./nolibc-test > "$(RUN_OUT)" || : + $(Q)$(REPORT) "$(RUN_OUT)" initramfs: nolibc-test $(QUIET_MKDIR)mkdir -p initramfs $(call QUIET_INSTALL, initramfs/init) $(Q)cp nolibc-test initramfs/init +# common macros for kernel targets +MAKE_KERNEL = $(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) +KERNEL_CONFIG = $(objtree)/.config +KERNEL_IMAGE = $(objtree)/$(IMAGE) + defconfig: - $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) mrproper $(DEFCONFIG) prepare + $(Q)$(MAKE_KERNEL) mrproper $(DEFCONFIG) prepare kernel: initramfs - $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) $(IMAGE_NAME) CONFIG_INITRAMFS_SOURCE=$(CURDIR)/initramfs + $(Q)$(MAKE_KERNEL) $(IMAGE_NAME) CONFIG_INITRAMFS_SOURCE=$(CURDIR)/initramfs + +# common macros for qemu run/rerun targets +QEMU_SYSTEM_RUN = qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(KERNEL_IMAGE)" -serial stdio $(QEMU_ARGS) # run the tests after building the kernel run: kernel - $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(objtree)/$(IMAGE)" -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" - $(Q)$(REPORT) $(CURDIR)/run.out + $(Q)$(QEMU_SYSTEM_RUN) > "$(RUN_OUT)" + $(Q)$(REPORT) "$(RUN_OUT)" # re-run the tests from an existing kernel rerun: - $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(objtree)/$(IMAGE)" -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" - $(Q)$(REPORT) $(CURDIR)/run.out + $(Q)$(QEMU_SYSTEM_RUN) > "$(RUN_OUT)" + $(Q)$(REPORT) "$(RUN_OUT)" clean: $(call QUIET_CLEAN, sysroot) From patchwork Tue Aug 1 19:41: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: 129477 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6359:610b:b0:134:c3fc:3153 with SMTP id rz11csp53813rwb; Tue, 1 Aug 2023 13:56:14 -0700 (PDT) X-Google-Smtp-Source: APBJJlGIkCmR0h5EuJOa/WuHV7vn43vkAM5gCs0KNZudMuFhi2Vs0rt1KghCpg76GfW1Ek/hpHwg X-Received: by 2002:a17:906:51db:b0:99b:d007:67b1 with SMTP id v27-20020a17090651db00b0099bd00767b1mr3307142ejk.72.1690923374165; Tue, 01 Aug 2023 13:56:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690923374; cv=none; d=google.com; s=arc-20160816; b=ATZ/1FQ6b/YlWZR3LE3fTcPHC7S+lPJphMOgeYVHH9a57Wc7JagYLDHfcQJtTMOUgm a8sXb62kYIBewbHvIDDNHHg62C1XTCcCTAXJjzPMym5W2NZZ0TGrh5R27VP7V4+0gK4E LLduuUGDYOq74pIkAKlSoy48b57903PK/E2PfTaTnfGwtQGsPMrUYcdbcmzyyexiesFN 9/Ywlw8Fngp5tAk5z02BxifRheOdWlnSpLppc2vn5LMhyf95i/hzc/iUltn1aVedCmF0 5/HbyglMG//csV3KYZ8obraUC3qo58k/OPbmj9Tr8k5X+HRQ7M/Bmf/AkNCmF482X1Tn QP/Q== 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=BKCGSZaJKP2UTDaIqv/uwe7VUC6HBATld9yKBHRkIWo=; fh=7VEAlmh5C0HpP6zqTCNK3j6ZHP9gC5nJSc+EpvArsOo=; b=v3S2yvp8+XNt77hJG7iDunEH+sim3RXA6iGUpiXcmIv1GDNZcv5nceH3WLmrFg+uoE Z8LAKdEoWYD132BeMbXen/hOyI7b856wCX2MBDMbC9xijBVRXnLH+dUGMrINqA0RivKD I2a+bGG6Al5muPRgU6nZBTBxtFcK9RRLH32NmN7Cn7KIf9KaZ/Jrn16ielVFB7wzBAdE i/EBf2+q9DGQBEa2gMoGUxdAr8gQfvrWGsw6/r331oOibuES3J6Inxr4HjiPBy5ZUw6q rSWKt0F/WRzdnpmBZ7G1AMJwl3/6rVH5YG4X9+vR0L5nFuSyDrjDuZeSBsPIM55LhXuj zhsA== 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 m15-20020a17090607cf00b00993150ec3c7si8557869ejc.966.2023.08.01.13.55.50; Tue, 01 Aug 2023 13:56:14 -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 S232568AbjHATlv (ORCPT + 99 others); Tue, 1 Aug 2023 15:41:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33520 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232579AbjHATls (ORCPT ); Tue, 1 Aug 2023 15:41:48 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 12D3C1FF3; Tue, 1 Aug 2023 12:41:36 -0700 (PDT) X-QQ-mid: bizesmtp63t1690918887tcphyv4r Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:41:26 +0800 (CST) X-QQ-SSF: 01200000000000E0X000000A0000000 X-QQ-FEAT: nMuci6qhceNBRU+sDADE7/JtUrCHaoVrlifjCBDUL/jBJl0rtLP+oHvUfnRqC i/gsuROO441HGXQZcSyxvg9IBfxJFwT38fc4uyMi/CVsu2P9+jh7eLJBBuy2sP7lGj1VqmI 5CBpoaaHzYnPvkYWGwrTm4z7ZiNH9QrByWSGmgedwfHdVvr8pCeHavaYZkDE8tSeM5DAwEY X1hC/rz2f/5sGi5i6YHLJ6SWzKTURFFCUUuHomAiYdQv1LPiBRUczYmMnc6H2Y+BZhHUFLc 0i5jUYAvmZZ2Bn3jkKOxqCXE5GvhXQ5AGrBE2rBJmYOsuipqId1rgNaqa28M0P21hengeK/ oOc3xhr97IrWEaFRoM+5pFdtlCkDCO97FhtrfcQpzFDzYtFzogDvANJu3Ss3MSkdGKp5CxK X-QQ-GoodBg: 0 X-BIZMAIL-ID: 16416427454383325419 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH v4 05/12] selftests/nolibc: add XARCH and ARCH mapping support Date: Wed, 2 Aug 2023 03:41:26 +0800 Message-Id: <67396957cee44f6002d5a0dd74fbaeaa50d7d803.1690916314.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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no 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: 1773061668196817284 X-GMAIL-MSGID: 1773061668196817284 Most of the CPU architectures have different variants, but kernel usually only accepts parts of them via the ARCH variable, the others should be customized via kernel config files. To simplify testing, a new XARCH variable is added to extend the kernel's ARCH with a few variants of the same architecture, and it is used to customize variant specific variables, at last XARCH is converted to the kernel's ARCH: e.g. make run XARCH= | \ | `-> variant specific variables: | IMAGE, DEFCONFIG, QEMU_ARCH, QEMU_ARGS, CFLAGS ... \ `---> kernel's ARCH XARCH and ARCH are carefully mapped to allow users to pass architecture variants via XARCH or pass architecture via ARCH from cmdline. PowerPC is the first user and also a very good reference architecture of this mapping, it has variants with different combinations of 32-bit/64-bit and bit endian/little endian. To use this mapping, the other architectures can refer to PowerPC, If the target architecture only has one variant, XARCH is simply an alias of ARCH, no additional mapping required. Suggested-by: Willy Tarreau Link: https://lore.kernel.org/lkml/20230702171715.GD16233@1wt.eu/ Link: https://lore.kernel.org/lkml/20230730061801.GA7690@1wt.eu/ Reviewed-by: Thomas Weißschuh Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 46 ++++++++++++++++++------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index fdc72ca75589..7902b86911a5 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -17,6 +17,27 @@ include $(srctree)/scripts/subarch.include ARCH = $(SUBARCH) endif +# XARCH extends the kernel's ARCH with a few variants of the same +# architecture that only differ by the configuration, the toolchain +# and the Qemu program used. It is copied as-is into ARCH except for +# a few specific values which are mapped like this: +# +# XARCH | ARCH | config +# -------------|-----------|------------------------- +# ppc | powerpc | 32 bits +# ppc64 | powerpc | 64 bits big endian +# ppc64le | powerpc | 64 bits little endian +# +# It is recommended to only use XARCH, though it does not harm if +# ARCH is already set. For simplicity, ARCH is sufficient for all +# architectures where both are equal. + +# configure default variants for target kernel supported architectures +XARCH = $(or $(XARCH_$(ARCH)),$(ARCH)) + +# map from user input variants to their kernel supported architectures +ARCH := $(or $(ARCH_$(XARCH)),$(XARCH)) + # kernel image names by architecture IMAGE_i386 = arch/x86/boot/bzImage IMAGE_x86_64 = arch/x86/boot/bzImage @@ -27,7 +48,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 @@ -40,7 +61,7 @@ DEFCONFIG_mips = malta_defconfig DEFCONFIG_riscv = defconfig DEFCONFIG_s390 = defconfig DEFCONFIG_loongarch = defconfig -DEFCONFIG = $(DEFCONFIG_$(ARCH)) +DEFCONFIG = $(DEFCONFIG_$(XARCH)) # optional tests to run (default = all) TEST = @@ -55,7 +76,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 +88,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 +105,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 +120,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 Aug 1 19:42:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 129468 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp2914063vqg; Tue, 1 Aug 2023 13:23:40 -0700 (PDT) X-Google-Smtp-Source: APBJJlHFxSnR1wmOc+u2yJ+3EDk+xH6lRl9B4FJmtNbzT5fU4lgh3xGYNFGeXWGrXDSUrbySRiXs X-Received: by 2002:a05:6a20:8e27:b0:13e:aede:f37e with SMTP id y39-20020a056a208e2700b0013eaedef37emr2193893pzj.41.1690921420586; Tue, 01 Aug 2023 13:23:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690921420; cv=none; d=google.com; s=arc-20160816; b=NWe2izw9ywspCY6VZVvaqY3jzHaEMgou13CnTAlDF9TmewM5DnyOktTWv/+PP3i4LF ISItt1RnpKM9fHlFADzQXQ+N58V5vWHakwGnbG97gGpONVPpZ969n/U7zPfDv4Ujwb8I +HGTIwkrz+XpICnRi/Utc+bzU1J/suSxVCBdZaSt6VgSF+kT/ytaU3yr9whjfuDLDwpL rnu0a7psGGs6XPbmoDD42HXRtTdEbJUWpUWs5tSKPXl0pT86I+vf7x6kj4cKA8kToGhx uASvfvSgS4P3aPy8vFvNa5Hfh1AOgUZyHOQivbtMZ924Y+x+dOrevjKgQCC8+k45m/GB bo/w== 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=3iRDA/TJ52flmUTD/zZx0Bwn4tmszic9Q0Al2AA/U/U=; fh=7VEAlmh5C0HpP6zqTCNK3j6ZHP9gC5nJSc+EpvArsOo=; b=z2AsyPOPc9o8nYYPEQfBiAUyC4omJhPKNJB7Z+g8g+6FGsWQpRYjHihryd6x0K98fq JVsfEzF1sYAbvaox+0pqTp5PEjfTuWvVUQsyjZ8JeZNOgCZYf+x7fGf2jXJGUfcdZCgk pKePax/8JVvUTC++5tPzYEIY357DWyqI9dM/nDBweAbcdKyXwhdv1bj7vWhSTFcFT29q LAbsYu53h0y0hE9hCwDp/nM2kpUn8y+5u0gLU3ledZDuQ/iXujH4TfumWpIlUgQPcpKN JiZlQvoW15UIt5AkBf/5wEYnGroqADtbQDqAhzlD6I1KurzkzBcL2VO8O/5D3rXWn56C NP9g== 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 b124-20020a633482000000b00563e87fe3dfsi402104pga.412.2023.08.01.13.23.25; Tue, 01 Aug 2023 13:23: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 S231330AbjHATmp (ORCPT + 99 others); Tue, 1 Aug 2023 15:42:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34262 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229841AbjHATmo (ORCPT ); Tue, 1 Aug 2023 15:42:44 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5A669B4; Tue, 1 Aug 2023 12:42:42 -0700 (PDT) X-QQ-mid: bizesmtp90t1690918952tllk1j5k Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:42:31 +0800 (CST) X-QQ-SSF: 01200000000000E0X000000A0000000 X-QQ-FEAT: ZTnzshg2nJY+dbg7dnU05oGs2oZJoFlj5DwKG4YmNlZjegD8qfswfCMygHPoE L10ipiSo21DO+0w3EvFmwlg0uJuV4b7xGHEzGgCpBvgE+5PfkniSob14/D3lbBZrcVUPDK7 6AIyA9GE/1RUDjjkrJp3ZrlAkquUd/B0Uida7DV8vwoFLVf7NGwobAca8DpHJIJYUmYH3RE bLyuVu9jN3a16t89QTWcrwGzAmZS5jyXXy1ITQRWTy4HCNdr9gtP7HYZBE4HVobUBEuzKuM zC/pSp69bdqF9i8x+o/QyR+jA3HutSxsS5ISBLW/Jj9lYTw0gb42U9yq+oTgZTMYugxvU1h D++AQN6bc91ufgdmqekKlk8f30RDGBtrt//aIJZCHh8ifQJDPtPYb3OqUoVBTj2xIyH3Z9V X-QQ-GoodBg: 0 X-BIZMAIL-ID: 17612294270200470935 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH v4 06/12] selftests/nolibc: add nolibc-test-config target Date: Wed, 2 Aug 2023 03:42:31 +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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no 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: 1773059619679244740 X-GMAIL-MSGID: 1773059619679244740 The default DEFCONFIG_ of some architectures may not just work for nolibc test, some require extra kernel config options to enable features like console for print. To make nolibc-test happy, a new nolibc-test-config target is added with a new NOLIBC_TEST_CONFIG macro. The macro allows store extra common options via nolibc-test-common.config and the ones by architecture (or variant) via nolibc-test-$(XARCH).config. During the nolibc-test-config target, the above extra options will be appended to .config generated by the old DEFCONFIG_ target or by another config target specified via the CONFIG variable (e.g. tinyconfig). At last, the 'allnoconfig' target is called with the .config as the base to let them take effect and let new missing symbols as no. The scripts/kconfig/merge_config.sh tool is used to merge the extra config files listed in NOLIBC_TEST_CONFIG. Suggested-by: Thomas Weißschuh Link: https://lore.kernel.org/lkml/67eb70d4-c9ff-4afc-bac7-7f36cc2c81bc@t-8ch.de/ Link: https://lore.kernel.org/lkml/74f6a3b5-666c-41e9-a3d5-0ed5457f20f5@t-8ch.de/ Suggested-by: Suggested-by: Willy Tarreau Link: https://lore.kernel.org/lkml/20230730061801.GA7690@1wt.eu/#t Reviewed-by: Thomas Weißschuh Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 7902b86911a5..f01b258ef19b 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -63,6 +63,10 @@ DEFCONFIG_s390 = defconfig DEFCONFIG_loongarch = defconfig DEFCONFIG = $(DEFCONFIG_$(XARCH)) +# extra configs/ files appended to .config during the nolibc-test-config target +# include common + architecture specific +NOLIBC_TEST_CONFIG = nolibc-test-common.config nolibc-test-$(XARCH).config + # optional tests to run (default = all) TEST = @@ -192,8 +196,22 @@ MAKE_KERNEL = $(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROS KERNEL_CONFIG = $(objtree)/.config KERNEL_IMAGE = $(objtree)/$(IMAGE) -defconfig: - $(Q)$(MAKE_KERNEL) mrproper $(DEFCONFIG) prepare +# kernel config for nolibc-test +# +# - delete the current configuration and all generated files via 'mrproper' target +# - generate .config via '$(CONFIG)' or '$(DEFCONFIG_$(XARCH))' target +# - merge extra config options from $(NOLIBC_TEST_CONFIG) files to .config +# - use merged .config as base and fills in any missing symbols with '# CONFIG_* is not set' via 'allnoconfig' target +# - prepare things we need to do before we recursively start building the kernel via 'prepare' target +# +nolibc-test-config: + $(Q)$(MAKE_KERNEL) mrproper + $(Q)$(MAKE_KERNEL) $(or $(CONFIG),$(DEFCONFIG)) + $(Q)$(srctree)/scripts/kconfig/merge_config.sh -Q -O "$(objtree)" -m "$(KERNEL_CONFIG)" $(foreach c,$(NOLIBC_TEST_CONFIG),$(wildcard $(CURDIR)/configs/$c)) + $(Q)$(MAKE_KERNEL) KCONFIG_ALLCONFIG=$(KERNEL_CONFIG) allnoconfig + $(Q)$(MAKE_KERNEL) prepare + +defconfig: nolibc-test-config kernel: initramfs $(Q)$(MAKE_KERNEL) $(IMAGE_NAME) CONFIG_INITRAMFS_SOURCE=$(CURDIR)/initramfs From patchwork Tue Aug 1 19:43:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 129467 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp2914056vqg; Tue, 1 Aug 2023 13:23:40 -0700 (PDT) X-Google-Smtp-Source: APBJJlHKJ1Ja+Kr+T4f3oomWkWNK6Om+eWI1OsiVSXVVd2M7FXrAgnHfDlLW1etgJKhMxdZbUjYw X-Received: by 2002:a05:6a20:6a23:b0:134:135c:5a23 with SMTP id p35-20020a056a206a2300b00134135c5a23mr16243030pzk.18.1690921419994; Tue, 01 Aug 2023 13:23:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690921419; cv=none; d=google.com; s=arc-20160816; b=avHY90YzABCmY4tWk8IGWfUuz+O40Ua5sD9ljqw7/7GKclbL5buGv10A0dCV8aY5gI lh99w7hIztVwhoYoPYFlrRnA8u3pM22jvizViuBSizSGmAp6wdtxsyofvWdgGIu4bPHP cMXcF9IV2AinaxFva1ejaKDSDbBZ+9raHdUnT942cBBgkewsZ6AXUggGZs9qudVGUsX3 Y58LpJ7iAJcoTtmUIHgvKnJa1uPRgk0g8VoQyU+Ox2PQD3mf49NI473uqXya/5dl/rGh 8MF+u1+0KRUKWgrwyXZadxTjLretMRDBO/pxOHq1iOhui+MQMwq6y5FXho2aAP+IJkIK UmCw== 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=1xyI/oFKeJOopN6z4II4xqZbSCjC8KUlsrHKy2ehEPQ=; fh=xUlByBi+AOhlmUOP7Fsh4gyC+PRyawzp/HzGQQ0fKGA=; b=oHKoWOvFnzI49e0tvkPV0lsbYYL5T10GYsanXpo4isM53nAxoH4L/6THTTI1xKqm7N 4D4cZfafg6Zc7P9O3dLXbyr1LtujVy1dK849db00tZscg0HB6H3WTMdn6XdHkJwMY4j1 LM7mzoTmO3YpdrRChzooTQK6zkCFsRxDM55tM6rVuN/kxWNLKB5ARgXeyuLyD9T7hFXD mzKWDa8OQLSE1QPaPTPFY2xT4vE9h4kHGt5uEXzOH/WyhHEGK3d1vpKGX0iOrjLOe2R7 PbVFlex8dKkq6gBfNixq1KZghp3kqwlo7LIGWWw6jCSQKrgZyf/DmgdQw8A/Xe3cfcP8 uyIQ== 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 30-20020a63145e000000b0055b731aa9adsi9280160pgu.562.2023.08.01.13.23.26; Tue, 01 Aug 2023 13:23:39 -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 S231214AbjHATnv (ORCPT + 99 others); Tue, 1 Aug 2023 15:43:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229737AbjHATnt (ORCPT ); Tue, 1 Aug 2023 15:43:49 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.155.65.254]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B2F5B4; Tue, 1 Aug 2023 12:43:47 -0700 (PDT) X-QQ-mid: bizesmtp89t1690919018teg55b9x Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:43:36 +0800 (CST) X-QQ-SSF: 01200000000000E0X000000A0000000 X-QQ-FEAT: zT6n3Y95oi2xncCjfYqLvJjjsbmRl6823fPDREAyxCfDLSYkITqMOhNFYQoTq fivLI5x5TaCGmPT/OKdI79+yUj/BuxvA81Sdh8jMTIBfzX33G8EXZBxNLzldQkmaunbFXhb 2L4G45fpUSVcUWoTtL3GH4uEdr/tr/25txzbX8dYoTsQeYfMCxbmvQm5s3jyFSFMWvhgauJ hM76g5fiRw+WiGJbh2uN12XBTiXUjLY6PYQqtzXDszvM87qr67HPKvHxbvWgNIImRDsZdO2 VpUuzBlQkSTDF6XWH7WfGvVRko/YrkRNdWSTokLRhhDWCplQeThc78G5BFgQcgV0tUEPLg9 TGcpqsRA6KWERb8Qg9gxan+4pFA3stL8pZC/N+g5X3n6juuX/LqiaARi7QhiA== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 13231898566651143164 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu Subject: [PATCH v4 07/12] selftests/nolibc: add help for nolibc-test-config target Date: Wed, 2 Aug 2023 03:43:36 +0800 Message-Id: <8302ff1aebab6906a9c26349db1f1fd178c92cb8.1690916314.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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no 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: 1773059618790055524 X-GMAIL-MSGID: 1773059618790055524 Both the nolibc-test-config target and the NOLIBC_TEST_CONFIG marco are listed in the help output. Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 42 +++++++++++++------------ 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index f01b258ef19b..3c9e3963fbad 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -119,30 +119,32 @@ REPORT ?= awk '/\[OK\][\r]*$$/{p++} /\[FAIL\][\r]*$$/{if (!f) printf("\n"); f++ help: @echo "Supported targets under selftests/nolibc:" - @echo " all call the \"run\" target below" - @echo " help this 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 \$$XARCH, \$$TEST)" - @echo " initramfs prepare the initramfs with nolibc-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 " all call the \"run\" target below" + @echo " help this 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 \$$XARCH, \$$TEST)" + @echo " initramfs prepare the initramfs with nolibc-test" + @echo " nolibc-test-config create a fresh new \$$(CONFIG) config with extra options from \$$NOLIBC_TEST_CONFIG files (uses \$$XARCH)" + @echo " defconfig do nolibc-test-config with 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 \$$XARCH]" - @echo " IMAGE_NAME = $(if $(IMAGE_NAME),$(IMAGE_NAME),UNKNOWN_ARCH) [determined from \$$XARCH]" + @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 \$$XARCH]" + @echo " IMAGE_NAME = $(if $(IMAGE_NAME),$(IMAGE_NAME),UNKNOWN_ARCH) [determined from \$$XARCH]" + @echo " NOLIBC_TEST_CONFIG = $(strip $(foreach c,$(NOLIBC_TEST_CONFIG),$(wildcard $(CURDIR)/configs/$c))) [determined from \$$XARCH]" @echo "" all: run From patchwork Tue Aug 1 19:44:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 129469 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp2915204vqg; Tue, 1 Aug 2023 13:26:01 -0700 (PDT) X-Google-Smtp-Source: APBJJlFyFwHRjJwOUnwlir7foKtbz6SKqTkS6TikLdslLRegf/2FANNZnjkuP+zapOYqJ1C5b+j4 X-Received: by 2002:aca:1109:0:b0:3a7:3792:5b9f with SMTP id 9-20020aca1109000000b003a737925b9fmr6761864oir.30.1690921561259; Tue, 01 Aug 2023 13:26:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690921561; cv=none; d=google.com; s=arc-20160816; b=Enf1mQbOz1ZdZgpXqkt0IpcI2Cs4D1UPwTza9aGpwl2zpHrbOktFENT3EXLbXO2KtJ 196phLo6VJz1Qj+y3J/UxtGnRm4VgwBXAWXvMgfj2DEFJrVEkPmQf3qeBgnPw/s+s7x7 qlPZUaknTZGvpI5alGYpPmWT2IA5KWcDMVTxWJJAVaK54qJ0BMn2gIMDtDvFIxevnBhC TGW9S3HKKEKOogNcxJ3fZLX+aB4hHSGZiWCAH6knuqJu+Qu2N5w/PuGO+PZ6mijctrCV aDVBc01Kr7KAhQX/sZnLtdMWnaN6Y866WCrZB5c9Tn/EeFuYIvXG4nByglzUiIkgkqIB YLUQ== 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=YrlJ88jXDmt48EAGVE+WaL9XDrCtOPq6gjX2sTEM7CE=; fh=7VEAlmh5C0HpP6zqTCNK3j6ZHP9gC5nJSc+EpvArsOo=; b=BjYhR8d5RCU4XiGF/sNJhjIUu8Wmv/ZVVqCqEhdEvk5xP2QPNG0QMYHBXrJr+3HJnC 6ux27dEWOc1nKCw4stWw5Tqrs/M4EgmfaQWONaflfYcQGSmSWDhesKvHVNSRkObuuk5P M+iwC/58YU1wiRB8J7Tv6Y/7hHABGSsu9WsYe/d6fHIGilpaUHNd9fosp6Q0cn2S3gkR 7EWZJLw6q22M1ujoxd/BSil2zM0jWwZ+Po2/aNVe+FhPvDHcFI1S33axJJsa91pbiM9C 5LRmuq4HW8eEexdEcJC/5gmX0hpc4f98GctvGd84ApGrNQHOAc1Ayl8mqx0fxBsVrxxA TOfA== 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 v10-20020a63f20a000000b0056416c221d1si8116803pgh.581.2023.08.01.13.25.24; Tue, 01 Aug 2023 13:26:01 -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 S231631AbjHATo4 (ORCPT + 99 others); Tue, 1 Aug 2023 15:44:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229679AbjHAToy (ORCPT ); Tue, 1 Aug 2023 15:44:54 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CAD7AB4; Tue, 1 Aug 2023 12:44:52 -0700 (PDT) X-QQ-mid: bizesmtp78t1690919083t4258pqn Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:44:41 +0800 (CST) X-QQ-SSF: 01200000000000E0X000000A0000000 X-QQ-FEAT: +ynUkgUhZJm/NurcuBUT9BD2y7tjGcHdLpDeD/dkS03MV7S9Djrcdj28ip+v3 dY8BzHTzZnxs55qdpe/vaRHIRF65SrpVGB2V3/BFVl5+DQDM88vz+P/Qh6YixK+ak6h8vt6 tCYh9vhc9o1Hc9FAAyC+Cai8nSbW8ozFsSWjF6fpFx/bTpMCGMWMAPLcIYOTU9QvEEUfgqj nNLk83rV3P4blWWTMRXd9c9Dfr3hmO3EJ8nXh+iWBxn8PRJKgbhMVqs0UF2zgzxQXz+zIua IB6SEx4Ws3LspYfyMJjI5IXYXTaXDHF75Ti7U7PNfxjG8unyy4l5aI8yXH8fHykH9kHe8UE 3zvsZfaUpy0bIX1IfIN4axv+iftbtJ4kV5rDmEcqnl6crvObO28QnfTnnfnj+zT/zlWp3uX X-QQ-GoodBg: 0 X-BIZMAIL-ID: 6648072752765777564 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH v4 08/12] selftests/nolibc: add test support for ppc Date: Wed, 2 Aug 2023 03:44:41 +0800 Message-Id: <0833846b9fc9e2260f9aa2c732a12d9dfa329286.1690916314.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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=no 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: 1773059766874402603 X-GMAIL-MSGID: 1773059766874402603 Kernel uses ARCH=powerpc for both 32-bit and 64-bit PowerPC, here adds a ppc variant for 32-bit PowerPC and uses it as the default variant of powerpc architecture. Users can pass ARCH=powerpc or XARCH=ppc to test 32-bit PowerPC. 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 Suggested-by: Willy Tarreau Link: https://lore.kernel.org/lkml/ZL9leVOI25S2+0+g@1wt.eu/ Reviewed-by: Thomas Weißschuh Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 6 ++++++ .../testing/selftests/nolibc/configs/nolibc-test-ppc.config | 3 +++ 2 files changed, 9 insertions(+) create mode 100644 tools/testing/selftests/nolibc/configs/nolibc-test-ppc.config diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 3c9e3963fbad..29e02b49903a 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -33,9 +33,11 @@ endif # architectures where both are equal. # configure default variants for target kernel supported architectures +XARCH_powerpc = ppc XARCH = $(or $(XARCH_$(ARCH)),$(ARCH)) # map from user input variants to their kernel supported architectures +ARCH_ppc = powerpc ARCH := $(or $(ARCH_$(XARCH)),$(XARCH)) # kernel image names by architecture @@ -45,6 +47,7 @@ IMAGE_x86 = arch/x86/boot/bzImage IMAGE_arm64 = arch/arm64/boot/Image IMAGE_arm = arch/arm/boot/zImage IMAGE_mips = vmlinuz +IMAGE_ppc = vmlinux IMAGE_riscv = arch/riscv/boot/Image IMAGE_s390 = arch/s390/boot/bzImage IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi @@ -58,6 +61,7 @@ DEFCONFIG_x86 = defconfig DEFCONFIG_arm64 = defconfig DEFCONFIG_arm = multi_v7_defconfig DEFCONFIG_mips = malta_defconfig +DEFCONFIG_ppc = pmac32_defconfig DEFCONFIG_riscv = defconfig DEFCONFIG_s390 = defconfig DEFCONFIG_loongarch = defconfig @@ -77,6 +81,7 @@ QEMU_ARCH_x86 = x86_64 QEMU_ARCH_arm64 = aarch64 QEMU_ARCH_arm = arm QEMU_ARCH_mips = mipsel # works with malta_defconfig +QEMU_ARCH_ppc = ppc QEMU_ARCH_riscv = riscv64 QEMU_ARCH_s390 = s390x QEMU_ARCH_loongarch = loongarch64 @@ -89,6 +94,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_ppc = -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/nolibc-test-ppc.config b/tools/testing/selftests/nolibc/configs/nolibc-test-ppc.config new file mode 100644 index 000000000000..b1975f8253f7 --- /dev/null +++ b/tools/testing/selftests/nolibc/configs/nolibc-test-ppc.config @@ -0,0 +1,3 @@ +CONFIG_SERIAL_PMACZILOG=y +CONFIG_SERIAL_PMACZILOG_TTYS=y +CONFIG_SERIAL_PMACZILOG_CONSOLE=y From patchwork Tue Aug 1 19:45:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 129471 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bc42:0:b0:3e9:de7a:15be with SMTP id m2csp2928582vqy; Tue, 1 Aug 2023 13:29:05 -0700 (PDT) X-Google-Smtp-Source: APBJJlFOZqt8nWrT6j0Z8P6B5Fc7vxNXDEwoPauQwOKWQi5dJfq6y4D4ytmWIgbtypRoLDrZDlSM X-Received: by 2002:a05:6a00:23c8:b0:682:f529:6d69 with SMTP id g8-20020a056a0023c800b00682f5296d69mr14797495pfc.7.1690921744921; Tue, 01 Aug 2023 13:29:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690921744; cv=none; d=google.com; s=arc-20160816; b=VUAbkqKy9nMwctuNEyvHUaHFfDOm5kwzf0nbqjN/CsRhCPZCgNhF9dEAJtkPkAC1YA gfpF/I92fbWw0jzpjvSgSzREpsDMHs2tzV3T9+WdVzCK+TRbiZ6xGHD1/qBWVfNmcluz jdOZyBe4h9Hy/pD1CiqeH9aOm+vzWpF0rCH8NkqjTMLHLDiTPYDXaYAzXJLnDjuI8rKC icidqxBbCtAek0i1qqmEA3Xo2SCUw32JWQGjkqGVCaB+0E5sS6SjYF8WtdNuEXRU6zIS yw3W6ad+dG/tq/DgztZHfpD0NlLvK2wqdDHRxFvAZbsS2NMKbSmsZ07zxkNqlYMvgU7c Fj3Q== 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=P7hGnDcyhBpPiljiFt3TB3NeztYJJ72oUMdvgFhwsXU=; fh=7VEAlmh5C0HpP6zqTCNK3j6ZHP9gC5nJSc+EpvArsOo=; b=0GHER8SppE+26/G7QhMPMiAtKRKBvr21wMksqg3f3DpSjaCeHR94Sq/yQst9fiWlhu dT7ZlkqokMadrGDoY4yqLhP+PKIiCL8L8uurybmIscOKc6QUoiZTJ8o0a94/3K2FCRVN lExOLC8IFJa+TrkwO1AQdnLoV+U/snToOXJvXym6jLwiWpW4Cc0CtivZW8wIbcK/AgG0 J6AKdldPPLWdcJDIit8+4PqkUd5SHk4qfuAtUw8wA+W0tGYSg/lfz7wVSsq2+SCqRQCs rMQCZiiZLoNQm/q+acmtsXPhjfnQBI5LVo3W/jOiAggBl1+kKxO7ML29g5BWBinJmtZF IEIQ== 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 b124-20020a633482000000b00563e87fe3dfsi402104pga.412.2023.08.01.13.28.50; Tue, 01 Aug 2023 13:29:04 -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 S230456AbjHATqG (ORCPT + 99 others); Tue, 1 Aug 2023 15:46:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36194 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231765AbjHATp7 (ORCPT ); Tue, 1 Aug 2023 15:45:59 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F2FA2114; Tue, 1 Aug 2023 12:45:57 -0700 (PDT) X-QQ-mid: bizesmtp76t1690919148ty1bac8r Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:45:47 +0800 (CST) X-QQ-SSF: 00200000000000E0X000000A0000000 X-QQ-FEAT: 96VJ2VzXm/qtcW83G+rHd8m5WjuxNQBWKPUUXvOrXDI9B+etoLQfu8ZCvn2fw tYjN7Veqc/sXQ1SSALLcaHQgL+obZbeIdrIFk2aQdIgQAwPMXYO47Ooy3v0yWPpDUybg9b5 gbSP0C6G15zDR8IWZ12c8TQppAGXlQiTlyL8lJxbZ2k9aXWuJqUhr/5kyg3QLq7OkzALSiI EXkwSrkiB9TPYkc3UPoZaS+9h01jg0LqY183MwVDopZCh9HsXaGOvcVae4/jA2B/Moq/JZ4 IBEjom6N300FTouvb8DksVKEzy4t9JxZ68XvfoNUDDpG6GYw5UGPVlBktbFRIyJU3f0jlk5 kpQqRmqaROTQjKkkw0dSYaH+YdqNtIDWk5f0S1bnX6TtnAWwzd7PoM16ZmegmJWtjcoyuhz aLAO4t/cxto= X-QQ-GoodBg: 0 X-BIZMAIL-ID: 5754352481238065369 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH v4 09/12] selftests/nolibc: add test support for ppc64le Date: Wed, 2 Aug 2023 03:45:47 +0800 Message-Id: <9f20dae8ceec373408ab05140710ae1552082982.1690916314.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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=no 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: 1773059959589608664 X-GMAIL-MSGID: 1773059959589608664 Kernel uses ARCH=powerpc for both 32-bit and 64-bit PowerPC, here adds a ppc64le variant for little endian 64-bit PowerPC, users can pass XARCH=ppc64le to test it. 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. Note, since the VSX support may be disabled in kernel side, to avoid "illegal instruction" errors due to missing VSX kernel support, let's simply let compiler not generate vector/scalar (VSX) instructions via the '-mno-vsx' option. [1]: https://qemu.readthedocs.io/en/latest/system/ppc/powernv.html Suggested-by: Willy Tarreau Link: https://lore.kernel.org/lkml/20230722120747.GC17311@1wt.eu/ Reviewed-by: Thomas Weißschuh 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 29e02b49903a..8ec2ae33fdcd 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -38,6 +38,7 @@ XARCH = $(or $(XARCH_$(ARCH)),$(ARCH)) # map from user input variants to their kernel supported architectures ARCH_ppc = powerpc +ARCH_ppc64le = powerpc ARCH := $(or $(ARCH_$(XARCH)),$(XARCH)) # kernel image names by architecture @@ -48,6 +49,7 @@ IMAGE_arm64 = arch/arm64/boot/Image IMAGE_arm = arch/arm/boot/zImage IMAGE_mips = vmlinuz IMAGE_ppc = vmlinux +IMAGE_ppc64le = arch/powerpc/boot/zImage IMAGE_riscv = arch/riscv/boot/Image IMAGE_s390 = arch/s390/boot/bzImage IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi @@ -62,6 +64,7 @@ DEFCONFIG_arm64 = defconfig DEFCONFIG_arm = multi_v7_defconfig DEFCONFIG_mips = malta_defconfig DEFCONFIG_ppc = pmac32_defconfig +DEFCONFIG_ppc64le = powernv_defconfig DEFCONFIG_riscv = defconfig DEFCONFIG_s390 = defconfig DEFCONFIG_loongarch = defconfig @@ -82,6 +85,7 @@ QEMU_ARCH_arm64 = aarch64 QEMU_ARCH_arm = arm QEMU_ARCH_mips = mipsel # works with malta_defconfig QEMU_ARCH_ppc = ppc +QEMU_ARCH_ppc64le = ppc64le QEMU_ARCH_riscv = riscv64 QEMU_ARCH_s390 = s390x QEMU_ARCH_loongarch = loongarch64 @@ -95,6 +99,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_ppc = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_ppc64le = -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=%)" @@ -110,6 +115,7 @@ else Q=@ endif +CFLAGS_ppc64le = -m64 -mlittle-endian -Wl,-EL,-melf64ppc -mno-vsx CFLAGS_s390 = -m64 CFLAGS_mips = -EL CFLAGS_STACKPROTECTOR ?= $(call cc-option,-mstack-protector-guard=global $(call cc-option,-fstack-protector-all)) From patchwork Tue Aug 1 19:46:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 129470 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bc42:0:b0:3e9:de7a:15be with SMTP id m2csp2928062vqy; Tue, 1 Aug 2023 13:28:05 -0700 (PDT) X-Google-Smtp-Source: APBJJlGytlXkKqZWkOkW+iw9hpPpccXWxfvB/1QN4UL2PRc8pLGYFb9HqUsy4lBHRn+jp/twE5PR X-Received: by 2002:a05:6a00:134c:b0:686:2b60:3348 with SMTP id k12-20020a056a00134c00b006862b603348mr16168026pfu.21.1690921685574; Tue, 01 Aug 2023 13:28:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690921685; cv=none; d=google.com; s=arc-20160816; b=rm3xGUrbY/5EmmvZONFnUgfIGiauY/Fe4Fn4MkB33IcHoyuxiLUc+oF806R+LJ+nF3 tLsXC9fdf02/C8jYgWttXDbNiFYS+YE6OG7P60WsNccP/uJWDgk43VLDJJG/qQysS3wY CdyWynEw1gsqVAFTOTTxxXByp/G1At+T6xiFLuULqKeTPwUcB1xt+atTuw079FZVK78d ZMBYLSA5wp/rn0noWslBFabEDzD/LOB0TFxeDMFm3lM2RJh+iGpWgIyaqvarHb0GrLvc 9jkezMGrbRKteBaw8VA1yFN00rQNG/XrN4ZFjWtVB2NMTnLShTlf6vwRZWlwL55a9EmS sE4A== 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=7U0qAlmgRMp4GaeKeC3gaROzYfk8QxXvq4vFt9spClQ=; fh=7VEAlmh5C0HpP6zqTCNK3j6ZHP9gC5nJSc+EpvArsOo=; b=SOYUNAKi2zN4lcWQedfGQKKvJMuoqmmGtVm+FQ2BK5LT4QbcPFmk7mihAn7xFac8TQ O3n/OxIK0vPjHcXCJBGP/U5tshsq1IdurtFQ01WJhKXnfqEOySBUXtt2HFBHRiUN0CEI ZGHijfFHHn2tHpjBbECKzLs0zRtcFKUnZ3vPUCEiKGpqPPf89i2tRAXi8u5CzcDX9Kt5 j3x8NIjWJca6ZGhRlTiGqs9xlAyZ3iyDPA8rd9PMdQwDIab3z0Ckja9LndiaiRb+6Ao1 lYWpmASLTRIkHOYPX8W6sEJlwisxwacKwk6pukHThzuEiUwQj4UvqZP54RBDwydpQCEB 6mDw== 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 w20-20020a63af14000000b0055c79555b97si9355075pge.876.2023.08.01.13.27.50; Tue, 01 Aug 2023 13:28:05 -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 S230232AbjHATrI (ORCPT + 99 others); Tue, 1 Aug 2023 15:47:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36590 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229890AbjHATrG (ORCPT ); Tue, 1 Aug 2023 15:47:06 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C77E1B4; Tue, 1 Aug 2023 12:47:03 -0700 (PDT) X-QQ-mid: bizesmtp90t1690919213t1ni6cdi Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:46:52 +0800 (CST) X-QQ-SSF: 00200000000000E0X000000A0000000 X-QQ-FEAT: clvrxl8qrW51+LD8EODvemrNk0ru6bTwmEfs55sMwNm3INJ28xS74bBaNSCfu pwcJMPZy+EWXeMLOdanTNCOMeF9QfJNiiJxvmsNVuVFQyhpY/NhHUoPL1cbrXjFHEjDdFhL +U1fOKtRSjX1JiTxbvTdKtPORooY+0jaBb2Jo5ECcg/pdb3igm51WYXN04dACqzSFmAMUTA 9efLpdTBTe0RiUl7/j/4EGWyPxZAIoy5YcTQD99UckWULoqsH9SDcCKbkJQKHrRkNzOLqe7 1dwu5efA6dABqXA3Q22jW++0NK2d2i/dBHT55Bc+yAhVEdxcTm3ZNmq1LSLx2I5qZCen/uq rsPUgsMwth2bgh60GQJxzhBRVjsiTaszuSNs8sshn/nMzWvCxkxkcT1BUHChSBr8jJssxpq X-QQ-GoodBg: 0 X-BIZMAIL-ID: 14255173392584887602 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Subject: [PATCH v4 10/12] selftests/nolibc: add test support for ppc64 Date: Wed, 2 Aug 2023 03:46:52 +0800 Message-Id: <78c00ef1bc4abe88d46415a396a7648c3e0885cc.1690916314.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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=no 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: 1773059897471487982 X-GMAIL-MSGID: 1773059897471487982 Kernel uses ARCH=powerpc for both 32-bit and 64-bit PowerPC, here adds a ppc64 variant for big endian 64-bit PowerPC, users can pass ARCH=ppc64 to test it. 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. Notes, - 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: - since the VSX support may be disabled in kernel side, to avoid "illegal instruction" errors due to missing VSX kernel support, let's simply let compiler not generate vector/scalar (VSX) instructions via the '-mno-vsx' option. - as 'man gcc' shows, '-mmultiple' is used to generate code that uses the load multiple word instructions and the store multiple word instructions. Those instructions do not work when the processor is in little-endian mode (except PPC740/PPC750), so, we only enable it for big endian powerpc. [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/ Suggested-by: Willy Tarreau Link: https://lore.kernel.org/lkml/20230722121019.GD17311@1wt.eu/ Link: https://lore.kernel.org/lkml/20230719043353.GC5331@1wt.eu/ Reviewed-by: Thomas Weißschuh 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 8ec2ae33fdcd..ef4b8ba83898 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -38,6 +38,7 @@ XARCH = $(or $(XARCH_$(ARCH)),$(ARCH)) # map from user input variants to their kernel supported architectures ARCH_ppc = powerpc +ARCH_ppc64 = powerpc ARCH_ppc64le = powerpc ARCH := $(or $(ARCH_$(XARCH)),$(XARCH)) @@ -49,6 +50,7 @@ IMAGE_arm64 = arch/arm64/boot/Image IMAGE_arm = arch/arm/boot/zImage IMAGE_mips = vmlinuz IMAGE_ppc = vmlinux +IMAGE_ppc64 = vmlinux IMAGE_ppc64le = arch/powerpc/boot/zImage IMAGE_riscv = arch/riscv/boot/Image IMAGE_s390 = arch/s390/boot/bzImage @@ -64,6 +66,7 @@ DEFCONFIG_arm64 = defconfig DEFCONFIG_arm = multi_v7_defconfig DEFCONFIG_mips = malta_defconfig DEFCONFIG_ppc = pmac32_defconfig +DEFCONFIG_ppc64 = powernv_be_defconfig DEFCONFIG_ppc64le = powernv_defconfig DEFCONFIG_riscv = defconfig DEFCONFIG_s390 = defconfig @@ -85,6 +88,7 @@ QEMU_ARCH_arm64 = aarch64 QEMU_ARCH_arm = arm QEMU_ARCH_mips = mipsel # works with malta_defconfig QEMU_ARCH_ppc = ppc +QEMU_ARCH_ppc64 = ppc64 QEMU_ARCH_ppc64le = ppc64le QEMU_ARCH_riscv = riscv64 QEMU_ARCH_s390 = s390x @@ -99,6 +103,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_ppc = -M g3beige -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_ppc64 = -M powernv -append "console=hvc0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" QEMU_ARGS_ppc64le = -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=%)" @@ -115,6 +120,7 @@ else Q=@ endif +CFLAGS_ppc64 = -m64 -mbig-endian -Wl,-EB,-melf64ppc -mmultiple -mno-vsx CFLAGS_ppc64le = -m64 -mlittle-endian -Wl,-EL,-melf64ppc -mno-vsx CFLAGS_s390 = -m64 CFLAGS_mips = -EL From patchwork Tue Aug 1 19:47:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 129475 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:6359:610b:b0:134:c3fc:3153 with SMTP id rz11csp51967rwb; Tue, 1 Aug 2023 13:51:07 -0700 (PDT) X-Google-Smtp-Source: APBJJlGDhLqlvmdyQnuMI08BdVlJdiC7fQK8z4vO14x+o6wjWFFhFFQArVFSdghLsyfG7LnsLKmF X-Received: by 2002:a05:651c:90:b0:2b9:da28:c50b with SMTP id 16-20020a05651c009000b002b9da28c50bmr3171117ljq.16.1690923066767; Tue, 01 Aug 2023 13:51:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690923066; cv=none; d=google.com; s=arc-20160816; b=dpZtZ3i1ZWeB3knPWwD1KKXeKmh7I4wJLygXnvh3XeVrLR9ECpMBNITOnDxe58ZNM1 bU6e6wNH3NsFUGw+/8+1E8k7zi862grezAw03254mWdWPwS2HRzqavBLGeE02/cLhRmr 8yxX02Ag8f73tRm4rNldfsPCVIq3trGvJdGxB/bVlyN+oFUY7FatoPdaT5ovHFOJ1iMI o0gPK9bw+/vbbiYmjYPZDTzdd+6fX4pocGJ8L23uBPFiBXW1KRt2NPAc2+bWwx7h/lVq djKifQLUjOyGIBFvIfljlM6QgdcHlzLX7Fb7TI0S7l1tV0Ui9qSam/WV4hbm9BeuWwA7 3oZA== 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=aYYTdvv91LYmBqKr+7Cyjbfe9tF7wGEaHJPvWSwWwEM=; fh=xUlByBi+AOhlmUOP7Fsh4gyC+PRyawzp/HzGQQ0fKGA=; b=gqwipeTCMy9o1Uk3eA++JFcvT86yuygct2Y6WtUj5E0ASdgyM/6fIfxWnMOk4hHN1l 01K72ssiKWjNBrR1dg6U9ZHGEq4lEut5crQ5AYUoL2PmXrL3m1SnUHXKHSYYpA0YkrCM t5MBxQ1WCqi867MUq4CPt+OuKMRkanyjyzG+F1lt6arF0KtOI3sjkQ9RNJqYIcA4DptA 67CWnst1nRE33AMo1/uyAf1QU+laBP/Y7V2mbBeu0O0dtOcVcwYgkZSJwfghiYPMotz8 gcFTCWrywfuf2WGBuTL84PISg/7dK19zBIO4fQXf+fAGw5+wQlAEfEiwtDdu0Fv+Zhdf 0K6A== 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 os11-20020a170906af6b00b0099b92d054e3si9475789ejb.930.2023.08.01.13.50.42; Tue, 01 Aug 2023 13:51:06 -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 S231220AbjHATsO (ORCPT + 99 others); Tue, 1 Aug 2023 15:48:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36972 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229890AbjHATsN (ORCPT ); Tue, 1 Aug 2023 15:48:13 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C12CEB4; Tue, 1 Aug 2023 12:48:09 -0700 (PDT) X-QQ-mid: bizesmtp83t1690919278t8pql6gz Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:47:57 +0800 (CST) X-QQ-SSF: 01200000000000E0X000000A0000000 X-QQ-FEAT: eSZ1CZgv+JA9h5VCVgqY6MkV5uUtGo/eDvsJodtq4QX2oqDVwJxGvf/IXII05 Tz4myMiYEKONc6Jeqvdg2I9K6zi9iy/r7CNyiQUUcCQD5IrSkzlfXx46bEx6ak74l858j6m hTOUUlK+ErbZEh/b6SvaZCxIv8fx0ibJywec20+H4T02kxIXBbeu7oTIfsdDxe+t6+xE/r8 tI/o9uVmRS/JT/H0Tr47Aac2TLg/adCa3HOWOAe2sOskwZCGfmLjzwyF8UNfZEtuoC4rDGR pcpMWDKAW9jgGlTkM+HuSGSU77e+WOekppFhSKD/XKqUI1toj+L2jasvT79dMM1rnNo5pYs hY7TBbyyBh96R+NsNZcj9h/a9rcINGRZTUNCdOmYYU02I25kdTrc2uj/OcdyQ== X-QQ-GoodBg: 0 X-BIZMAIL-ID: 12213163372342397090 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu Subject: [PATCH v4 11/12] selftests/nolibc: allow customize CROSS_COMPILE by architecture Date: Wed, 2 Aug 2023 03:47:57 +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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no 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: 1773061345334771725 X-GMAIL-MSGID: 1773061345334771725 Some cross compilers may not just be prefixed with ARCH, customize them by architecture may simplify the test a lot, especially, when iterate with ARCH. After customizing this for every architecture, the minimal test argument will be architecture itself, no CROSS_COMPILE required to be passed. If the prefix of installed cross compiler is not the same as the one customized, we can also pass CROSS_COMPILE as before or even pass CROSS_COMPILE_. 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 ef4b8ba83898..822cc4bae619 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -58,6 +58,12 @@ IMAGE_loongarch = arch/loongarch/boot/vmlinuz.efi IMAGE = $(IMAGE_$(XARCH)) IMAGE_NAME = $(notdir $(IMAGE)) +# CROSS_COMPILE: cross toolchain prefix by architecture +CROSS_COMPILE ?= $(CROSS_COMPILE_$(XARCH)) + +# make sure CC is prefixed with CROSS_COMPILE +$(call allow-override,CC,$(CROSS_COMPILE)gcc) + # default kernel configurations that appear to be usable DEFCONFIG_i386 = defconfig DEFCONFIG_x86_64 = defconfig From patchwork Tue Aug 1 19:49:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhangjin Wu X-Patchwork-Id: 129484 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f41:0:b0:3e4:2afc:c1 with SMTP id v1csp21865vqx; Tue, 1 Aug 2023 14:24:21 -0700 (PDT) X-Google-Smtp-Source: APBJJlE4LAPMoA5GddSKDpHjSuyxRg0n7UJs5I7D64TRghlbb2Q2gexGKcHR0lWpQHQOitGppFRJ X-Received: by 2002:a17:906:2ca:b0:99b:d294:2607 with SMTP id 10-20020a17090602ca00b0099bd2942607mr3957303ejk.31.1690925060873; Tue, 01 Aug 2023 14:24:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690925060; cv=none; d=google.com; s=arc-20160816; b=PRpdJA8a0K3y3RnjWZ6RDE1U0dWvfW52Fogutsk1kjUJXJO0jNucmr/zRTWQKMSQQq ViH6Wvkdgr6zBnsVRDM14scnO7OxTEqbe5KPiqt7E9P9zqynbfcc1JN82yrR8KmE8ED8 NRZ+MTmo9O5AVzgLJPbpssaMudIuST/OovXcs1xXzQlhzCBjJScwVq5i6/3JHCAi1dLt u5sg9U/o03nrEmql20MFgwMGIArn6MERBIXSAFZv5bfgfKQdYg9mYNgSygaw+M81RjwL HiUd6J+6lZSBlSi4OAauyfeo6zzvrH8rEinjhGPAYpu80e7QZzsYYN8i0raYBaw10HcI IoVw== 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=h1hce1XQL3imKvDFyakfRoZ8Dl55eL9y89H47qJCV38=; fh=xUlByBi+AOhlmUOP7Fsh4gyC+PRyawzp/HzGQQ0fKGA=; b=MUTj1JUuvyjB2dB4ETq1Mk9xTjccwl3Odq++CdXXkWYZDih2HO1+lhA96m3ann0qwa oeymSJrH3pVD1876Ap4PcDy/hgRvGIyVb3crI2pHuYav/LJZDqY0SQJI0/qH9ZSD1VYO RKp+0hNSsYygvAP226hFAEL2+9DtXTUrhRDh4ao6Fp8AEfShEJe0LDpBfBeWJN76qZOw C2TnTTcIqN85gTyJ/BkeTqS1e43btd6tm0vQLIIJYkvB74stNJh0akSs3b13Uv2AVnGc KkomV+1Mk3cI1IZ7mf42Pt780hO01KjfvkhmKeLTcdyAEPJPU/k+JO8gyshjkmP9QHLs HfQg== 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 d9-20020a17090648c900b0099a1fb56239si9765030ejt.476.2023.08.01.14.23.56; Tue, 01 Aug 2023 14:24:20 -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 S231906AbjHATtZ (ORCPT + 99 others); Tue, 1 Aug 2023 15:49:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37454 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231540AbjHATtT (ORCPT ); Tue, 1 Aug 2023 15:49:19 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B67A92728; Tue, 1 Aug 2023 12:49:14 -0700 (PDT) X-QQ-mid: bizesmtp68t1690919344to62hk3f Received: from linux-lab-host.localdomain ( [116.30.131.233]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 02 Aug 2023 03:49:03 +0800 (CST) X-QQ-SSF: 01200000000000E0X000000A0000000 X-QQ-FEAT: znfcQSa1hKbBLWA55kcreUoddWXsgcsDCazeEwO2EhbsxtiTpktOt/e/Dttm0 0d2GKEdeHpAlQwJQc3xXv8/2hBO3KsmrrxKPL3jGr3MWPA9GxVCPnIPATBHor3ACABVMZfj 7qWXxXaJP9Iuemw10epz54mNEH5W8RCBv5W7s5kCHNz3OBvvp1+UM2hiwsIhhUbGqqyb0ty SleE80b0rdcpqcWRlPXfV/cBbMXSyzLv4rd2ZV5IkMC57UPTyJZ3Nn53TDpRn89twxNILW/ AmBUYGSLbQZEd1guuWP4AnSO0jMoRE69nWaaobj9bGSc3z844fiuw/Pnf+6ZWu0ywsftYTA vQKdfHdaPZ9nrpcs8+OO4zIuN7alsc3WiBUB67iSWwgDQVgrItbEX14GQT/LNoDdEQYXqDi X-QQ-GoodBg: 0 X-BIZMAIL-ID: 18295623081681766068 From: Zhangjin Wu To: thomas@t-8ch.de Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, w@1wt.eu Subject: [PATCH v4 12/12] selftests/nolibc: customize CROSS_COMPILE for 32/64-bit powerpc Date: Wed, 2 Aug 2023 03:49:02 +0800 Message-Id: <2780d43e9d0a1e0e39e98b111766503eab01f4d7.1690916314.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=-0.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=no 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: 1773063436687557258 X-GMAIL-MSGID: 1773063436687557258 The little-endian powerpc64le compilers provided by Ubuntu and Fedora are able to compile big endian kernel and big endian nolibc-test [1]. These default CROSS_COMPILE settings allow to test target architectures with: $ cd /path/to/tools/testing/selftests/nolibc/ $ for arch in ppc ppc64 ppc64le; do \ make run-user ARCH=$arch | grep "status: "; \ done If want to use another cross compiler, please simply pass CROSS_COMPILE or CC as before. For example, it is able to build 64-bit nolibc-test with the big endian powerpc64-linux-gcc crosstool from [2]: $ wget -c https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/13.1.0/x86_64-gcc-13.1.0-nolibc-powerpc64-linux.tar.xz $ tar xvf x86_64-gcc-13.1.0-nolibc-powerpc64-linux.tar.xz $ export PATH=$PWD/gcc-13.1.0-nolibc/powerpc64-linux/bin/:$PATH $ export CROSS_COMPILE_ppc64=powerpc64-linux- $ export CROSS_COMPILE_ppc64le=powerpc64-linux- $ for arch in ppc64 ppc64le; do \ make run-user ARCH=$arch | grep "status: "; \ done Or specify CC directly with full path: $ export CC=$PWD/gcc-13.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc $ for arch in ppc64 ppc64le; do \ make run-user ARCH=$arch | grep "status: "; \ done [1]: https://github.com/open-power/skiboot [2]: https://mirrors.edge.kernel.org/pub/tools/crosstool/ Signed-off-by: Zhangjin Wu --- tools/testing/selftests/nolibc/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index 822cc4bae619..f44a09c39235 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -59,6 +59,9 @@ IMAGE = $(IMAGE_$(XARCH)) IMAGE_NAME = $(notdir $(IMAGE)) # CROSS_COMPILE: cross toolchain prefix by architecture +CROSS_COMPILE_ppc ?= powerpc-linux-gnu- +CROSS_COMPILE_ppc64 ?= powerpc64le-linux-gnu- +CROSS_COMPILE_ppc64le ?= powerpc64le-linux-gnu- CROSS_COMPILE ?= $(CROSS_COMPILE_$(XARCH)) # make sure CC is prefixed with CROSS_COMPILE