* Stop hard-coding a value for beginning of emitted code on Sparc since we can
authorMisha Brukman <brukman+llvm@gmail.com>
Tue, 29 Jul 2003 16:57:16 +0000 (16:57 +0000)
committerMisha Brukman <brukman+llvm@gmail.com>
Tue, 29 Jul 2003 16:57:16 +0000 (16:57 +0000)
  now handle far calls (i.e., beyond the 30-bit limit in call instructions).
* As a side-effect, this allows us to unify and clean up the mmap() call and
  code around it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7381 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/JIT/JITEmitter.cpp

index 9e62f13ce73bd70ed76c2e6f6a01a2bdd4949cfe..476ca45a229c0b8c04c147876593b6bbc8233f14 100644 (file)
@@ -76,20 +76,16 @@ static void *getMemory(unsigned NumPages) {
   /* Linux and *BSD tend to have these flags named differently. */
 #if defined(MAP_ANON) && !defined(MAP_ANONYMOUS)
 # define MAP_ANONYMOUS MAP_ANON
-#endif
-  pa = mmap(0, pageSize*NumPages, PROT_READ|PROT_WRITE|PROT_EXEC,
-            MAP_PRIVATE|MAP_ANONYMOUS, 0, 0);  /* fd = 0  */
+#endif /* defined(MAP_ANON) && !defined(MAP_ANONYMOUS) */
+#define fd  0
 #elif defined(sparc) || defined(__sparc__) || defined(__sparcv9)
-  static unsigned long Counter = 0;
-  pa = mmap((void*)(0x140000000UL+Counter), pageSize*NumPages,
-            PROT_READ|PROT_WRITE|PROT_EXEC,
-            MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, -1, 0); /* fd = -1 */
-  Counter += pageSize*NumPages;
+#define fd -1
 #else
-  std::cerr << "This architecture is not supported by the JIT\n";
+  std::cerr << "This architecture is not supported by the JIT!\n";
   abort();
 #endif
-
+  pa = mmap(0, pageSize*NumPages, PROT_READ|PROT_WRITE|PROT_EXEC,
+            MAP_PRIVATE|MAP_ANONYMOUS, fd, 0);
   if (pa == MAP_FAILED) {
     perror("mmap");
     abort();