Support for cross compilation.

Refactor architecture specific files into arm and x86 name spaces. Make
assemblers and calling conventions use the factory pattern and an
instruction set specifier.

Change-Id: I20cd7aecacc1ae3d418221d98bbe1d69be9162a7
diff --git a/src/assembler.cc b/src/assembler.cc
index 9e67f12..4ab882e 100644
--- a/src/assembler.cc
+++ b/src/assembler.cc
@@ -1,8 +1,12 @@
 // Copyright 2011 Google Inc. All Rights Reserved.
 
+#include "assembler.h"
+
 #include <algorithm>
 #include <vector>
-#include "assembler.h"
+
+#include "assembler_arm.h"
+#include "assembler_x86.h"
 #include "globals.h"
 #include "memory_region.h"
 
@@ -118,4 +122,14 @@
   CHECK_EQ(Size(), old_size);
 }
 
+
+Assembler* Assembler::Create(InstructionSet instruction_set) {
+  if (instruction_set == kX86) {
+    return new x86::X86Assembler();
+  } else {
+    CHECK(instruction_set == kArm || instruction_set == kThumb2);
+    return new arm::ArmAssembler();
+  }
+}
+
 }  // namespace art