mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-14 21:37:52 -07:00
Changed return type of Find4GBBase() to u8*, since it really is a pointer (all callers were typecasting it to u8*).
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@553 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
9e49eda4f1
commit
f70819197a
@ -30,7 +30,7 @@
|
||||
#if !defined(MAP_ANONYMOUS) && defined(MAP_ANON)
|
||||
#define MAP_ANONYMOUS MAP_ANON
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
const char* ram_temp_file = "/tmp/gc_mem.tmp";
|
||||
|
||||
@ -106,18 +106,18 @@ void MemArena::ReleaseView(void* view, size_t size)
|
||||
}
|
||||
|
||||
|
||||
u64 MemArena::Find4GBBase()
|
||||
u8* MemArena::Find4GBBase()
|
||||
{
|
||||
#ifdef _M_X64
|
||||
#ifdef _WIN32
|
||||
// 64 bit
|
||||
u8* base = (u8*)VirtualAlloc(0, 0xE1000000, MEM_RESERVE, PAGE_READWRITE);
|
||||
VirtualFree(base, 0, MEM_RELEASE);
|
||||
return((u64)base);
|
||||
return base;
|
||||
#else
|
||||
// Very precarious - mmap cannot return an error when trying to map already used pages.
|
||||
// This makes the Windows approach above unusable on Linux, so we will simply pray...
|
||||
return(0x2300000000ULL);
|
||||
return reinterpret_cast<u8*>(0x2300000000ULL);
|
||||
#endif
|
||||
|
||||
#else
|
||||
@ -127,12 +127,12 @@ u64 MemArena::Find4GBBase()
|
||||
u8* base = (u8*)VirtualAlloc(0, 0x31000000, MEM_RESERVE, PAGE_READWRITE);
|
||||
if (base) {
|
||||
VirtualFree(base, 0, MEM_RELEASE);
|
||||
}
|
||||
return((u64)base);
|
||||
#else
|
||||
void* base = mmap(0, 0x31000000, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, 0, 0);
|
||||
munmap(base, 0x31000000);
|
||||
return reinterpret_cast<u64>(base);
|
||||
#endif
|
||||
}
|
||||
return base;
|
||||
#else
|
||||
void* base = mmap(0, 0x31000000, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, 0, 0);
|
||||
munmap(base, 0x31000000);
|
||||
return static_cast<u8*>(base);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ class MemArena
|
||||
|
||||
|
||||
// This only finds 1 GB in 32-bit
|
||||
static u64 Find4GBBase();
|
||||
static u8* Find4GBBase();
|
||||
|
||||
|
||||
private:
|
||||
|
@ -449,7 +449,7 @@ bool Init()
|
||||
#ifdef _M_X64
|
||||
//Then, in x64 mode where we have space, grab a 4GB virtual address space
|
||||
//TODO: grab 8GB and align, for easier debugging
|
||||
base = (u8*)MemArena::Find4GBBase();
|
||||
base = MemArena::Find4GBBase();
|
||||
//OK, we know where to find free space. Now grab it!
|
||||
|
||||
//Physical should be unmapped when not in "real mode"
|
||||
@ -478,7 +478,7 @@ bool Init()
|
||||
}
|
||||
#else
|
||||
// Do a poor mans version - just grab 1GB, possibly discontiguous, and use &0x3FFFFFFF as the mask whenever it is accessed.
|
||||
base = (u8*)MemArena::Find4GBBase();
|
||||
base = MemArena::Find4GBBase();
|
||||
if (!base) {
|
||||
PanicAlert("Failed to grab 1 GB of contiguous memory!\nDo you have an antivirus program or any other program\n"
|
||||
"that injects itself into every process, consuming address space?\nOr simply a bad graphics driver?\n\n"
|
||||
|
Loading…
Reference in New Issue
Block a user