aux/vga: dont use /proc/$pid/mem to access vga bios

using /proc/$pid/mem to access vga bios is not portable and crashes
sgi machines when aux/vga is run. instead, try /dev/realmodemem
first (provided by realemu), then #v/vgabios.
This commit is contained in:
cinap_lenrek 2015-05-19 14:02:02 +02:00
parent ca123ae366
commit 8f8c2d6779

View file

@ -12,7 +12,6 @@ static int iowfd = -1;
static int iolfd = -1; static int iolfd = -1;
static int biosfd = -1; static int biosfd = -1;
static int msrfd = -1; static int msrfd = -1;
static ulong biosoffset = 0;
enum { enum {
Nctlchar = 256, Nctlchar = 256,
@ -243,20 +242,13 @@ setpalette(int p, int r, int g, int b)
static long static long
doreadbios(char* buf, long len, long offset) doreadbios(char* buf, long len, long offset)
{ {
char file[64]; if(biosfd < 0)
biosfd = open("/dev/realmodemem", OREAD);
if(biosfd == -1){ if(biosfd < 0)
biosfd = open("#v/vgabios", OREAD); biosfd = devopen("#v/vgabios", OREAD);
biosoffset = 0; if(biosfd < 0)
}
if(biosfd == -1){
snprint(file, sizeof file, "#p/%d/mem", getpid());
biosfd = devopen(file, OREAD);
biosoffset = 0x80000000;
}
if(biosfd == -1)
return -1; return -1;
seek(biosfd, biosoffset+offset, 0); seek(biosfd, offset, 0);
return read(biosfd, buf, len); return read(biosfd, buf, len);
} }