From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9C2CEC02181 for ; Fri, 24 Jan 2025 18:23:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=5tYryvB6Kxfi5VGwTRAd0joLQAcs9jfHri86xAsoa0k=; b=E/b3GzmnyYHqph fZL2L2nEl9dnUZGk6rWdkmaUYt3s3DB3tZESoV1ZEftSPTaJ5CGsFvy+8He0P1ig0zR25F760bktO oSXipPMWyH0ZgdnwJk/cmlAuY0UU6J9UMDL2+L47FaV4lPP5mfScZs+cwc27vxVJvn4m06mmieAz4 pO1f4B7H9uDLXiV9vYCzVMr91j8IW5EuYH/0qmxWOdi2Jkk7U79vAmN7J+9dUmgbfMliXKMEEgbiJ kqBvrjdS6BMSm8l64smuOJRiWV6Ll9KlmiJN5B7vMQlT2q9RUTd6+jOiA+a5Jhp/Hd5ZRjP2ss1ez tUH2mjI/3I9GXjpCjA8Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tbOKv-0000000FHeo-2bWS; Fri, 24 Jan 2025 18:23:21 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tbOKs-0000000FHe6-17wV for linux-riscv@lists.infradead.org; Fri, 24 Jan 2025 18:23:20 +0000 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2166022c5caso39589045ad.2 for ; Fri, 24 Jan 2025 10:23:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1737742997; x=1738347797; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=TmhY1Ao+VmFSDo1BmTvqptG8gc/CxBrrxfn8sS/HsAc=; b=gaTC7ZYORTnq5wAJhaC4j5uynnpqsxOyWQoPCm0CZMMz2VJQ06ks8BIsgxdZd9RILy AxWCwo2bOrhwyjSy9C4qwOMXRoML/L5ENTs92ETnEjhdIXfR/bjXWx3uZ7IUmm8l7vI/ K3zkP5Aog7jnOc6wD9XGt8h0YahC0USfwT5+2DSUuYnAjrUWO4+qYVg3pLYpJ0rJmnxc EJwXns9K8T3IchTD+PIhOLEPczZj11Rti3ObOInRrnrPjnEAk5+/gde+liNoQJbXeqIp xizC/yd7CxFgyW5fwV3n4bxTmIyQHS3c1yHM77pHVEtZZgDWQms0ZiJ0ncRfS2bTQlcx aXww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737742997; x=1738347797; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=TmhY1Ao+VmFSDo1BmTvqptG8gc/CxBrrxfn8sS/HsAc=; b=QGQwNcUq5W3qs9Huz/PIzVP2VxjSXMghLTM//1ze9c8LHaUBT377S9sfcYjVT0o2n8 AaAy6133Ub9zV1t9+J6/sjabGG07WoydnLDtlruSrZdwVOHIZjag4vwRlyXVvfxtNwkm P4noho7kuYHbnfHuTts5+Wop+5M9JWhrLTcViNNaEqC4vw9CU1oA9niKupVxpxV6A6lW RyNHqGlDP+v3Q32+WvRKm6jfJlem0ZVqXuN/ev/QkefXN4Pm4B+6TAO6d1umGEZMHNy7 9wgbVUsXQ1Xvit3MoLXTLSZGkxbtRaF948LwqdVhbpX9KNNhTV2qdbdcPdVuzGc1ilTj vhDw== X-Forwarded-Encrypted: i=1; AJvYcCWNg6d4HJdzChy7VzgMZjK7853DawawtMpXaTnx7GyuoLMjeICYzZXEF1PY+ka//BuELYERO6al6TKXYw==@lists.infradead.org X-Gm-Message-State: AOJu0YwPXSppwa3wL+dQhzTnNkGrWLbVPK2EEmUPOHu1+AyFbFzJyJ11 /lyKKkEZ/k6MiOTkXW8ftrYSRDbr9W2xcSY+Dz2lwAHYaVQCHYc3uEIzqG+MdKM= X-Gm-Gg: ASbGncumr/GFTcqp6x3XTJ0LNAJpBLg6Cpi22KdGDzAEdArwJVonPZLAf3/0eGWF3Bo e/XDYWJcpJl2I4V8eXCYLbIQaRhkFTfrS9lqF3wpayHr21ULuqsZuFSmHY3S1FdJMyL0R/zEUoT xtdjapBea8bPe1B9qwLMXnnldhmyCnTWHCXnvSIFIdRJ7bjAca9u4WAwGxvW9re5xwtEmEuM2E2 i4BJc2ZskjzGjgeazYdxDurRr0eIdKlMYyh2wqJ2QRuHJpP60Mv8QO5B1twoAb+h2Zkg3Ln3rI= X-Google-Smtp-Source: AGHT+IE6FKbO9CSqOPIUS3pPhPqeJw2iYJFTBLHuyDPPhL8KY4QiJJLGFriia3fJ1HeHTCC8w5ilww== X-Received: by 2002:a17:902:ea03:b0:215:b33b:e26d with SMTP id d9443c01a7336-21c3550c5d3mr520132085ad.21.1737742997486; Fri, 24 Jan 2025 10:23:17 -0800 (PST) Received: from ghost ([2601:647:6700:64d0:63b:8ac9:503a:b81d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21da413f474sm19579925ad.130.2025.01.24.10.23.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 10:23:16 -0800 (PST) Date: Fri, 24 Jan 2025 10:23:14 -0800 From: Charlie Jenkins To: Brian Gerst Cc: Paul Walmsley , Palmer Dabbelt , Huacai Chen , WANG Xuerui , Thomas Gleixner , Peter Zijlstra , Andy Lutomirski , Alexandre Ghiti , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev Subject: Re: [PATCH v2 1/4] riscv: entry: Convert ret_from_fork() to C Message-ID: References: <20250123-riscv_optimize_entry-v2-0-7c259492d508@rivosinc.com> <20250123-riscv_optimize_entry-v2-1-7c259492d508@rivosinc.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250124_102318_574355_3AA21160 X-CRM114-Status: GOOD ( 28.65 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gRnJpLCBKYW4gMjQsIDIwMjUgYXQgMDg6MTQ6MDhBTSAtMDUwMCwgQnJpYW4gR2Vyc3Qgd3Jv dGU6Cj4gT24gVGh1LCBKYW4gMjMsIDIwMjUgYXQgMjoxNeKAr1BNIENoYXJsaWUgSmVua2lucyA8 Y2hhcmxpZUByaXZvc2luYy5jb20+IHdyb3RlOgo+ID4KPiA+IE1vdmUgdGhlIG1haW4gc2VjdGlv biBvZiByZXRfZnJvbV9mb3JrKCkgdG8gQyB0byBhbGxvdyBpbmxpbmluZyBvZgo+ID4gc3lzY2Fs bF9leGl0X3RvX3VzZXJfbW9kZSgpLgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IENoYXJsaWUgSmVu a2lucyA8Y2hhcmxpZUByaXZvc2luYy5jb20+Cj4gPiAtLS0KPiA+ICBhcmNoL3Jpc2N2L2luY2x1 ZGUvYXNtL2FzbS1wcm90b3R5cGVzLmggfCAgMSArCj4gPiAgYXJjaC9yaXNjdi9rZXJuZWwvZW50 cnkuUyAgICAgICAgICAgICAgIHwgMTUgKysrKysrLS0tLS0tLS0tCj4gPiAgYXJjaC9yaXNjdi9r ZXJuZWwvcHJvY2Vzcy5jICAgICAgICAgICAgIHwgMTQgKysrKysrKysrKysrLS0KPiA+ICAzIGZp bGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQo+ID4KPiA+IGRp ZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS1wcm90b3R5cGVzLmggYi9hcmNo L3Jpc2N2L2luY2x1ZGUvYXNtL2FzbS1wcm90b3R5cGVzLmgKPiA+IGluZGV4IGNkNjI3ZWMyODlm MTYzYTYzMGI3M2RkMDNkZDUyYTZiMjg2OTI5OTcuLjczM2ZmNjA5Nzc4Nzk3MDAxMDA2YzMzYmJh OWUzY2M1YjFmMTUzODcgMTAwNjQ0Cj4gPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2Fz bS1wcm90b3R5cGVzLmgKPiA+ICsrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLXByb3Rv dHlwZXMuaAo+ID4gQEAgLTUyLDYgKzUyLDcgQEAgREVDTEFSRV9ET19FUlJPUl9JTkZPKGRvX3Ry YXBfZWNhbGxfcyk7Cj4gPiAgREVDTEFSRV9ET19FUlJPUl9JTkZPKGRvX3RyYXBfZWNhbGxfbSk7 Cj4gPiAgREVDTEFSRV9ET19FUlJPUl9JTkZPKGRvX3RyYXBfYnJlYWspOwo+ID4KPiA+ICthc21s aW5rYWdlIHZvaWQgcmV0X2Zyb21fZm9yayh2b2lkICpmbl9hcmcsIGludCAoKmZuKSh2b2lkICop LCBzdHJ1Y3QgcHRfcmVncyAqcmVncyk7Cj4gPiAgYXNtbGlua2FnZSB2b2lkIGhhbmRsZV9iYWRf c3RhY2soc3RydWN0IHB0X3JlZ3MgKnJlZ3MpOwo+ID4gIGFzbWxpbmthZ2Ugdm9pZCBkb19wYWdl X2ZhdWx0KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKPiA+ICBhc21saW5rYWdlIHZvaWQgZG9faXJx KHN0cnVjdCBwdF9yZWdzICpyZWdzKTsKPiA+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5l bC9lbnRyeS5TIGIvYXJjaC9yaXNjdi9rZXJuZWwvZW50cnkuUwo+ID4gaW5kZXggMzNhNWE5ZjJh MGQ0ZTFlZWNjZmIzNjIxYjllNTE4Yjg4ZTFiMDcwNC4uOTIyNWMzMjIyNzlhYTkwZTczN2IxZDcx NDRkYjA4NDMxOWNmODEwMyAxMDA2NDQKPiA+IC0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL2VudHJ5 LlMKPiA+ICsrKyBiL2FyY2gvcmlzY3Yva2VybmVsL2VudHJ5LlMKPiA+IEBAIC0zMTksMTcgKzMx OSwxNCBAQCBTWU1fQ09ERV9FTkQoaGFuZGxlX2tlcm5lbF9zdGFja19vdmVyZmxvdykKPiA+ICBB U01fTk9LUFJPQkUoaGFuZGxlX2tlcm5lbF9zdGFja19vdmVyZmxvdykKPiA+ICAjZW5kaWYKPiA+ Cj4gPiAtU1lNX0NPREVfU1RBUlQocmV0X2Zyb21fZm9yaykKPiA+ICtTWU1fQ09ERV9TVEFSVChy ZXRfZnJvbV9mb3JrX2FzbSkKPiA+ICAgICAgICAgY2FsbCBzY2hlZHVsZV90YWlsCj4gPiAtICAg ICAgIGJlcXogczAsIDFmICAgICAvKiBub3QgZnJvbSBrZXJuZWwgdGhyZWFkICovCj4gPiAtICAg ICAgIC8qIENhbGwgZm4oYXJnKSAqLwo+ID4gLSAgICAgICBtb3ZlIGEwLCBzMQo+ID4gLSAgICAg ICBqYWxyIHMwCj4gPiAtMToKPiA+IC0gICAgICAgbW92ZSBhMCwgc3AgLyogcHRfcmVncyAqLwo+ ID4gLSAgICAgICBjYWxsIHN5c2NhbGxfZXhpdF90b191c2VyX21vZGUKPiA+ICsgICAgICAgbW92 ZSBhMCwgczEgLyogZm4gKi8KPiA+ICsgICAgICAgbW92ZSBhMSwgczAgLyogZm5fYXJnICovCj4g PiArICAgICAgIG1vdmUgYTIsIHNwIC8qIHB0X3JlZ3MgKi8KPiA+ICsgICAgICAgY2FsbCByZXRf ZnJvbV9mb3JrCj4gPiAgICAgICAgIGogcmV0X2Zyb21fZXhjZXB0aW9uCj4gPiAtU1lNX0NPREVf RU5EKHJldF9mcm9tX2ZvcmspCj4gPiArU1lNX0NPREVfRU5EKHJldF9mcm9tX2ZvcmtfYXNtKQo+ ID4KPiA+ICAjaWZkZWYgQ09ORklHX0lSUV9TVEFDS1MKPiA+ICAvKgo+ID4gZGlmZiAtLWdpdCBh L2FyY2gvcmlzY3Yva2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvcmlzY3Yva2VybmVsL3Byb2Nlc3Mu Ywo+ID4gaW5kZXggNThiNjQ4MmMyYmY2NjJiZjUyMjRjYTUwYzhlMjFhNjg3NjBhNmI0MS4uMGQw N2U2ZDhmNmI1N2JlYmE0MzhkYmJhNWU4Yzc0YTAxNDU4MmJlZSAxMDA2NDQKPiA+IC0tLSBhL2Fy Y2gvcmlzY3Yva2VybmVsL3Byb2Nlc3MuYwo+ID4gKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvcHJv Y2Vzcy5jCj4gPiBAQCAtMTcsNyArMTcsOSBAQAo+ID4gICNpbmNsdWRlIDxsaW51eC9wdHJhY2Uu aD4KPiA+ICAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgo+ID4gICNpbmNsdWRlIDxsaW51eC9w ZXJzb25hbGl0eS5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9lbnRyeS1jb21tb24uaD4KPiA+Cj4g PiArI2luY2x1ZGUgPGFzbS9hc20tcHJvdG90eXBlcy5oPgo+ID4gICNpbmNsdWRlIDxhc20vdW5p c3RkLmg+Cj4gPiAgI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KPiA+ICAjaW5jbHVkZSA8YXNt L2Nzci5oPgo+ID4gQEAgLTM2LDcgKzM4LDcgQEAgdW5zaWduZWQgbG9uZyBfX3N0YWNrX2Noa19n dWFyZCBfX3JlYWRfbW9zdGx5Owo+ID4gIEVYUE9SVF9TWU1CT0woX19zdGFja19jaGtfZ3VhcmQp Owo+ID4gICNlbmRpZgo+ID4KPiA+IC1leHRlcm4gYXNtbGlua2FnZSB2b2lkIHJldF9mcm9tX2Zv cmsodm9pZCk7Cj4gPiArZXh0ZXJuIGFzbWxpbmthZ2Ugdm9pZCByZXRfZnJvbV9mb3JrX2FzbSh2 b2lkKTsKPiA+Cj4gPiAgdm9pZCBub2luc3RyIGFyY2hfY3B1X2lkbGUodm9pZCkKPiA+ICB7Cj4g PiBAQCAtMjA2LDYgKzIwOCwxNCBAQCBpbnQgYXJjaF9kdXBfdGFza19zdHJ1Y3Qoc3RydWN0IHRh c2tfc3RydWN0ICpkc3QsIHN0cnVjdCB0YXNrX3N0cnVjdCAqc3JjKQo+ID4gICAgICAgICByZXR1 cm4gMDsKPiA+ICB9Cj4gPgo+ID4gK2FzbWxpbmthZ2Ugdm9pZCByZXRfZnJvbV9mb3JrKHZvaWQg KmZuX2FyZywgaW50ICgqZm4pKHZvaWQgKiksIHN0cnVjdCBwdF9yZWdzICpyZWdzKQo+ID4gK3sK PiA+ICsgICAgICAgaWYgKHVubGlrZWx5KGZuKSkKPiA+ICsgICAgICAgICAgICAgICBmbihmbl9h cmcpOwo+ID4gKwo+ID4gKyAgICAgICBzeXNjYWxsX2V4aXRfdG9fdXNlcl9tb2RlKHJlZ3MpOwo+ ID4gK30KPiA+ICsKPiA+ICBpbnQgY29weV90aHJlYWQoc3RydWN0IHRhc2tfc3RydWN0ICpwLCBj b25zdCBzdHJ1Y3Qga2VybmVsX2Nsb25lX2FyZ3MgKmFyZ3MpCj4gPiAgewo+ID4gICAgICAgICB1 bnNpZ25lZCBsb25nIGNsb25lX2ZsYWdzID0gYXJncy0+ZmxhZ3M7Cj4gPiBAQCAtMjQyLDcgKzI1 Miw3IEBAIGludCBjb3B5X3RocmVhZChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnAsIGNvbnN0IHN0cnVj dCBrZXJuZWxfY2xvbmVfYXJncyAqYXJncykKPiA+ICAgICAgICAgcC0+dGhyZWFkLnJpc2N2X3Zf ZmxhZ3MgPSAwOwo+ID4gICAgICAgICBpZiAoaGFzX3ZlY3RvcigpKQo+ID4gICAgICAgICAgICAg ICAgIHJpc2N2X3ZfdGhyZWFkX2FsbG9jKHApOwo+ID4gLSAgICAgICBwLT50aHJlYWQucmEgPSAo dW5zaWduZWQgbG9uZylyZXRfZnJvbV9mb3JrOwo+ID4gKyAgICAgICBwLT50aHJlYWQucmEgPSAo dW5zaWduZWQgbG9uZylyZXRfZnJvbV9mb3JrX2FzbTsKPiA+ICAgICAgICAgcC0+dGhyZWFkLnNw ID0gKHVuc2lnbmVkIGxvbmcpY2hpbGRyZWdzOyAvKiBrZXJuZWwgc3AgKi8KPiA+ICAgICAgICAg cmV0dXJuIDA7Cj4gPiAgfQo+ID4KPiA+IC0tCj4gPiAyLjQzLjAKPiA+Cj4gPgo+IAo+IElzIHRo ZXJlIGEgc3BlY2lmaWMgcmVhc29uIHlvdSBkaWRuJ3QgbW92ZSB0aGUgY2FsbCB0byBzY2hlZHVs ZV90YWlsKCkKPiB0byB0aGUgQyBmdW5jdGlvbiwgbGlrZSBvbiB4ODY/CgpZZXMsIHRoZSBnZW5l cmF0ZWQgY29kZSBlbmRzIHVwIGJlaW5nIGRyYW1hdGljYWxseSB3b3JzZSBpZgpzY2hlZHVsZV90 YWlsKCkgaXMgbW92ZWQgaW50byBDLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGFyZyBmb3IKc2NoZWR1 bGVfdGFpbCgpIGlzIGFscmVhZHkgaW4gYTAgc28gdGhlIGV4dHJhIHN0YWNrIG1hbmlwdWxhdGlv bgppbnN0cnVjdGlvbnMgZW5kIHVwIHRha2luZyB1cCBhIGxvdCBvZiBpbnN0cnVjdGlvbnMuCgpX aXRoIHRoaXMgY2hhbmdlOgo8cmV0X2Zyb21fZm9ya19hc20+OgogICAgICAgZmY2NWIwOTcgICAg ICAgICAgICAgICAgYXVpcGMgICByYSwweGZmNjViCiAgICAgICAxZWUwODBlNyAgICAgICAgICAg ICAgICBqYWxyICAgIDQ5NChyYSkgIyBmZmZmZmZmZjgwMDUwMzhhIDxzY2hlZHVsZV90YWlsPgog ICAgICAgODUyNiAgICAgICAgICAgICAgICAgICAgbXYgICAgICBhMCxzMQogICAgICAgODVhMiAg ICAgICAgICAgICAgICAgICAgbXYgICAgICBhMSxzMAogICAgICAgODYwYSAgICAgICAgICAgICAg ICAgICAgbXYgICAgICBhMixzcAogICAgICAgZmY2MWIwOTcgICAgICAgICAgICAgICAgYXVpcGMg ICByYSwweGZmNjFiCiAgICAgICA2MDYwODBlNyAgICAgICAgICAgICAgICBqYWxyICAgIDE1NDIo cmEpICMgZmZmZmZmZmY4MDAxMDdiMCA8cmV0X2Zyb21fZm9yaz4KICAgICAgIGI1ZjUgICAgICAg ICAgICAgICAgICAgIGogICAgICAgZmZmZmZmZmY4MDlmNTA5ZSA8cmV0X2Zyb21fZXhjZXB0aW9u PgoKCjxyZXRfZnJvbV9mb3JrPjoKICAgICAgIDExMDEgICAgICAgICAgICAgICAgICAgIGFkZGkg ICAgc3Asc3AsLTMyCiAgICAgICBlODIyICAgICAgICAgICAgICAgICAgICBzZCAgICAgIHMwLDE2 KHNwKQogICAgICAgZWMwNiAgICAgICAgICAgICAgICAgICAgc2QgICAgICByYSwyNChzcCkKICAg ICAgIDEwMDAgICAgICAgICAgICAgICAgICAgIGFkZGkgICAgczAsc3AsMzIKICAgICAgIGU5OTEg ICAgICAgICAgICAgICAgICAgIGJuZXogICAgYTEsZmZmZmZmZmY4MDAxMDdjYyA8cmV0X2Zyb21f Zm9yaysweDFjPgogICAgICAgODUzMiAgICAgICAgICAgICAgICAgICAgbXYgICAgICBhMCxhMgog ICAgICAgMDA5ZGIwOTcgICAgICAgICAgICAgICAgYXVpcGMgICByYSwweDlkYgogICAgICAgYTMy MDgwZTcgICAgICAgICAgICAgICAgamFsciAgICAtMTQ4NihyYSkgIyBmZmZmZmZmZjgwOWViMWVl IDxzeXNjYWxsX2V4aXRfdG9fdXNlcl9tb2RlPgogICAgICAgNjBlMiAgICAgICAgICAgICAgICAg ICAgbGQgICAgICByYSwyNChzcCkKICAgICAgIDY0NDIgICAgICAgICAgICAgICAgICAgIGxkICAg ICAgczAsMTYoc3ApCiAgICAgICA2MTA1ICAgICAgICAgICAgICAgICAgICBhZGRpICAgIHNwLHNw LDMyCiAgICAgICA4MDgyICAgICAgICAgICAgICAgICAgICByZXQKICAgICAgIDxmb2xsb3dpbmcg aW5zdHJ1Y3Rpb25zIHVzZWQgb25seSBpbiB0aGUga2VybmVsIHRocmVhZCBjYXNlPgogICAgICAg ZmVjNDM0MjMgICAgICAgICAgICAgICAgc2QgICAgICBhMiwtMjQoczApCiAgICAgICA5NTgyICAg ICAgICAgICAgICAgICAgICBqYWxyICAgIGExCiAgICAgICBmZTg0MzYwMyAgICAgICAgICAgICAg ICBsZCAgICAgIGEyLC0yNChzMCkKICAgICAgIDg1MzIgICAgICAgICAgICAgICAgICAgIG12ICAg ICAgYTAsYTIKICAgICAgIDAwOWRiMDk3ICAgICAgICAgICAgICAgIGF1aXBjICAgcmEsMHg5ZGIK ICAgICAgIGExNjA4MGU3ICAgICAgICAgICAgICAgIGphbHIgICAgLTE1MTQocmEpICMgZmZmZmZm ZmY4MDllYjFlZSA8c3lzY2FsbF9leGl0X3RvX3VzZXJfbW9kZT4KICAgICAgIDYwZTIgICAgICAg ICAgICAgICAgICAgIGxkICAgICAgcmEsMjQoc3ApCiAgICAgICA2NDQyICAgICAgICAgICAgICAg ICAgICBsZCAgICAgIHMwLDE2KHNwKQogICAgICAgNjEwNSAgICAgICAgICAgICAgICAgICAgYWRk aSAgICBzcCxzcCwzMgogICAgICAgODA4MiAgICAgICAgICAgICAgICAgICAgcmV0CgpDb250cmFz dGVkIHdpdGggd2hhdCB0aGlzIGxvb2tzIGxpa2UgaWYgc2NoZWR1bGVfdGFpbCgpIGlzIGNhbGxl ZCBmcm9tCkMuCgo8cmV0X2Zyb21fZm9ya19hc20+OgogICAgICAgODVhNiAgICAgICAgICAgICAg ICAgICAgbXYgICAgICBhMSxzMQogICAgICAgODYyMiAgICAgICAgICAgICAgICAgICAgbXYgICAg ICBhMixzMAogICAgICAgODY4YSAgICAgICAgICAgICAgICAgICAgbXYgICAgICBhMyxzcAogICAg ICAgZmY2MWIwOTcgICAgICAgICAgICAgICAgYXVpcGMgICByYSwweGZmNjFiCiAgICAgICA2MGUw ODBlNyAgICAgICAgICAgICAgICBqYWxyICAgIDE1NTAocmEpICMgZmZmZmZmZmY4MDAxMDdiMCA8 cmV0X2Zyb21fZm9yaz4KICAgICAgIGJkZDUgICAgICAgICAgICAgICAgICAgIGogICAgICAgZmZm ZmZmZmY4MDlmNTA5ZSA8cmV0X2Zyb21fZXhjZXB0aW9uPgoKPHJldF9mcm9tX2Zvcms+OgogICAg ICAgNzE3OSAgICAgICAgICAgICAgICAgICAgYWRkaSAgICBzcCxzcCwtNDgKICAgICAgIGYwMjIg ICAgICAgICAgICAgICAgICAgIHNkICAgICAgczAsMzIoc3ApCiAgICAgICBlYzI2ICAgICAgICAg ICAgICAgICAgICBzZCAgICAgIHMxLDI0KHNwKQogICAgICAgZTg0YSAgICAgICAgICAgICAgICAg ICAgc2QgICAgICBzMiwxNihzcCkKICAgICAgIGU0NGUgICAgICAgICAgICAgICAgICAgIHNkICAg ICAgczMsOChzcCkKICAgICAgIGY0MDYgICAgICAgICAgICAgICAgICAgIHNkICAgICAgcmEsNDAo c3ApCiAgICAgICAxODAwICAgICAgICAgICAgICAgICAgICBhZGRpICAgIHMwLHNwLDQ4CiAgICAg ICA4NGIyICAgICAgICAgICAgICAgICAgICBtdiAgICAgIHMxLGEyCiAgICAgICA4OWFlICAgICAg ICAgICAgICAgICAgICBtdiAgICAgIHMzLGExCiAgICAgICA4OTM2ICAgICAgICAgICAgICAgICAg ICBtdiAgICAgIHMyLGEzCiAgICAgICAzYzczZjBlZiAgICAgICAgICAgICAgICBqYWwgICAgIGZm ZmZmZmZmODAwNTAzOGEgPHNjaGVkdWxlX3RhaWw+CiAgICAgICBlYzg5ICAgICAgICAgICAgICAg ICAgICBibmV6ICAgIHMxLGZmZmZmZmZmODAwMTA3ZTIgPHJldF9mcm9tX2ZvcmsrMHgzMj4KICAg ICAgIDg1NGEgICAgICAgICAgICAgICAgICAgIG12ICAgICAgYTAsczIKICAgICAgIDAwOWRiMDk3 ICAgICAgICAgICAgICAgIGF1aXBjICAgcmEsMHg5ZGIKICAgICAgIGEyMjA4MGU3ICAgICAgICAg ICAgICAgIGphbHIgICAgLTE1MDIocmEpICMgZmZmZmZmZmY4MDllYjFlZSA8c3lzY2FsbF9leGl0 X3RvX3VzZXJfbW9kZT4KICAgICAgIDcwYTIgICAgICAgICAgICAgICAgICAgIGxkICAgICAgcmEs NDAoc3ApCiAgICAgICA3NDAyICAgICAgICAgICAgICAgICAgICBsZCAgICAgIHMwLDMyKHNwKQog ICAgICAgNjRlMiAgICAgICAgICAgICAgICAgICAgbGQgICAgICBzMSwyNChzcCkKICAgICAgIDY5 NDIgICAgICAgICAgICAgICAgICAgIGxkICAgICAgczIsMTYoc3ApCiAgICAgICA2OWEyICAgICAg ICAgICAgICAgICAgICBsZCAgICAgIHMzLDgoc3ApCiAgICAgICA2MTQ1ICAgICAgICAgICAgICAg ICAgICBhZGRpICAgIHNwLHNwLDQ4CiAgICAgICA4MDgyICAgICAgICAgICAgICAgICAgICByZXQK ICAgICAgIDg1NGUgICAgICAgICAgICAgICAgICAgIG12ICAgICAgYTAsczMKICAgICAgIDk0ODIg ICAgICAgICAgICAgICAgICAgIGphbHIgICAgczEKICAgICAgIGI3ZDUgICAgICAgICAgICAgICAg ICAgIGogICAgICAgZmZmZmZmZmY4MDAxMDdjYSA8cmV0X2Zyb21fZm9yaysweDFhPgoKCnJldF9m cm9tX2ZvcmtfYXNtIGVuZHMgdXAgYmVpbmcgMiBpbnN0cnVjdGlvbnMgbW9yZSB3aGVuIGNhbGxp bmcgZnJvbQphc20sIGJ1dCB0aGUgdXNlciBmb3JrIHJldF9mcm9tX2ZvcmsgZW5kcyB1cCBiZWlu ZyBvbmx5IDEyIGluc3RydWN0aW9ucwpyYXRoZXIgdGhhbiAyMiBpbnN0cnVjdGlvbnMgd2hlbiBj YWxsaW5nIGZyb20gQy4gSWYgd2Ugd2VyZSBhYmxlIHRvIG1peAphc20gYW5kIEMgY29kZSBpbiBh IG5ha2VkIGZ1bmN0aW9uIHdlIHdvdWxkIGJlIGFibGUgdG8gZ2V0IHJpZCBvZiB0aGUKc3RhY2sg bWFuaXB1bGF0aW9uIGFuZCBzdGlsbCBiZSBhYmxlIHRvIGlubGluZSBDIGJ1dCB3ZSBkb24ndCBs aXZlIGluCnRoYXQgd29ybGQuLi4KCi0gQ2hhcmxpZQoKPiAKPiAKPiBCcmlhbiBHZXJzdAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3Yg bWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5C9E88F6C for ; Fri, 24 Jan 2025 18:23:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737743001; cv=none; b=CJRBLXlwxNRhJZyZoKeumdM8J299lTzyXrey/BOZiozKdO0sxJWDPKJ0jjpqvMQaIO/P9LPLux995gzDJwFzk6DXLq5Q3k3J0zeM11PRzL1NmoL9PRoNmTjkB94PNwwlBpQ5I3KNda5G9IaX8pxT/oB3/n+vPTe9jUv0l1iYz8w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737743001; c=relaxed/simple; bh=y3iIsWeWGHo0ltkA9gy7eXOdJFOX+uwzZPJtLIXikVU=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=nnQN5MWZ5G5ziRPYgkWdvXdnuMr9vS2ktUVQ2xmaql50p3YdbrT75+aSe9qU9wXBw1Sf/7nyMZWsf8JMRYU50n4Bs6HJzv8pW5r1lITcYg9iEuiGlcWRhOCrITReFIWU2pgoirIhReMHEJ3aO8PCJFcgA22OwbCEpR5IgEJyQ4w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=bB59y4uE; arc=none smtp.client-ip=209.85.214.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="bB59y4uE" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-21669fd5c7cso43849675ad.3 for ; Fri, 24 Jan 2025 10:23:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1737742997; x=1738347797; darn=lists.linux.dev; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=TmhY1Ao+VmFSDo1BmTvqptG8gc/CxBrrxfn8sS/HsAc=; b=bB59y4uEhnK6ndLYUlzXpM3K8k9bkCHqM/KRd5fjYXSrl2OlJZYGRSLLBZe2ntEOjE 60znp5lF+iL1wUYu1fmyJkCOY2WbGBCyJLg528w2rNmaugSa8o5WhCsG56+31xjxoXhz 3/vfhhAjZN1RHp0YSU9QO8cm/nUCb5pBcLIlrUwm84QAOf6wq7b/DdVmQfFV/0O4kTBB X97oh1j9kQfRr0o57g2WJnVIgOYL5bhRlOhD23D41GzyfkPWPzEelO7v5HmQ+I0aw1bS f2xz4g68/rs+30GdNfuhLJ1si3MzpcA3RT5BoAe8zr048hEwuqta9j6EGJr/KYeNOBW+ V/tA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737742997; x=1738347797; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=TmhY1Ao+VmFSDo1BmTvqptG8gc/CxBrrxfn8sS/HsAc=; b=P+/qNxwG1K2BsFL1mvIcKGfWnBetwdLrmsPREpL+6pmLjXzr8VhrG5HoF/pBftSLM5 WUwFU4NOw6u/YSZcvlA38ry3kc7P+4btStc+MDoPHhZ+Kv5wm9CkrVibnL9TgLJSgb1N 6qT3y/Au3p1UZj+MSYAoqihxIU0bBK+8jpTxexqnCOKtjv8fsp4Ua/gxNel63GZCO5Eg 6LuFoIhhIz43D84dPuXImGqGcN7CbdgfvxydczqqHgv7YhauGRsaq2IV5993wS5E+0ip DAcPjY8UnXC+eG7ROo0WcFxaSZtTvPym1/Ttti5Rk+wtqas/x6lqE3bI4dvUWkdSX7i1 9Taw== X-Forwarded-Encrypted: i=1; AJvYcCXLXEkvUFFqWqBNhbgABuDsR1lKXESFZOYRUt0itwwrfVsH4wb1oNXs78kNJgUZOTqCxRX8nDuLryE=@lists.linux.dev X-Gm-Message-State: AOJu0Yw1dxplhEnx9wmvPNrl2L1Qq4ilozHiuz9PXuNe3rNUMyaEtFTb StmBgWPJ5h+LgHmXZ1KfoUi7kwONJRhszzi2+amTXmDVEh4LrdWB+tOckcAv/Z0= X-Gm-Gg: ASbGncvQLK/6xb1RM3MF6FFTWDrWnB9H9t17Ti0nZxW7ohHxJMdhaMGaivzSaaSL5Vh JLYZ0eJxrpTDlAzVET3e7FRmS5fJO3OfWpRD5REywgP8/vLKwlU1677rto7mi48Brond1IyJRyp 7jM0gVaEo53AirJteeN4jFKR3b/pJwP0RvKMXi7Q5T7aQ48j5WAwKc4tSb4ZdZSJig8zSqIOjHZ yVvFKkU7s1eNmN00JhIV1YwmoahyO0MpfX6+8gY+QQ1TWsA0b/XisBH7x17s0bqoVy5G5H4tzk= X-Google-Smtp-Source: AGHT+IE6FKbO9CSqOPIUS3pPhPqeJw2iYJFTBLHuyDPPhL8KY4QiJJLGFriia3fJ1HeHTCC8w5ilww== X-Received: by 2002:a17:902:ea03:b0:215:b33b:e26d with SMTP id d9443c01a7336-21c3550c5d3mr520132085ad.21.1737742997486; Fri, 24 Jan 2025 10:23:17 -0800 (PST) Received: from ghost ([2601:647:6700:64d0:63b:8ac9:503a:b81d]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21da413f474sm19579925ad.130.2025.01.24.10.23.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 10:23:16 -0800 (PST) Date: Fri, 24 Jan 2025 10:23:14 -0800 From: Charlie Jenkins To: Brian Gerst Cc: Paul Walmsley , Palmer Dabbelt , Huacai Chen , WANG Xuerui , Thomas Gleixner , Peter Zijlstra , Andy Lutomirski , Alexandre Ghiti , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, loongarch@lists.linux.dev Subject: Re: [PATCH v2 1/4] riscv: entry: Convert ret_from_fork() to C Message-ID: References: <20250123-riscv_optimize_entry-v2-0-7c259492d508@rivosinc.com> <20250123-riscv_optimize_entry-v2-1-7c259492d508@rivosinc.com> Precedence: bulk X-Mailing-List: loongarch@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Fri, Jan 24, 2025 at 08:14:08AM -0500, Brian Gerst wrote: > On Thu, Jan 23, 2025 at 2:15 PM Charlie Jenkins wrote: > > > > Move the main section of ret_from_fork() to C to allow inlining of > > syscall_exit_to_user_mode(). > > > > Signed-off-by: Charlie Jenkins > > --- > > arch/riscv/include/asm/asm-prototypes.h | 1 + > > arch/riscv/kernel/entry.S | 15 ++++++--------- > > arch/riscv/kernel/process.c | 14 ++++++++++++-- > > 3 files changed, 19 insertions(+), 11 deletions(-) > > > > diff --git a/arch/riscv/include/asm/asm-prototypes.h b/arch/riscv/include/asm/asm-prototypes.h > > index cd627ec289f163a630b73dd03dd52a6b28692997..733ff609778797001006c33bba9e3cc5b1f15387 100644 > > --- a/arch/riscv/include/asm/asm-prototypes.h > > +++ b/arch/riscv/include/asm/asm-prototypes.h > > @@ -52,6 +52,7 @@ DECLARE_DO_ERROR_INFO(do_trap_ecall_s); > > DECLARE_DO_ERROR_INFO(do_trap_ecall_m); > > DECLARE_DO_ERROR_INFO(do_trap_break); > > > > +asmlinkage void ret_from_fork(void *fn_arg, int (*fn)(void *), struct pt_regs *regs); > > asmlinkage void handle_bad_stack(struct pt_regs *regs); > > asmlinkage void do_page_fault(struct pt_regs *regs); > > asmlinkage void do_irq(struct pt_regs *regs); > > diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S > > index 33a5a9f2a0d4e1eeccfb3621b9e518b88e1b0704..9225c322279aa90e737b1d7144db084319cf8103 100644 > > --- a/arch/riscv/kernel/entry.S > > +++ b/arch/riscv/kernel/entry.S > > @@ -319,17 +319,14 @@ SYM_CODE_END(handle_kernel_stack_overflow) > > ASM_NOKPROBE(handle_kernel_stack_overflow) > > #endif > > > > -SYM_CODE_START(ret_from_fork) > > +SYM_CODE_START(ret_from_fork_asm) > > call schedule_tail > > - beqz s0, 1f /* not from kernel thread */ > > - /* Call fn(arg) */ > > - move a0, s1 > > - jalr s0 > > -1: > > - move a0, sp /* pt_regs */ > > - call syscall_exit_to_user_mode > > + move a0, s1 /* fn */ > > + move a1, s0 /* fn_arg */ > > + move a2, sp /* pt_regs */ > > + call ret_from_fork > > j ret_from_exception > > -SYM_CODE_END(ret_from_fork) > > +SYM_CODE_END(ret_from_fork_asm) > > > > #ifdef CONFIG_IRQ_STACKS > > /* > > diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c > > index 58b6482c2bf662bf5224ca50c8e21a68760a6b41..0d07e6d8f6b57beba438dbba5e8c74a014582bee 100644 > > --- a/arch/riscv/kernel/process.c > > +++ b/arch/riscv/kernel/process.c > > @@ -17,7 +17,9 @@ > > #include > > #include > > #include > > +#include > > > > +#include > > #include > > #include > > #include > > @@ -36,7 +38,7 @@ unsigned long __stack_chk_guard __read_mostly; > > EXPORT_SYMBOL(__stack_chk_guard); > > #endif > > > > -extern asmlinkage void ret_from_fork(void); > > +extern asmlinkage void ret_from_fork_asm(void); > > > > void noinstr arch_cpu_idle(void) > > { > > @@ -206,6 +208,14 @@ int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src) > > return 0; > > } > > > > +asmlinkage void ret_from_fork(void *fn_arg, int (*fn)(void *), struct pt_regs *regs) > > +{ > > + if (unlikely(fn)) > > + fn(fn_arg); > > + > > + syscall_exit_to_user_mode(regs); > > +} > > + > > int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) > > { > > unsigned long clone_flags = args->flags; > > @@ -242,7 +252,7 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) > > p->thread.riscv_v_flags = 0; > > if (has_vector()) > > riscv_v_thread_alloc(p); > > - p->thread.ra = (unsigned long)ret_from_fork; > > + p->thread.ra = (unsigned long)ret_from_fork_asm; > > p->thread.sp = (unsigned long)childregs; /* kernel sp */ > > return 0; > > } > > > > -- > > 2.43.0 > > > > > > Is there a specific reason you didn't move the call to schedule_tail() > to the C function, like on x86? Yes, the generated code ends up being dramatically worse if schedule_tail() is moved into C. This is because the arg for schedule_tail() is already in a0 so the extra stack manipulation instructions end up taking up a lot of instructions. With this change: : ff65b097 auipc ra,0xff65b 1ee080e7 jalr 494(ra) # ffffffff8005038a 8526 mv a0,s1 85a2 mv a1,s0 860a mv a2,sp ff61b097 auipc ra,0xff61b 606080e7 jalr 1542(ra) # ffffffff800107b0 b5f5 j ffffffff809f509e : 1101 addi sp,sp,-32 e822 sd s0,16(sp) ec06 sd ra,24(sp) 1000 addi s0,sp,32 e991 bnez a1,ffffffff800107cc 8532 mv a0,a2 009db097 auipc ra,0x9db a32080e7 jalr -1486(ra) # ffffffff809eb1ee 60e2 ld ra,24(sp) 6442 ld s0,16(sp) 6105 addi sp,sp,32 8082 ret fec43423 sd a2,-24(s0) 9582 jalr a1 fe843603 ld a2,-24(s0) 8532 mv a0,a2 009db097 auipc ra,0x9db a16080e7 jalr -1514(ra) # ffffffff809eb1ee 60e2 ld ra,24(sp) 6442 ld s0,16(sp) 6105 addi sp,sp,32 8082 ret Contrasted with what this looks like if schedule_tail() is called from C. : 85a6 mv a1,s1 8622 mv a2,s0 868a mv a3,sp ff61b097 auipc ra,0xff61b 60e080e7 jalr 1550(ra) # ffffffff800107b0 bdd5 j ffffffff809f509e : 7179 addi sp,sp,-48 f022 sd s0,32(sp) ec26 sd s1,24(sp) e84a sd s2,16(sp) e44e sd s3,8(sp) f406 sd ra,40(sp) 1800 addi s0,sp,48 84b2 mv s1,a2 89ae mv s3,a1 8936 mv s2,a3 3c73f0ef jal ffffffff8005038a ec89 bnez s1,ffffffff800107e2 854a mv a0,s2 009db097 auipc ra,0x9db a22080e7 jalr -1502(ra) # ffffffff809eb1ee 70a2 ld ra,40(sp) 7402 ld s0,32(sp) 64e2 ld s1,24(sp) 6942 ld s2,16(sp) 69a2 ld s3,8(sp) 6145 addi sp,sp,48 8082 ret 854e mv a0,s3 9482 jalr s1 b7d5 j ffffffff800107ca ret_from_fork_asm ends up being 2 instructions more when calling from asm, but the user fork ret_from_fork ends up being only 12 instructions rather than 22 instructions when calling from C. If we were able to mix asm and C code in a naked function we would be able to get rid of the stack manipulation and still be able to inline C but we don't live in that world... - Charlie > > > Brian Gerst