--- /dev/null
+.\" $OpenBSD: ap.4,v 1.1 1997/01/19 12:29:25 mickey Exp $
+.\"
+.\" Copyright (c) 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 4. Neither the name of the University nor the names of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" from: @(#)mem.4 5.3 (Berkeley) 5/2/91
+.\" from Id: mem.4,v 1.1.1.1 1995/10/18 08:44:29 deraadt Exp
+.\"
+.Dd Jan 19, 1997
+.Dt AP 4
+.Os
+.Sh NAME
+.Nm xf86
+.Nd XFree86 Framebuffer aperture driver
+.Sh DESCRIPTION
+This module was written to help work around the security feature of
+the OS that prevents read/write access to /dev/mem.
+.Pp
+XFree86 can take advantage of having direct access to video
+memory (especially with VLB and PCI cards) and even requires it for
+the P9000 server.
+.Pp
+This driver works like the standard
+.Nm /dev/mem
+driver. It just allows
+mapping of the VGA framebuffer even if kernel security level is > 0.
+The driver only implements the
+.Xr open 2 ,
+.Xr close 2 ,
+.Xr mmap 2
+calls. In
+order not to defeat kernel security, only one open() at a time is
+allowed and only a process with effective user id of 0 can perform
+it. So while you're running XFree86, no other process will be allowed
+to open
+.Nm /dev/xf86
+.Sh FILES
+.Bl -tag -width Pa -compact
+.It Pa /dev/xf86
+.El
+.Sh SEE ALSO
+.Xr mem 4 ,
+.Xr kmem 4
+.Sh HISTORY
+This work is heavily inspired from the Solaris x86 aperture driver by
+Doug Anson (danson@lgc.com) and David Holland (davidh@use.com).
+
-/* $OpenBSD: aperture.c,v 1.2 1996/12/21 22:23:38 millert Exp $ */
+/* $OpenbSD$ */
/*
* Copyright 1994 the XFree86 Project Inc.
#include <sys/errno.h>
#define VGA_START 0xA0000
+#ifdef PC98
+#define VGA_END 0xFFFFF
+#define HOLE16M_START 0xF00000
+#define HOLE16M_END 0xFFFFFF
+#else
#define VGA_END 0xBFFFF
+#endif
/* open counter */
static int ap_open_count = 0;
int
apopen(dev_t dev, int oflags, int devtype, struct proc *p)
{
+
if (suser(p->p_ucred, &p->p_acflag) != 0) {
return(EPERM);
}
printf("apmmap: addr 0x%x\n", offset);
#endif
if ((minor(dev) == 0)
- && ((offset >= VGA_START && offset <= VGA_END)
- || (unsigned)offset > (unsigned)ctob(physmem))) {
+ && ((offset >= VGA_START && offset <= VGA_END )
+ || (unsigned)offset > (unsigned)ctob(physmem)
+#ifdef PC98
+ || ((unsigned)offset >=HOLE16M_START
+ && (unsigned)offset <= HOLE16M_END)
+#endif
+ )) {
return i386_btop(offset);
} else {
return(-1);