#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <i86.h>
#include <sys/mman.h>
#include <X.h>
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"
void xf86EnableInterrupts()
{
_enable();
}
void xf86DisableInterrupts()
{
xf86ErrorF("Disable interrupts: not yet...\n");
}
Bool xf86LinearVidMem()
{
xf86ErrorF("xf86LinearMem: called\n");
return(TRUE);
}
int QNX_PhMem_fd = -1;
pointer xf86MapVidMem(ScreenNum, Flags, Base, Size)
int ScreenNum;
int Flags;
unsigned long Base;
unsigned long Size;
{
int fd;
void *base;
xf86ErrorF("xf86MapVidMem called\n");
if(QNX_PhMem_fd < 0) {
if ((fd = shm_open("Physical", O_RDWR, 0777)) < 0) {
FatalError("xf86MapVidMem: Failed to open /dev/shmem\n");
}
QNX_PhMem_fd = fd;
}
base = mmap((caddr_t)0, Size,
(Flags & VIDMEM_READONLY) ?
PROT_READ : (PROT_READ | PROT_WRITE),
MAP_SHARED, QNX_PhMem_fd, (off_t)Base);
xf86ErrorF("MapVidMem: addr %08x size %08x addr %08x\n", Base,
Size, base);
if ((long)base == -1)
{
FatalError("xf86MapVidMem: Failed to mmap video memory\n");
}
return(base);
}
void xf86UnMapVidMem(ScreenNum, Base, Size)
int ScreenNum;
pointer Base;
unsigned long Size;
{
xf86ErrorF("xf86UnmapVidMem called\n");
munmap((caddr_t) Base, Size);
}
int
xf86ReadBIOS(Base, Offset, Buf, Len)
unsigned long Base, Offset;
unsigned char *Buf;
int Len;
{
unsigned char * VirtBase;
xf86ErrorF("xf86ReadBIOS called\n");
if (QNX_PhMem_fd == -1)
{
if ((QNX_PhMem_fd = shm_open("Physical", O_RDWR, 0777)) < 0)
{
FatalError("xf86ReadBIOS: cannot open Physical memory\n");
}
}
VirtBase = (unsigned char *) mmap(0, (size_t)((Offset & 0x7fff) + Len), PROT_READ,
MAP_SHARED, QNX_PhMem_fd,
(off_t) (Base + (Offset & 0xffff8000)));
if((long)VirtBase == -1) {
FatalError(
"xf86ReadBIOS: Could not mmap BIOS memory space, errno=%i\n",
errno);
}
if (((off_t)((off_t)Offset & 0x7FFF) != (off_t)0) &&
(VirtBase[0] != 0x55) &&
(VirtBase[1] != 0xaa)) {
xf86ErrorF(
"xf86ReadBIOS: BIOS sanity check failed, addr=%x\n",
(int)Base + Offset);
munmap(VirtBase, (Offset & 0x7fff) + Len);
return(-1);
}
memcpy(Buf, VirtBase + (Offset & 0x7fff), Len);
munmap(VirtBase, (Offset & 0x7fff) + Len);
return(Len);
}
void
xf86MapReadSideEffects(int ScreenNum, int Flags, pointer Base,
unsigned long Size)
{
return;
}
Bool
xf86CheckMTRR(int s)
{
return FALSE;
}