* 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
This commit is contained in:
Misha Brukman 2003-07-29 16:57:16 +00:00
parent a845a566e1
commit e47f069855
1 changed files with 6 additions and 10 deletions

View 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();