diff options
| author | Greg Clayton <gclayton@apple.com> | 2010-11-18 17:29:15 +0000 | 
|---|---|---|
| committer | Greg Clayton <gclayton@apple.com> | 2010-11-18 17:29:15 +0000 | 
| commit | ce02552b6a6b7b09be314624f23bfe1de853eba5 (patch) | |
| tree | 3e95ed31800fa3aeca3d4db2bb77b3d7c6d27935 | |
| parent | 5ed61fe6a108636a6f3de37d21ad80452f4c05a3 (diff) | |
| download | bcm5719-llvm-ce02552b6a6b7b09be314624f23bfe1de853eba5.tar.gz bcm5719-llvm-ce02552b6a6b7b09be314624f23bfe1de853eba5.zip | |
Added missing file.
llvm-svn: 119709
| -rw-r--r-- | lldb/tools/debugserver/source/DNBArch.cpp | 89 | 
1 files changed, 89 insertions, 0 deletions
| diff --git a/lldb/tools/debugserver/source/DNBArch.cpp b/lldb/tools/debugserver/source/DNBArch.cpp new file mode 100644 index 00000000000..0a6495018a4 --- /dev/null +++ b/lldb/tools/debugserver/source/DNBArch.cpp @@ -0,0 +1,89 @@ +//===-- DNBArch.cpp ---------------------------------------------*- C++ -*-===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +//  Created by Greg Clayton on 6/24/07. +// +//===----------------------------------------------------------------------===// + +#include "DNBArch.h" +#include <assert.h> +#include <mach/mach.h> + +#include <map> + +#include "DNBLog.h" + +typedef std::map<uint32_t, DNBArchPluginInfo> CPUPluginInfoMap; + +#if defined (__i386__) +uint32_t g_current_cpu_type = CPU_TYPE_I386; +#elif defined (__x86_64__) +uint32_t g_current_cpu_type = CPU_TYPE_X86_64; +#elif defined (__arm__)  +uint32_t g_current_cpu_type = CPU_TYPE_ARM; +#else +uint32_t g_current_cpu_type = 0; +#endif + +CPUPluginInfoMap g_arch_plugins; + + +static const DNBArchPluginInfo * +GetArchInfo () +{ +    CPUPluginInfoMap::const_iterator pos = g_arch_plugins.find(g_current_cpu_type); +    if (pos != g_arch_plugins.end()) +        return &pos->second; +    return NULL; +} + +void +DNBArchProtocol::SetDefaultArchitecture (uint32_t cpu_type) +{ +    DNBLogThreadedIf (LOG_PROCESS, "DNBArchProtocol::SetDefaultArchitecture (cpu_type=0x%8.8x)", cpu_type); +    g_current_cpu_type = cpu_type; +    assert (g_arch_plugins.find(g_current_cpu_type) != g_arch_plugins.end()); +} + +void +DNBArchProtocol::RegisterArchPlugin (const DNBArchPluginInfo &arch_info) +{ +    if (arch_info.cpu_type) +        g_arch_plugins[arch_info.cpu_type] = arch_info; +} + +const DNBRegisterSetInfo * +DNBArchProtocol::GetRegisterSetInfo (nub_size_t *num_reg_sets) +{ +    const DNBArchPluginInfo *arch_info = GetArchInfo (); +    if (arch_info) +        return arch_info->GetRegisterSetInfo (num_reg_sets); +    *num_reg_sets = 0; +    return NULL; +} + +DNBArchProtocol * +DNBArchProtocol::Create (MachThread *thread) +{ +    const DNBArchPluginInfo *arch_info = GetArchInfo (); +    if (arch_info) +        return arch_info->Create (thread); +    return NULL; + +} + +const uint8_t * const  +DNBArchProtocol::GetBreakpointOpcode (nub_size_t byte_size) +{ +    const DNBArchPluginInfo *arch_info = GetArchInfo (); +    if (arch_info) +        return arch_info->GetBreakpointOpcode (byte_size); +    return NULL; +} + | 

