From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oa1-x2f.google.com (mail-oa1-x2f.google.com [IPv6:2001:4860:4864:20::2f]) by sourceware.org (Postfix) with ESMTPS id 9443C3858D20 for ; Tue, 11 Apr 2023 14:15:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9443C3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-1845f865452so4662798fac.12 for ; Tue, 11 Apr 2023 07:15:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1681222532; x=1683814532; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=qyg5aF3dxO9heLECsBTgWlLp6JzMdQ2WYGyuPWUYY7Y=; b=AHWNw5VBJAq6x87Y4ZSEUJnEvR7Pkjomy+bKufEwsOuK3pe6ChtvxRK+VR7CzqDbe6 j+SfqZ3adZVPvVVxMyX0SSpuHMDLOnsz0Rj3+nxTbdbv76HEH3GD/Hv0Ae3Z3nW+tbty +fWQ734rPwfhCoe/FvmzMNr30KR7XjrvhZ8VYflRUsiD22tWL9xvdIqWangLZ6GRhREb 75NV91LOncJlILYpY0MmkKfTszEjcKC8JVUWh4RBl3dozzVUfmI2RsiSu0BLLxrhXLKu uMYzfoUPXv+5Yg7cs+Sw8RmHEouTwROF+xCDx6npKpgEViJK62/tSDmsZoyK9uBiik8Y YUNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681222532; x=1683814532; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qyg5aF3dxO9heLECsBTgWlLp6JzMdQ2WYGyuPWUYY7Y=; b=Ap+Qo4n6GjVSCu1Ya5+tchPcs6qqAO/xcOV+5Qpua8Heg141Ejjeb6vhslnXBs9EUA Ul/uP12DI3H9rDG8B0EHvHeCLTKxby9b9kuFNk9aVRebDoJ+mvxzXBBgzWHTkpRbWjQ1 DL+W0VTaH55KO18bzaVpZ6xaD+1CvSltMu3CkYPS1g0ASTcL+ao2d4WQMX9QVYVWDAvp E9uibjTtIBOfW8jqE0hBsQVfHSY/euJlxR+V/nS1FnmEOymjONtXkopL5xqFdmjLWuTK KEZZ8OnL1PzkTWV8wHDfLfMEG2/R9sfcIocR7gsVg4C5SutO2DsqwxFuajOuDGjFMTPR 7eHQ== X-Gm-Message-State: AAQBX9eWFp0RSltckYQzfomPCZ39/KTn1joj1XLVA2rsCafHatRX5omh ZyVKlIgz1ne51DB+a5MYg+6leg== X-Google-Smtp-Source: AKy350apHhFug3KFjQn86V8ahXPc6qvsXssSCSU4rf3sNhMWIcEOI+OFZZIzFBN8QmlHgVQwqQMo4Q== X-Received: by 2002:a05:6870:5a7:b0:17a:3e4:e9dc with SMTP id m39-20020a05687005a700b0017a03e4e9dcmr5562932oap.51.1681222531797; Tue, 11 Apr 2023 07:15:31 -0700 (PDT) Received: from ?IPV6:2804:1b3:a7c2:55a1:1474:97d8:bf65:d9d0? ([2804:1b3:a7c2:55a1:1474:97d8:bf65:d9d0]) by smtp.gmail.com with ESMTPSA id tm19-20020a0568718a9300b0017b21991355sm5115062oab.20.2023.04.11.07.15.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 11 Apr 2023 07:15:31 -0700 (PDT) Message-ID: Date: Tue, 11 Apr 2023 11:15:28 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: [PATCH 2/2] aarch64: Set the syscall register right before doing the syscall. Content-Language: en-US To: Florian Weimer , Joe Simmons-Talbott via Libc-alpha Cc: Joe Simmons-Talbott References: <20230411133004.2268170-1-josimmon@redhat.com> <20230411133004.2268170-3-josimmon@redhat.com> <87h6tmil4j.fsf@oldenburg.str.redhat.com> From: Adhemerval Zanella Netto Organization: Linaro In-Reply-To: <87h6tmil4j.fsf@oldenburg.str.redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 11/04/23 10:50, Florian Weimer via Libc-alpha wrote: > * Joe Simmons-Talbott via Libc-alpha: > >> ({ long _sys_result; \ >> { \ >> LOAD_ARGS_##nr (args) \ >> register long _x8 asm ("x8") = (name); \ >> + if (__builtin_constant_p(name)) \ >> + asm volatile ("mov x8, " MSTR(name) ";" \ >> + : /* no output */ : "i" (name) : "x8"); \ >> asm volatile ("svc 0 // syscall " # name \ >> : "=r" (_x0) : "r"(_x8) ASM_ARGS_##nr : "memory"); \ >> _sys_result = _x0; \ > > I think you should do this in a single assembler statement, load the > constant only once. Is this required because compiler is free to reorganize the argument list? I think it should me it clear on the commit message. Using a single assembler would require two inline asm, something like: diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/sysdeps/unix/sysv/linux/aarch64/sysdep.h index e94d1703ad..2a128bb72d 100644 --- a/sysdeps/unix/sysv/linux/aarch64/sysdep.h +++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.h @@ -172,9 +172,19 @@ ({ long _sys_result; \ { \ LOAD_ARGS_##nr (args) \ - register long _x8 asm ("x8") = (name); \ - asm volatile ("svc 0 // syscall " # name \ - : "=r" (_x0) : "r"(_x8) ASM_ARGS_##nr : "memory"); \ + if (__builtin_constant_p (name)) \ + asm volatile ("mov x8, %1\n" \ + "svc 0 // syscall " # name \ + : "=r" (_x0) \ + : "i" (name) ASM_ARGS_##nr \ + : "x8", "memory"); \ + else \ + { \ + register long _x8 asm ("x8") = (name); \ + asm volatile ("svc 0 // syscall " # name \ + : "=r" (_x0) \ + : "r"(_x8) ASM_ARGS_##nr : "memory"); \ + } \ _sys_result = _x0; \ } \ _sys_result; }) Which really makes me doubt if this extra complexity is really necessary...