From 97d5f9fa3d2ad898d6adb965e1d63fa7479cd66d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Sundstr=C3=B6m?= Date: Mon, 17 Aug 2009 14:30:36 +0000 Subject: [PATCH] mipsel wip git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32461 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../arch/mipsel/arch_gensyscalls.h | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/tools/gensyscalls/arch/mipsel/arch_gensyscalls.h diff --git a/src/tools/gensyscalls/arch/mipsel/arch_gensyscalls.h b/src/tools/gensyscalls/arch/mipsel/arch_gensyscalls.h new file mode 100644 index 0000000000..cd6707b8a2 --- /dev/null +++ b/src/tools/gensyscalls/arch/mipsel/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); + } +};