History log of /haiku/src/tools/gensyscalls/gensyscalls.h
Revision Date Author Comments
# ab3c8bea 05-Apr-2022 David Karoly <karolyd577@gmail.com>

gensyscalls: alignment fixup for ARM

ARM ABI has different alignment requirements based on parameter size:
* parameters not larger than 4 bytes are aligned on 4 bytes
* parameters larger than 4 bytes are aligned on 8 bytes

see:
Procedure Call Standard for the Arm Architecture
sections 5.1, Fundamental Data Types
and 6.5, Parameter Passing

Therefore the following changes are introduced in gensyscalls tool:
* new optional define SYSCALL_LONG_PARAMETER_ALIGNMENT_TYPE is introduced
* it's defined only on ARM
* on other architectures it takes on the value of SYSCALL_PARAMETER_ALIGNMENT_TYPE as a default
* constants kLongParameterAlignmentType and kLongParameterAlignmentSize are introduced
* Syscall::AddParameter uses this value for aligning parameters larger than 4 bytes

Change-Id: I7e766e0ea9d07001643e813722b462b1f044921a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5112
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 59d6284b 27-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Changed the way the syscall infos are generated. We no longer include the
preprocessed <syscalls.h> header in sources compiled for the build platform.
Instead we're generating macros for the return type and parameter type sizes
via the CreateAsmStructOffsetsHeader rule (no template magic anymore) and
thus get a clear separation of host and target code, resulting in better
portability (although surprisingly enough the build already worked on 64 bit
hosts).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34323 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ed64c40 31-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Patch by Michael Lotz fixing a missing typedef when compiling with
native compiler gcc 2 and cross-compiler gcc 4.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25740 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ae56893 27-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Reworked the way how the gensyscalls stuff finds out about
the sizes and alignments of syscall parameters. It no longer
generates and compiles functions with the same signature as the
syscalls. This simply doesn't generally work for cross-compilation.
Instead we provide a bit of architecture-specific code that knows
how things work for the target architecture.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15196 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ee524c98 10-Feb-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

We now also store the names of syscall parameters. This is used for strace. Well, not yet, but it would make a nice extension. :-)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11338 a95241bf-73f2-0310-859d-f6bbb57e9c96


# efd87ab8 28-Aug-2004 Ingo Weinhold <ingo_weinhold@gmx.de>

Had to change the mechanism for automatically generating most of the
boring syscall stuff. It has two phases now: The first one
(gensyscallinfos) parses syscalls.h and generates a source file containing
all the required information. This file is compiled and linked to
gensyscalls, which generates the actual output files.
Added to the build.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8697 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 59d6284b7b7c1d099ff0fb785f9aaf27c13ef54b 27-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Changed the way the syscall infos are generated. We no longer include the
preprocessed <syscalls.h> header in sources compiled for the build platform.
Instead we're generating macros for the return type and parameter type sizes
via the CreateAsmStructOffsetsHeader rule (no template magic anymore) and
thus get a clear separation of host and target code, resulting in better
portability (although surprisingly enough the build already worked on 64 bit
hosts).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34323 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ed64c408dbaaf00502572ff020260e6c379a014 31-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Patch by Michael Lotz fixing a missing typedef when compiling with
native compiler gcc 2 and cross-compiler gcc 4.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25740 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ae568931fcac7deb9f1e6ff4e47213fbfe4029b 27-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

Reworked the way how the gensyscalls stuff finds out about
the sizes and alignments of syscall parameters. It no longer
generates and compiles functions with the same signature as the
syscalls. This simply doesn't generally work for cross-compilation.
Instead we provide a bit of architecture-specific code that knows
how things work for the target architecture.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15196 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ee524c9864087071259c84eae8291fa98dcd614c 10-Feb-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

We now also store the names of syscall parameters. This is used for strace. Well, not yet, but it would make a nice extension. :-)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11338 a95241bf-73f2-0310-859d-f6bbb57e9c96


# efd87ab8df79399cac98d888ab3f36d3f33c34ed 28-Aug-2004 Ingo Weinhold <ingo_weinhold@gmx.de>

Had to change the mechanism for automatically generating most of the
boring syscall stuff. It has two phases now: The first one
(gensyscallinfos) parses syscalls.h and generates a source file containing
all the required information. This file is compiled and linked to
gensyscalls, which generates the actual output files.
Added to the build.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8697 a95241bf-73f2-0310-859d-f6bbb57e9c96