diff --git a/src/apps/debugger/arch/Architecture.h b/src/apps/debugger/arch/Architecture.h index 34caf10ef8..d74d652344 100644 --- a/src/apps/debugger/arch/Architecture.h +++ b/src/apps/debugger/arch/Architecture.h @@ -1,5 +1,6 @@ /* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2011, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ #ifndef ARCHITECTURE_H @@ -31,6 +32,12 @@ class Team; class TeamMemory; +enum { + STACK_GROWTH_DIRECTION_POSITIVE = 0, + STACK_GROWTH_DIRECTION_NEGATIVE +}; + + class Architecture : public BReferenceable { public: Architecture(TeamMemory* teamMemory, @@ -44,6 +51,8 @@ public: inline bool IsBigEndian() const { return fBigEndian; } inline bool IsHostEndian() const; + virtual int32 StackGrowthDirection() const = 0; + virtual int32 CountRegisters() const = 0; virtual const Register* Registers() const = 0; virtual status_t InitRegisterRules(CfaContext& context) const; diff --git a/src/apps/debugger/arch/x86/ArchitectureX86.cpp b/src/apps/debugger/arch/x86/ArchitectureX86.cpp index d44db1f741..61269a7063 100644 --- a/src/apps/debugger/arch/x86/ArchitectureX86.cpp +++ b/src/apps/debugger/arch/x86/ArchitectureX86.cpp @@ -1,5 +1,6 @@ /* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2011, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ @@ -180,6 +181,13 @@ ArchitectureX86::Init() } +int32 +ArchitectureX86::StackGrowthDirection() const +{ + return STACK_GROWTH_DIRECTION_NEGATIVE; +} + + int32 ArchitectureX86::CountRegisters() const { diff --git a/src/apps/debugger/arch/x86/ArchitectureX86.h b/src/apps/debugger/arch/x86/ArchitectureX86.h index d2034edb46..33369aa5db 100644 --- a/src/apps/debugger/arch/x86/ArchitectureX86.h +++ b/src/apps/debugger/arch/x86/ArchitectureX86.h @@ -1,5 +1,6 @@ /* * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2011, Rene Gollent, rene@gollent.com. * Distributed under the terms of the MIT License. */ #ifndef ARCHITECTURE_X86_H @@ -22,6 +23,8 @@ public: virtual status_t Init(); + virtual int32 StackGrowthDirection() const; + virtual int32 CountRegisters() const; virtual const Register* Registers() const; virtual status_t InitRegisterRules(CfaContext& context) const;