Bug 529764 nsPresArena.cpp failed to compile on Solaris r=zweinberg

This commit is contained in:
Ginn Chen 2009-11-20 14:11:42 +08:00
parent 9feef10059
commit 8f5aeb69fb
2 changed files with 12 additions and 8 deletions

View File

@ -129,19 +129,19 @@ GetDesiredRegionSize()
static void * static void *
ReserveRegion(PRUword region, PRUword size) ReserveRegion(PRUword region, PRUword size)
{ {
return mmap((void *)region, size, PROT_NONE, MAP_PRIVATE|MAP_ANON, -1, 0); return mmap((caddr_t)region, size, PROT_NONE, MAP_PRIVATE|MAP_ANON, -1, 0);
} }
static void static void
ReleaseRegion(void *region, PRUword size) ReleaseRegion(void *region, PRUword size)
{ {
munmap(region, size); munmap((caddr_t)region, size);
} }
static bool static bool
ProbeRegion(PRUword region, PRUword size) ProbeRegion(PRUword region, PRUword size)
{ {
if (madvise((void *)region, size, MADV_NORMAL)) { if (madvise((caddr_t)region, size, MADV_NORMAL)) {
return true; return true;
} else { } else {
return false; return false;

View File

@ -159,6 +159,7 @@ typedef unsigned int uint32_t;
*/ */
#if defined __i386__ || defined __x86_64__ || \ #if defined __i386__ || defined __x86_64__ || \
defined __i386 || defined __x86_64 || \
defined _M_IX86 || defined _M_AMD64 defined _M_IX86 || defined _M_AMD64
#define RETURN_INSTR 0xC3C3C3C3 /* ret; ret; ret; ret */ #define RETURN_INSTR 0xC3C3C3C3 /* ret; ret; ret; ret */
@ -170,6 +171,9 @@ typedef unsigned int uint32_t;
#elif defined _ARCH_PPC || defined _ARCH_PWR || defined _ARCH_PWR2 #elif defined _ARCH_PPC || defined _ARCH_PWR || defined _ARCH_PWR2
#define RETURN_INSTR 0x4E800020 /* blr */ #define RETURN_INSTR 0x4E800020 /* blr */
#elif defined __sparc || defined __sparcv9
#define RETURN_INSTR 0x81c3e008 /* retl */
#else #else
#error "Need return instruction for this architecture" #error "Need return instruction for this architecture"
#endif #endif
@ -257,7 +261,7 @@ static unsigned long _pagesize;
static void * static void *
ReserveRegion(uintptr_t request, bool accessible) ReserveRegion(uintptr_t request, bool accessible)
{ {
return mmap((void *)request, PAGESIZE, return mmap((caddr_t)request, PAGESIZE,
accessible ? PROT_READ|PROT_WRITE : PROT_NONE, accessible ? PROT_READ|PROT_WRITE : PROT_NONE,
MAP_PRIVATE|MAP_ANON, -1, 0); MAP_PRIVATE|MAP_ANON, -1, 0);
} }
@ -265,13 +269,13 @@ ReserveRegion(uintptr_t request, bool accessible)
static void static void
ReleaseRegion(void *page) ReleaseRegion(void *page)
{ {
munmap(page, PAGESIZE); munmap((caddr_t)page, PAGESIZE);
} }
static bool static bool
ProbeRegion(uintptr_t page) ProbeRegion(uintptr_t page)
{ {
if (madvise((void *)page, PAGESIZE, MADV_NORMAL)) { if (madvise((caddr_t)page, PAGESIZE, MADV_NORMAL)) {
return true; return true;
} else { } else {
return false; return false;
@ -281,7 +285,7 @@ ProbeRegion(uintptr_t page)
static int static int
MakeRegionExecutable(void *page) MakeRegionExecutable(void *page)
{ {
return mprotect(page, PAGESIZE, PROT_READ|PROT_WRITE|PROT_EXEC); return mprotect((caddr_t)page, PAGESIZE, PROT_READ|PROT_WRITE|PROT_EXEC);
} }
#endif #endif
@ -437,7 +441,7 @@ TestPage(const char *pagelabel, uintptr_t pageaddr, int should_succeed)
LastErrMsg()); LastErrMsg());
exit(2); exit(2);
} else if (pid == 0) { } else if (pid == 0) {
unsigned char scratch; volatile unsigned char scratch;
switch (test) { switch (test) {
case 0: scratch = *(volatile unsigned char *)opaddr; break; case 0: scratch = *(volatile unsigned char *)opaddr; break;
case 1: ((void (*)())opaddr)(); break; case 1: ((void (*)())opaddr)(); break;