From df05c2155070ae247c2bcce6120314b84ccf21c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Tue, 23 Oct 2007 23:31:01 +0000 Subject: [PATCH] Default code for m68k. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22691 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../gensyscalls/arch/m68k/arch_gensyscalls.h | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/tools/gensyscalls/arch/m68k/arch_gensyscalls.h diff --git a/src/tools/gensyscalls/arch/m68k/arch_gensyscalls.h b/src/tools/gensyscalls/arch/m68k/arch_gensyscalls.h new file mode 100644 index 0000000000..cd6707b8a2 --- /dev/null +++ b/src/tools/gensyscalls/arch/m68k/arch_gensyscalls.h @@ -0,0 +1,51 @@ +// Included by gensyscalls. + +typedef int AlignmentType; +static const char* kAlignmentType = "int"; +static const int kAlignment = sizeof(AlignmentType); + +// ReturnTypeCreator +template +class ReturnTypeCreator { +public: + static void Create(Syscall* syscall, const char* name) + { + int size = sizeof(T); + int usedSize = align_to_type(size); + const char* alignmentType + = (size != usedSize && size < kAlignment ? kAlignmentType : 0); + + syscall->SetReturnType(name, size, usedSize, alignmentType); + } +}; + +template<> +class ReturnTypeCreator { +public: + static void Create(Syscall* syscall, const char* name) + { + syscall->SetReturnType(name, 0, 0, 0); + } +}; + +// ParameterCreator +template +class ParameterCreator { +public: + static void Create(Syscall* syscall, const char* typeName, + const char* parameterName) + { + // compute offset + int offset = 0; + if (Parameter* previous = syscall->LastParameter()) + offset = previous->Offset() + previous->UsedSize(); + + int size = sizeof(T); + int usedSize = align_to_type(size); + const char* alignmentType + = (size != usedSize && size < kAlignment ? kAlignmentType : 0); + + syscall->AddParameter(typeName, parameterName, size, usedSize, offset, + alignmentType); + } +};