summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine
diff options
context:
space:
mode:
authorMisha Brukman <brukman+llvm@gmail.com>2003-07-29 16:57:16 +0000
committerMisha Brukman <brukman+llvm@gmail.com>2003-07-29 16:57:16 +0000
commite47f0698557453c8c336a06307bd7416ad9b2511 (patch)
tree8f83ccad93aab537e490c67637e3a7f5a97777c5 /llvm/lib/ExecutionEngine
parenta845a566e1910e1647c10c3b7a95c0c59cf51d78 (diff)
downloadbcm5719-llvm-e47f0698557453c8c336a06307bd7416ad9b2511.tar.gz
bcm5719-llvm-e47f0698557453c8c336a06307bd7416ad9b2511.zip
* Stop hard-coding a value for beginning of emitted code on Sparc since we can
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. llvm-svn: 7381
Diffstat (limited to 'llvm/lib/ExecutionEngine')
-rw-r--r--llvm/lib/ExecutionEngine/JIT/Emitter.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/llvm/lib/ExecutionEngine/JIT/Emitter.cpp b/llvm/lib/ExecutionEngine/JIT/Emitter.cpp
index 9e62f13ce73..476ca45a229 100644
--- a/llvm/lib/ExecutionEngine/JIT/Emitter.cpp
+++ b/llvm/lib/ExecutionEngine/JIT/Emitter.cpp
@@ -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();
OpenPOWER on IntegriCloud