Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S262171AbTIHJeS (ORCPT ); Mon, 8 Sep 2003 05:34:18 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S262181AbTIHJeR (ORCPT ); Mon, 8 Sep 2003 05:34:17 -0400 Received: from meryl.it.uu.se ([130.238.12.42]:8898 "EHLO meryl.it.uu.se") by vger.kernel.org with ESMTP id S262171AbTIHJdh (ORCPT ); Mon, 8 Sep 2003 05:33:37 -0400 Date: Mon, 8 Sep 2003 11:33:33 +0200 (MEST) Message-Id: <200309080933.h889XXdN011482@harpo.it.uu.se> From: Mikael Pettersson To: linux-kernel@vger.kernel.org, nagendra_tomar@adaptec.com Subject: Re: [OT] caller-save/callee-save register styles Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1645 Lines: 31 On Sun, 7 Sep 2003 23:54:59 +0530 (IST), Nagendra Singh Tomar wrote: >I would like to know various people's experiences about the caller-save >and callee-save style of preserving register values across procedure >calls. I feel that the ABI specification should specify that but I was >unable to figure that out in the ELF-ABI specification. >What I have personally seen is only callee-save style in which the >modified registers are PUSHed on the stack on entering the function and >POPed on leaving the function. That means the caller can assume that all >the regsiter values will be same just before and after the 'call' >instruction. "All" is a bad assumption. Most ABIs have both caller-save and callee-save registers, so you need to save those caller-save registers that are to be live over the call. >Can we assume one of these styles when writing assembly code that has to >be linked with C code generated by the compiler or do we have to first >ensure the style that the compiler follows and then use that. >Comments on how other ABIs do it are highly welcome, though I am >particularly interested about the ELF-ABI and x86 arch. Neither the ELF spec nor the generic SVR4 ABI documents these things. You need the Processor-Specific Supplement, a.k.a. psABI. There is no central repository for these, but last time I checked, the ia32 psABI was downloadable from SCO or Caldera. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/