Hi, Maamoun
I thought that you were asking in general. All PowerPC ABI, except the original 32 bit ELF ABI, allow a red zone below the stack pointer. For other architectures, one needs to check each ABI.
Thanks, David
On Wed, Dec 2, 2020 at 12:57 PM Maamoun TK maamoun.tk@googlemail.com wrote:
I can't find a document other than 64-bit elf v2 abi specification https://openpowerfoundation.org/?resource_lib=64-bit-elf-v2-abi-specificatio... which say it's safe to use the 288-byte volatile storage below the stack pointer to hold saved registers and local variables. However, I wrote a C file for the test and disassembled the compiled binary on ELFv1, ELFv2, and AIX. All of them hold the saved registers right below the stack pointer. Furthermore same as we did, the compiler try to avoid modifying the stack pointer register when possible, the prologue of tested binary looks like this: std r30,-16(r1) std r31,-8(r1) li r0,-80 stvx v28,r1,r0 li r0,-64 stvx v29,r1,r0 li r0,-48 stvx v30,r1,r0 li r0,-32 stvx v31,r1,r0
regards, Mamone
On Wed, Dec 2, 2020 at 7:31 PM David Edelsohn dje.gcc@gmail.com wrote:
On Wed, Dec 2, 2020 at 9:41 AM Maamoun TK maamoun.tk@googlemail.com wrote:
On Tue, Dec 1, 2020 at 8:02 PM Niels Möller nisse@lysator.liu.se wrote:
How portable is this, do all relevant operating systems support storing data below the stack pointer?
I need to investigate this.
It's dependent upon the ABI.
Thanks, David