From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by sourceware.org (Postfix) with ESMTPS id 26F4738582BC for ; Thu, 1 Feb 2024 15:23:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 26F4738582BC Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 26F4738582BC Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::630 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706801034; cv=none; b=KWkNyGxOUeePZ0CLTEoynlE8/Rul5qb3A68zk73WwnbP1RmP/X6YLk7aNKDkpOrbM5BYNqjFAo+yuY4b0EWInzjg+iFq1hkMvazgzIiCq/gCsWkhvKK9TM6uwx1eWAY9ShI6H5J7ksexzdrmwnEMcpLKFpECfwrQWk7NoQhPxy4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706801034; c=relaxed/simple; bh=0EzWlQgrlzNWx5R6A4uaFZptZ9WeqZmifjFYdbyTkdo=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=f+9qEXBDMlVfKNvqLED7EMw11Plsnf+6sCO7DC3k5Hv0GWY0TaPcfDranKzdzWiKEm82xQMxU0SeQppHbyYFVjciSSnxkG9BbWXSWzG7d/7EMGw12J6ZxKEEcnhbFbP8qDfCgCF5nwANK4CgsaefkPTd4yuRMxU1Vgpi9ifcIxE= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-1d746856d85so8075345ad.0 for ; Thu, 01 Feb 2024 07:23:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706801029; x=1707405829; darn=sourceware.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=0EzWlQgrlzNWx5R6A4uaFZptZ9WeqZmifjFYdbyTkdo=; b=LcHWAJR0vrZ0XMzxV50xGsEcsbofwCRu2VW70w+kZjbSkbTwlFap2TIfkIXTc8GrSG Gzf9skjSaGUWwr4jvoTi3MirA/NuiayI5efoIyRTmyWZ/WC7inLG7CF1+NH71ZazinkM CnXDCQmRhi2cC1tGzDQDw7Z6VgM+uBRq+YAZAlrbGaV7+gw4nBBWLMW2toy29tgSzBzz cVkUYgsDzlSLAGPIQQQgjDywn4db1AVQhnWGRhIN7JbynZBni8Mhgti0U8Nito6pjoGC rZmX6oIcD4OPBE2ZCCEH8o3npJKYJHIPJmecPRu2Aul1q4YCrE+hov/Y6KMp/P8m6xy7 Yfpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706801029; x=1707405829; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=0EzWlQgrlzNWx5R6A4uaFZptZ9WeqZmifjFYdbyTkdo=; b=kI4MMGWb7gAX2M+cLy5dLnGAQ0k0bb5ZJ8yvajrAY9fa3qbTgLdK434Ii5kgoKHb2z 8/bSLtPuXwj5/o8dr0KpBOKL+96XSNmLH8RbE5MTPPGDmhqWYRya8afuU4Faeh/CCbPH 9up9lIz0e1j/mVQKjmycVwBNvlAXwn1rQbxPT25LMpWsm8jjY3J0r+uFdg6cqRxlNEYF 0lGw2xqUOhsiURTyQ5guJgqaAROxrluwRpyuxlwNJzvZhzfdw1qaIpUzjgfrGKnncqgC erOtGbjsyoMe+jRIWwMnyC9OgaCvM0hnU0OhG3V1i+bY83z3/ChjckAa/H5aN4SGX5o1 VlMw== X-Gm-Message-State: AOJu0Yz7Umkg2NQscz5OBxRq8AYAvxaTR5A++sUMuc5KzkOzoXHZRIGR fwyKjIc6o3LbUgNqZORnsJwKS2QOPMn4dRivTRqRp7lHjExb4v8efzIJDaslLuH2uQ4vrPJabTn Ft6E192Lecr8B3mjqu2PwK2eaOA+2gubNI3o= X-Google-Smtp-Source: AGHT+IGSHehaOWBpwLsw1BoG8LL9HeVV5UxHfSficyKyAtN4z/WR6zJimxnxLndYPBiPRYxo3JA2aVRoezFuhk23cQA= X-Received: by 2002:a17:90b:3554:b0:295:f255:2184 with SMTP id lt20-20020a17090b355400b00295f2552184mr4562470pjb.32.1706801028968; Thu, 01 Feb 2024 07:23:48 -0800 (PST) MIME-Version: 1.0 From: Godmar Back Date: Thu, 1 Feb 2024 10:23:37 -0500 Message-ID: Subject: curiosity question about swapcontext libc implementation on x86_64 To: William Tambe via Libc-help Content-Type: multipart/alternative; boundary="00000000000008b5270610539560" X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE,KAM_NUMSUBJECT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,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 server2.sourceware.org List-Id: --00000000000008b5270610539560 Content-Type: text/plain; charset="UTF-8" The implementation of the obsolescent makecontext/getcontext/swapcontext family of functions on x86_64 [1] appears to save a selection of registers. These include callee-saved regs like rbx, rbp, r12-r15, but also caller-saved regs like rdi, rsi, rdx, rcx. On the floating point side, it saves mxcsr, the x87 FPU state via fnstenv, but not the xmm SSE register. All of these floating point registers are callee-saved based on the AMD64 ABI [2]. It also saves/restores the current signal mask. Does anyone know why it saves this set of registers/signal mask? Why does it save callee-saved registers, but not all of them? - Godmar [1] https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/x86_64/swapcontext.S;h=b2e0f19a9d57e5007b094037b4cf59868029fc36;hb=HEAD [2] https://gitlab.com/x86-psABIs/x86-64-ABI/-/jobs/artifacts/master/raw/x86-64-ABI/abi.pdf?job=build --00000000000008b5270610539560--