From 193a433af0354f21e8a0a75edc8ba0eccba955e6 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sat, 5 Jun 2010 18:32:44 +0000 Subject: [PATCH] Patch by Andreas Faerber: Generate an assembler compatible header with structure offset definitions for PPC as well. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37019 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/arch/ppc/Jamfile | 2 ++ src/system/kernel/arch/ppc/asm_offsets.cpp | 33 ++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/system/kernel/arch/ppc/asm_offsets.cpp diff --git a/src/system/kernel/arch/ppc/Jamfile b/src/system/kernel/arch/ppc/Jamfile index 3f9e57656e..493d20caa0 100644 --- a/src/system/kernel/arch/ppc/Jamfile +++ b/src/system/kernel/arch/ppc/Jamfile @@ -33,3 +33,5 @@ KernelMergeObject kernel_arch_ppc.o : : $(TARGET_KERNEL_PIC_CCFLAGS) -Wno-unused ; + +CreateAsmStructOffsetsHeader asm_offsets.h : asm_offsets.cpp ; diff --git a/src/system/kernel/arch/ppc/asm_offsets.cpp b/src/system/kernel/arch/ppc/asm_offsets.cpp new file mode 100644 index 0000000000..13f69d0269 --- /dev/null +++ b/src/system/kernel/arch/ppc/asm_offsets.cpp @@ -0,0 +1,33 @@ +/* + * Copyright 2007-2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2010 Andreas Faerber, andreas.faerber@web.de + * Distributed under the terms of the MIT License. + */ + +// This file is used to get C structure offsets into assembly code. +// The build system assembles the file and processes the output to create +// a header file with macro definitions, that can be included from assembly +// code. + + +#include + +#include + + +#define DEFINE_MACRO(macro, value) DEFINE_COMPUTED_ASM_MACRO(macro, value) + +#define DEFINE_OFFSET_MACRO(prefix, structure, member) \ + DEFINE_MACRO(prefix##_##member, offsetof(struct structure, member)); + +#define DEFINE_SIZEOF_MACRO(prefix, structure) \ + DEFINE_MACRO(prefix##_sizeof, sizeof(struct structure)); + + +void +dummy() +{ + // struct cpu_ent + DEFINE_OFFSET_MACRO(CPU_ENT, cpu_ent, fault_handler); + DEFINE_OFFSET_MACRO(CPU_ENT, cpu_ent, fault_handler_stack_pointer); +}