Date: Thu, 11 Jul 2019 12:44:18 -0600 From: Ian Lepore <ian@freebsd.org> To: adr <adr@SDF.ORG>, Mark Millard <marklmi@yahoo.com> Cc: Robert Crowston via freebsd-arm <freebsd-arm@freebsd.org> Subject: Re: FreeBSD arm EABI5 documentation? Message-ID: <0af96399f723a3e55e4c8d1f0e9926f0727f0bb3.camel@freebsd.org> In-Reply-To: <alpine.NEB.2.21.1907111727500.16650@sdf.lonestar.org> References: <alpine.NEB.2.21.1907101508370.22895@sdf.lonestar.org> <f2967859f68f1d40f260661791126956f48f4d12.camel@freebsd.org> <alpine.NEB.2.21.1907101735020.3201@sdf.lonestar.org> <da6a8f7e596da9bf9015f76798a5575908ad1be4.camel@freebsd.org> <alpine.NEB.2.21.1907101904570.15468@sdf.lonestar.org> <1788e13e706b9fdaf610e4ddd671a5ed715f9dfe.camel@freebsd.org> <alpine.NEB.2.21.1907102043040.9461@sdf.lonestar.org> <AFF6488F-B2F5-486E-8F14-FAF852DB2C3C@yahoo.com> <1CB61FE0-5665-424F-8B94-ABFC06906112@yahoo.com> <alpine.NEB.2.21.1907111727500.16650@sdf.lonestar.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 2019-07-11 at 17:50 +0000, adr wrote: > > > > Curious about 32-bit arm stack alignment requirements in netbsd > > > > (based on a FreeBSD thread making claims that user space allows > > > > 4-byte stack alignment), I went looking around some in NetBSD > > Whooow... I don't know what on earth I'm missing, or what I said that > make you contact NetBSD developers talking about "claims". > > Just write some ugly assembler: > ====================================== > .arch armv7-a > .syntax unified > .data > str1: > .string "1-6: %d, %d, %d, %d, %d, %d\n" > .align > .text > .global main > main: > push {r0} @ stack is not 8byte align anymore > mov r8, 10 > loop: > ldr r0, =str1 > mov r1, 1 > mov r2, 2 > mov r3, 3 > mov r4, 4 > mov r5, 5 > mov r6, 6 > push { r4-r6 } @ alignment will change in the loop > bl printf > subs r8, r8, 1 > bne loop > end: > b end > ===================================================== > as -a -o test.o test.s > test.l > cc -o test test.o > > And it works. In fact it works in FreeBSD with clang. > But a more complex code, as a said before, calling > SDL2 to use graphics works without any problem on NetBSD > and Linux, but not on FreeBSD. > > In fact I like that it doesn't work in FreeBSD, because > that made me correct my code. > > That is all I was saying, and now I'm going to just shut the * up. Oh, so it's not that netbsd and linux have different stack alignment requirements, it's just that you accidentally never called a function with an unaligned stack where the misalignment caused a problem. There are only a few instructions that really require 64-bit data alignment when the strict alignment enforcement flag is off (it's off in all 3 OSes we're talking about). You could probably call most of the C library functions and luck out on the alignment. -- Ian
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?0af96399f723a3e55e4c8d1f0e9926f0727f0bb3.camel>