summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2010-11-18 17:29:15 +0000
committerGreg Clayton <gclayton@apple.com>2010-11-18 17:29:15 +0000
commitce02552b6a6b7b09be314624f23bfe1de853eba5 (patch)
tree3e95ed31800fa3aeca3d4db2bb77b3d7c6d27935
parent5ed61fe6a108636a6f3de37d21ad80452f4c05a3 (diff)
downloadbcm5719-llvm-ce02552b6a6b7b09be314624f23bfe1de853eba5.tar.gz
bcm5719-llvm-ce02552b6a6b7b09be314624f23bfe1de853eba5.zip
Added missing file.
llvm-svn: 119709
-rw-r--r--lldb/tools/debugserver/source/DNBArch.cpp89
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;
+}
+
OpenPOWER on IntegriCloud