#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <sys/neutrino.h>
#include <X.h>
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86_OSlib.h"
void xf86EnableInterrupts()
{
InterruptEnable();
}
Bool xf86DisableInterrupts()
{
InterruptDisable();
return 0;
}
Bool xf86LinearVidMem()
{
return(TRUE);
}
int NTO_PhMem_fd = -1;
pointer
xf86MapVidMem(int ScreenNum, int Flags, unsigned long Base, unsigned long Size)
{
int fd;
pointer base;
if(NTO_PhMem_fd < 0) {
if ((fd = open("/dev/mem", O_RDWR, 0777)) < 0) {
FatalError("xf86MapVidMem: Failed to open /dev/mem\n");
}
NTO_PhMem_fd = fd;
}
base = mmap((caddr_t)0, Size,
(Flags & VIDMEM_READONLY) ? PROT_READ : (PROT_READ | PROT_WRITE),
MAP_SHARED, NTO_PhMem_fd, (off_t)Base);
ErrorF("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(int ScreenNum, pointer Base, unsigned long Size)
{
ErrorF("xf86UnmapVidMem: base %x size %x\n", Base, Size);
munmap((caddr_t) Base, Size);
}
int
xf86ReadBIOS(Base, Offset, Buf, Len)
unsigned long Base, Offset;
unsigned char *Buf;
int Len;
{
unsigned char * VirtBase;
ErrorF("xf86ReadBIOS: base %x offset %x len %x\n", Base, Offset, Len);
if (NTO_PhMem_fd == -1) {
if ((NTO_PhMem_fd = open("/dev/mem", 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, NTO_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)) {
ErrorF( "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;
}