diff options
Diffstat (limited to 'nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10')
5 files changed, 0 insertions, 1169 deletions
diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/Imakefile deleted file mode 100644 index 6a23e75e5..000000000 --- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/Imakefile +++ /dev/null @@ -1,77 +0,0 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/Imakefile,v 1.15 2003/06/12 14:12:36 eich Exp $ - -#define IHaveModules - -#include <Server.tmpl> - -#define IHaveSubdirs - - -#if defined(XF86INT10_BUILD) && \ - ( !defined(DoLoadableServer) || !defined(Int10SubLibs)) -#define DoSingleLib -# if XF86INT10_BUILD == X86VM -EXPOBJS = vm86/helper_exec.o vm86/linux_vm86.o vm86/xf86int10.o -SUBDIRS = vm86 -# elif XF86INT10_BUILD == X86EMU_OS -EXPOBJS = x86emu/x86emu.o x86emu/xf86int10.o x86emu/helper_exec.o \ - x86emu/xf86x86emu.o -SUBDIRS = x86emu -# endif -#else -SUBDIRS = vm86 x86emu -LNXDEF = -DDoSubModules -#endif - - -#ifdef IHaveSubdirs -MakeSubdirs($(SUBDIRS)) -DependSubdirs($(SUBDIRS)) -#endif - -SRCS = pci.c xf86int10module.c helper_mem.c linux.c -OBJS = pci.o xf86int10module.o helper_mem.o linux.o - - -LinkSourceFile(helper_mem.c,$(XF86SRC)/int10) -LinkSourceFile(pci.c,$(XF86SRC)/int10) -LinkSourceFile(xf86int10module.c,$(XF86SRC)/int10) - - -INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86SRC)/int10 \ - -I$(XF86OSSRC) \ - -I$(SERVERSRC)/include -I$(XINCLUDESRC) -I$(X86EMUINCLUDES) - -DEFINES=-DHAVE_SYSV_IPC $(X86EMUDEFINES) $(EXTRADEFINES) - -#if defined(i386Architecture) || defined (AMD64Architecture) -EXTRADEFINES=-D_PC -#endif - - -SpecialObjectRule(linux.o, linux.c, -DHAVE_SYSV_IPC $(LNXDEF)) - - -#if defined(XF86INT10_BUILD) && XF86INT10_BUILD > X86EMU_GENERIC - -ModuleObjectRule() - -#if HasParallelMake && defined (DoSingleLib) -MakeMutex($(SUBDIRS) $(EXPOBJS) $(DONES)) -#endif - -LibraryModuleTarget(int10, $(OBJS) $(EXPOBJS)) - -InstallLibraryModule(int10,$(MODULEDIR),linux) - -all:: - @(set -x; cd ../..; \ - RemoveFile(LibraryTargetName(int10)); \ - $(LN) linux/int10/LibraryTargetName(int10) . ) - -InstallDriverSDKLibraryModule(int10,$(DRIVERSDKMODULEDIR),.) - -#endif - -DependTarget() - diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c deleted file mode 100644 index b8e821cd1..000000000 --- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c +++ /dev/null @@ -1,649 +0,0 @@ -/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c,v 1.32 2004/02/05 18:24:59 eich Exp $ */ -/* - * linux specific part of the int10 module - * Copyright 1999, 2000, 2001, 2002, 2003, 2004 Egbert Eich - */ -#ifdef HAVE_XORG_CONFIG_H -#include <xorg-config.h> -#endif - -#include "xf86.h" -#include "xf86_OSproc.h" -#include "xf86_ansic.h" -#include "xf86Pci.h" -#include "compiler.h" -#define _INT10_PRIVATE -#include "xf86int10.h" -#ifdef __sparc__ -#define DEV_MEM "/dev/fb" -#else -#define DEV_MEM "/dev/mem" -#endif -#ifndef XFree86LOADER -#include <sys/mman.h> -#ifndef MAP_FAILED -#define MAP_FAILED ((void *)-1) -#endif -#endif -#define ALLOC_ENTRIES(x) ((V_RAM / x) - 1) -#define SHMERRORPTR (pointer)(-1) - -static int counter = 0; -static unsigned long int10Generation = 0; - -static CARD8 read_b(xf86Int10InfoPtr pInt, int addr); -static CARD16 read_w(xf86Int10InfoPtr pInt, int addr); -static CARD32 read_l(xf86Int10InfoPtr pInt, int addr); -static void write_b(xf86Int10InfoPtr pInt, int addr, CARD8 val); -static void write_w(xf86Int10InfoPtr pInt, int addr, CARD16 val); -static void write_l(xf86Int10InfoPtr pInt, int addr, CARD32 val); - -int10MemRec linuxMem = { - read_b, - read_w, - read_l, - write_b, - write_w, - write_l -}; - -typedef struct { - int lowMem; - int highMem; - char* base; - char* base_high; - int screen; - char* alloc; -} linuxInt10Priv; - -#if defined DoSubModules - -typedef enum { - INT10_NOT_LOADED, - INT10_LOADED_VM86, - INT10_LOADED_X86EMU, - INT10_LOAD_FAILED -} Int10LinuxSubModuleState; - -static Int10LinuxSubModuleState loadedSubModule = INT10_NOT_LOADED; - -static Int10LinuxSubModuleState int10LinuxLoadSubModule(ScrnInfoPtr pScrn); - -#endif /* DoSubModules */ - -xf86Int10InfoPtr -xf86InitInt10(int entityIndex) -{ - return xf86ExtendedInitInt10(entityIndex, 0); -} - -xf86Int10InfoPtr -xf86ExtendedInitInt10(int entityIndex, int Flags) -{ - xf86Int10InfoPtr pInt = NULL; - CARD8 *bios_base; - int screen; - int fd; - static void* vidMem = NULL; - static void* sysMem = NULL; - void* vMem = NULL; - void *options = NULL; - int low_mem; - int high_mem = -1; - char *base = SHMERRORPTR; - char *base_high = SHMERRORPTR; - int pagesize; - memType cs; - legacyVGARec vga; - xf86int10BiosLocation bios; - Bool videoBiosMapped = FALSE; - - if (int10Generation != serverGeneration) { - counter = 0; - int10Generation = serverGeneration; - } - - screen = (xf86FindScreenForEntity(entityIndex))->scrnIndex; - - options = xf86HandleInt10Options(xf86Screens[screen],entityIndex); - - if (int10skip(options)) { - xfree(options); - return NULL; - } - -#if defined DoSubModules - if (loadedSubModule == INT10_NOT_LOADED) - loadedSubModule = int10LinuxLoadSubModule(xf86Screens[screen]); - - if (loadedSubModule == INT10_LOAD_FAILED) - return NULL; -#endif - - if ((!vidMem) || (!sysMem)) { - if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) { - if (!sysMem) { -#ifdef DEBUG - ErrorF("Mapping sys bios area\n"); -#endif - if ((sysMem = mmap((void *)(SYS_BIOS), BIOS_SIZE, - PROT_READ | PROT_EXEC, - MAP_SHARED | MAP_FIXED, fd, SYS_BIOS)) - == MAP_FAILED) { - xf86DrvMsg(screen, X_ERROR, "Cannot map SYS BIOS\n"); - close(fd); - goto error0; - } - } - if (!vidMem) { -#ifdef DEBUG - ErrorF("Mapping VRAM area\n"); -#endif - if ((vidMem = mmap((void *)(V_RAM), VRAM_SIZE, - PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_SHARED | MAP_FIXED, fd, V_RAM)) - == MAP_FAILED) { - xf86DrvMsg(screen, X_ERROR, "Cannot map V_RAM\n"); - close(fd); - goto error0; - } - } - close(fd); - } else { - xf86DrvMsg(screen, X_ERROR, "Cannot open %s\n", DEV_MEM); - goto error0; - } - } - - pInt = (xf86Int10InfoPtr)xnfcalloc(1, sizeof(xf86Int10InfoRec)); - pInt->scrnIndex = screen; - pInt->entityIndex = entityIndex; - if (!xf86Int10ExecSetup(pInt)) - goto error0; - pInt->mem = &linuxMem; - pagesize = getpagesize(); - pInt->private = (pointer)xnfcalloc(1, sizeof(linuxInt10Priv)); - ((linuxInt10Priv*)pInt->private)->screen = screen; - ((linuxInt10Priv*)pInt->private)->alloc = - (pointer)xnfcalloc(1, ALLOC_ENTRIES(pagesize)); - - if (!xf86IsEntityPrimary(entityIndex)) { -#ifdef DEBUG - ErrorF("Mapping high memory area\n"); -#endif - if ((high_mem = shmget(counter++, HIGH_MEM_SIZE, - IPC_CREAT | SHM_R | SHM_W)) == -1) { - if (errno == ENOSYS) - xf86DrvMsg(screen, X_ERROR, "shmget error\n Please reconfigure" - " your kernel to include System V IPC support\n"); - else - xf86DrvMsg(screen, X_ERROR, - "shmget(highmem) error: %s\n",strerror(errno)); - goto error1; - } - } else { -#ifdef DEBUG - ErrorF("Mapping Video BIOS\n"); -#endif - videoBiosMapped = TRUE; - if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) { - if ((vMem = mmap((void *)(V_BIOS), SYS_BIOS - V_BIOS, - PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_SHARED | MAP_FIXED, fd, V_BIOS)) - == MAP_FAILED) { - xf86DrvMsg(screen, X_ERROR, "Cannot map V_BIOS\n"); - close(fd); - goto error1; - } - close (fd); - } else - goto error1; - } - ((linuxInt10Priv*)pInt->private)->highMem = high_mem; - -#ifdef DEBUG - ErrorF("Mapping 640kB area\n"); -#endif - if ((low_mem = shmget(counter++, V_RAM, - IPC_CREAT | SHM_R | SHM_W)) == -1) { - xf86DrvMsg(screen, X_ERROR, - "shmget(lowmem) error: %s\n",strerror(errno)); - goto error2; - } - - ((linuxInt10Priv*)pInt->private)->lowMem = low_mem; - base = shmat(low_mem, 0, 0); - if (base == SHMERRORPTR) { - xf86DrvMsg(screen, X_ERROR, - "shmat(low_mem) error: %s\n",strerror(errno)); - goto error3; - } - ((linuxInt10Priv *)pInt->private)->base = base; - if (high_mem > -1) { - base_high = shmat(high_mem, 0, 0); - if (base_high == SHMERRORPTR) { - xf86DrvMsg(screen, X_ERROR, - "shmat(high_mem) error: %s\n",strerror(errno)); - goto error3; - } - ((linuxInt10Priv*)pInt->private)->base_high = base_high; - } else - ((linuxInt10Priv*)pInt->private)->base_high = NULL; - - if (!MapCurrentInt10(pInt)) - goto error3; - - Int10Current = pInt; - -#ifdef DEBUG - ErrorF("Mapping int area\n"); -#endif - if (xf86ReadBIOS(0, 0, (unsigned char *)0, LOW_PAGE_SIZE) < 0) { - xf86DrvMsg(screen, X_ERROR, "Cannot read int vect\n"); - goto error3; - } -#ifdef DEBUG - ErrorF("done\n"); -#endif - /* - * Read in everything between V_BIOS and SYS_BIOS as some system BIOSes - * have executable code there. Note that xf86ReadBIOS() can only bring in - * 64K bytes at a time. - */ - if (!videoBiosMapped) { - (void)memset((pointer)V_BIOS, 0, SYS_BIOS - V_BIOS); -#ifdef DEBUG - ErrorF("Reading BIOS\n"); -#endif - for (cs = V_BIOS; cs < SYS_BIOS; cs += V_BIOS_SIZE) - if (xf86ReadBIOS(cs, 0, (pointer)cs, V_BIOS_SIZE) < V_BIOS_SIZE) - xf86DrvMsg(screen, X_WARNING, - "Unable to retrieve all of segment 0x%06lX.\n", cs); -#ifdef DEBUG - ErrorF("done\n"); -#endif - } - - xf86int10ParseBiosLocation(options,&bios); - - if (xf86IsEntityPrimary(entityIndex) - && !(initPrimary(options))) { - if (bios.bus == BUS_ISA && bios.location.legacy) { - xf86DrvMsg(screen, X_CONFIG, - "Overriding BIOS location: 0x%x\n", - bios.location.legacy); - cs = bios.location.legacy >> 4; - bios_base = (unsigned char *)(cs << 4); - if (!int10_check_bios(screen, cs, bios_base)) { - xf86DrvMsg(screen, X_ERROR, - "No V_BIOS at specified address 0x%lx\n",cs << 4); - goto error3; - } - } else { - if (bios.bus == BUS_PCI) { - xf86DrvMsg(screen, X_WARNING, - "Option BiosLocation for primary device ignored: " - "It points to PCI.\n"); - xf86DrvMsg(screen, X_WARNING, - "You must set Option InitPrimary also\n"); - } - - cs = ((CARD16*)0)[(0x10<<1) + 1]; - - bios_base = (unsigned char *)(cs << 4); - - if (!int10_check_bios(screen, cs, bios_base)) { - cs = ((CARD16*)0)[(0x42 << 1) + 1]; - bios_base = (unsigned char *)(cs << 4); - if (!int10_check_bios(screen, cs, bios_base)) { - cs = V_BIOS >> 4; - bios_base = (unsigned char *)(cs << 4); - if (!int10_check_bios(screen, cs, bios_base)) { - xf86DrvMsg(screen, X_ERROR, "No V_BIOS found\n"); - goto error3; - } - } - } - } - - xf86DrvMsg(screen, X_INFO, "Primary V_BIOS segment is: 0x%lx\n", cs); - - pInt->BIOSseg = cs; - set_return_trap(pInt); -#ifdef _PC - pInt->Flags = Flags & (SET_BIOS_SCRATCH | RESTORE_BIOS_SCRATCH); - if (! (pInt->Flags & SET_BIOS_SCRATCH)) - pInt->Flags &= ~RESTORE_BIOS_SCRATCH; - xf86Int10SaveRestoreBIOSVars(pInt, TRUE); -#endif - } else { - EntityInfoPtr pEnt = xf86GetEntityInfo(pInt->entityIndex); - BusType location_type; - - if (bios.bus != BUS_NONE) { - switch (location_type = bios.bus) { - case BUS_PCI: - xf86DrvMsg(screen,X_CONFIG,"Overriding bios location: " - "PCI:%i:%i%i\n",bios.location.pci.bus, - bios.location.pci.dev,bios.location.pci.func); - break; - case BUS_ISA: - if (bios.location.legacy) - xf86DrvMsg(screen,X_CONFIG,"Overriding bios location: " - "Legacy:0x%x\n",bios.location.legacy); - else - xf86DrvMsg(screen,X_CONFIG,"Overriding bios location: " - "Legacy\n"); - break; - default: - break; - } - } else - location_type = pEnt->location.type; - - switch (location_type) { - case BUS_PCI: - { - int pci_entity; - - if (bios.bus == BUS_PCI) - pci_entity = xf86GetPciEntity(bios.location.pci.bus, - bios.location.pci.dev, - bios.location.pci.func); - else - pci_entity = pInt->entityIndex; - if (!mapPciRom(pci_entity, (unsigned char *)(V_BIOS))) { - xf86DrvMsg(screen, X_ERROR, "Cannot read V_BIOS\n"); - goto error3; - } - pInt->BIOSseg = V_BIOS >> 4; - break; - } - case BUS_ISA: - if (bios.bus == BUS_ISA && bios.location.legacy) { - cs = bios.location.legacy >> 4; - bios_base = (unsigned char *)(cs << 4); - if (!int10_check_bios(screen, cs, bios_base)) { - xf86DrvMsg(screen,X_ERROR,"No V_BIOS found " - "on override address %p\n",bios_base); - goto error3; - } - } else { - cs = ((CARD16*)0)[(0x10<<1)+1]; - bios_base = (unsigned char *)(cs << 4); - - if (!int10_check_bios(screen, cs, bios_base)) { - cs = ((CARD16*)0)[(0x42<<1)+1]; - bios_base = (unsigned char *)(cs << 4); - if (!int10_check_bios(screen, cs, bios_base)) { - cs = V_BIOS >> 4; - bios_base = (unsigned char *)(cs << 4); - if (!int10_check_bios(screen, cs, bios_base)) { - xf86DrvMsg(screen,X_ERROR,"No V_BIOS found\n"); - goto error3; - } - } - } - } - xf86DrvMsg(screen,X_INFO,"Primary V_BIOS segment is: 0x%lx\n",cs); - pInt->BIOSseg = cs; - break; - default: - goto error3; - } - xfree(pEnt); - pInt->num = 0xe6; - reset_int_vect(pInt); - set_return_trap(pInt); - LockLegacyVGA(pInt, &vga); - xf86ExecX86int10(pInt); - UnlockLegacyVGA(pInt, &vga); - } -#ifdef DEBUG - dprint(0xc0000, 0x20); -#endif - - xfree(options); - return pInt; - -error3: - if (base_high) - shmdt(base_high); - shmdt(base); - shmdt(0); - if (base_high) - shmdt((char*)HIGH_MEM); - shmctl(low_mem, IPC_RMID, NULL); - Int10Current = NULL; -error2: - if (high_mem > -1) - shmctl(high_mem, IPC_RMID,NULL); -error1: - if (vMem) - munmap(vMem, SYS_BIOS - V_BIOS); - xfree(((linuxInt10Priv*)pInt->private)->alloc); - xfree(pInt->private); -error0: - xfree(options); - xfree(pInt); - return NULL; -} - -Bool -MapCurrentInt10(xf86Int10InfoPtr pInt) -{ - pointer addr; - int fd = -1; - - if (Int10Current) { - shmdt(0); - if (((linuxInt10Priv*)Int10Current->private)->highMem >= 0) - shmdt((char*)HIGH_MEM); - else - munmap((pointer)V_BIOS, (SYS_BIOS - V_BIOS)); - } - addr = shmat(((linuxInt10Priv*)pInt->private)->lowMem, (char*)1, SHM_RND); - if (addr == SHMERRORPTR) { - xf86DrvMsg(pInt->scrnIndex, X_ERROR, "Cannot shmat() low memory\n"); - xf86DrvMsg(pInt->scrnIndex, X_ERROR, - "shmat(low_mem) error: %s\n",strerror(errno)); - return FALSE; - } - - if (((linuxInt10Priv*)pInt->private)->highMem >= 0) { - addr = shmat(((linuxInt10Priv*)pInt->private)->highMem, - (char*)HIGH_MEM, 0); - if (addr == SHMERRORPTR) { - xf86DrvMsg(pInt->scrnIndex, X_ERROR, - "Cannot shmat() high memory\n"); - xf86DrvMsg(pInt->scrnIndex, X_ERROR, - "shmget error: %s\n",strerror(errno)); - return FALSE; - } - } else { - if ((fd = open(DEV_MEM, O_RDWR, 0)) >= 0) { - if (mmap((void *)(V_BIOS), SYS_BIOS - V_BIOS, - PROT_READ | PROT_WRITE | PROT_EXEC, - MAP_SHARED | MAP_FIXED, fd, V_BIOS) - == MAP_FAILED) { - xf86DrvMsg(pInt->scrnIndex, X_ERROR, "Cannot map V_BIOS\n"); - close (fd); - return FALSE; - } - } else { - xf86DrvMsg(pInt->scrnIndex, X_ERROR, "Cannot open %s\n",DEV_MEM); - return FALSE; - } - close (fd); - } - - return TRUE; -} - -void -xf86FreeInt10(xf86Int10InfoPtr pInt) -{ - if (!pInt) - return; - -#ifdef _PC - xf86Int10SaveRestoreBIOSVars(pInt, FALSE); -#endif - if (Int10Current == pInt) { - shmdt(0); - if (((linuxInt10Priv*)pInt->private)->highMem >= 0) - shmdt((char*)HIGH_MEM); - else - munmap((pointer)V_BIOS, (SYS_BIOS - V_BIOS)); - Int10Current = NULL; - } - - if (((linuxInt10Priv*)pInt->private)->base_high) - shmdt(((linuxInt10Priv*)pInt->private)->base_high); - shmdt(((linuxInt10Priv*)pInt->private)->base); - shmctl(((linuxInt10Priv*)pInt->private)->lowMem, IPC_RMID, NULL); - if (((linuxInt10Priv*)pInt->private)->highMem >= 0) - shmctl(((linuxInt10Priv*)pInt->private)->highMem, IPC_RMID, NULL); - xfree(((linuxInt10Priv*)pInt->private)->alloc); - xfree(pInt->private); - xfree(pInt); -} - -void * -xf86Int10AllocPages(xf86Int10InfoPtr pInt, int num, int *off) -{ - int pagesize = getpagesize(); - int num_pages = ALLOC_ENTRIES(pagesize); - int i, j; - - for (i = 0; i < (num_pages - num); i++) { - if (((linuxInt10Priv*)pInt->private)->alloc[i] == 0) { - for (j = i; j < (num + i); j++) - if ((((linuxInt10Priv*)pInt->private)->alloc[j] != 0)) - break; - if (j == (num + i)) - break; - else - i = i + num; - } - } - if (i == (num_pages - num)) - return NULL; - - for (j = i; j < (i + num); j++) - ((linuxInt10Priv*)pInt->private)->alloc[j] = 1; - - *off = (i + 1) * pagesize; - - return ((linuxInt10Priv*)pInt->private)->base + ((i + 1) * pagesize); -} - -void -xf86Int10FreePages(xf86Int10InfoPtr pInt, void *pbase, int num) -{ - int pagesize = getpagesize(); - int first = (((unsigned long)pbase - - (unsigned long)((linuxInt10Priv*)pInt->private)->base) - / pagesize) - 1; - int i; - - for (i = first; i < (first + num); i++) - ((linuxInt10Priv*)pInt->private)->alloc[i] = 0; -} - -static CARD8 -read_b(xf86Int10InfoPtr pInt, int addr) -{ - return *((CARD8 *)(memType)addr); -} - -static CARD16 -read_w(xf86Int10InfoPtr pInt, int addr) -{ - return *((CARD16 *)(memType)addr); -} - -static CARD32 -read_l(xf86Int10InfoPtr pInt, int addr) -{ - return *((CARD32 *)(memType)addr); -} - -static void -write_b(xf86Int10InfoPtr pInt, int addr, CARD8 val) -{ - *((CARD8 *)(memType)addr) = val; -} - -static void -write_w(xf86Int10InfoPtr pInt, int addr, CARD16 val) -{ - *((CARD16 *)(memType)addr) = val; -} - -static -void write_l(xf86Int10InfoPtr pInt, int addr, CARD32 val) -{ - *((CARD32 *)(memType) addr) = val; -} - -pointer -xf86int10Addr(xf86Int10InfoPtr pInt, CARD32 addr) -{ - if (addr < V_RAM) - return ((linuxInt10Priv*)pInt->private)->base + addr; - else if (addr < V_BIOS) - return (pointer)(memType)addr; - else if (addr < SYS_BIOS) { - if (((linuxInt10Priv*)pInt->private)->base_high) - return (pointer)(((linuxInt10Priv*)pInt->private)->base_high - - V_BIOS + addr); - else - return (pointer) (memType)addr; - } else - return (pointer) (memType)addr; -} - -#if defined DoSubModules - -static Bool -vm86_tst(void) -{ - int __res; - -#ifdef __PIC__ - /* When compiling with -fPIC, we can't use asm constraint "b" because - %ebx is already taken by gcc. */ - __asm__ __volatile__("pushl %%ebx\n\t" - "movl %2,%%ebx\n\t" - "movl %1,%%eax\n\t" - "int $0x80\n\t" - "popl %%ebx" - :"=a" (__res) - :"n" ((int)113), "r" (NULL)); -#else - __asm__ __volatile__("int $0x80\n\t" - :"=a" (__res):"a" ((int)113), - "b" ((struct vm86_struct *)NULL)); -#endif - - if (__res < 0 && __res == -ENOSYS) - return FALSE; - - return TRUE; -} - -static Int10LinuxSubModuleState -int10LinuxLoadSubModule(ScrnInfoPtr pScrn) -{ - if (vm86_tst()) { - if (xf86LoadSubModule(pScrn,"vm86")) - return INT10_LOADED_VM86; - } - if (xf86LoadSubModule(pScrn,"x86emu")) - return INT10_LOADED_X86EMU; - - return INT10_LOAD_FAILED; -} - -#endif /* DoSubModules */ diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/Imakefile deleted file mode 100644 index 522369894..000000000 --- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/Imakefile +++ /dev/null @@ -1,55 +0,0 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/Imakefile,v 1.2 2003/06/12 14:12:37 eich Exp $ - -#define IHaveModules - -#include <Server.tmpl> - -SRCS1 = linux_vm86.c helper_exec.c xf86int10.c -OBJS1 = linux_vm86.o helper_exec.o xf86int10.o - -#if defined(DoLoadableServer) && defined(Int10SubLibs) -SUBMODSRCS = xf86vm86module.c -SUBMODOBJS = xf86vm86module.o -#endif - -OBJS = $(SUBMODOBJS) $(OBJS1) -SRCS = $(SUBMODSRCS) $(SRCS1) - -LinkSourceFile(helper_exec.c,$(XF86SRC)/int10) -LinkSourceFile(xf86int10.c,$(XF86SRC)/int10) -LinkFile(xf86vm86module.c,$(XF86SRC)/int10/xf86int10module.c) - - -INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86SRC)/int10 \ - -I$(XF86OSSRC) \ - -I$(SERVERSRC)/include -I$(XINCLUDESRC) -I$(X86EMUINCLUDES) - -DEFINES=-DHAVE_SYSV_IPC $(X86EMUDEFINES) $(EXTRADEFINES) - -#if defined(i386Architecture) || defined (AMD64Architecture) -EXTRADEFINES=-D_PC -#endif - -SpecialObjectRule(xf86vm86module.o, xf86vm86module.c, -DMOD_NAME=vm86) -SpecialObjectRule(helper_exec.o, helper_exec.c, -D_VM86_LINUX) -SpecialObjectRule(xf86int10.o, xf86int10.c, -D_VM86_LINUX -DSHOW_ALL_DEVICES) -SpecialObjectRule(linux_vm86.o, linux_vm86.c, -D_VM86_LINUX) - -ModuleObjectRule() - -#if defined(DoLoadableServer) && defined(Int10SubLibs) -LibraryModuleTarget(vm86, $(OBJS)) -InstallLibraryModule(vm86,$(MODULEDIR),linux) - -all:: - @(set -x; cd ../..; \ - RemoveFile(LibraryTargetName(vm86)); \ - $(LN) linux/int10/vm86/LibraryTargetName(vm86) . ) - -InstallDriverSDKLibraryModule(vm86,$(DRIVERSDKMODULEDIR),.) -#else -SubdirLibraryRule($(OBJS)) -#endif - -DependTarget() - diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c deleted file mode 100644 index e99cde8da..000000000 --- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c +++ /dev/null @@ -1,302 +0,0 @@ -/* $XFree86$ */ - -#ifdef HAVE_XORG_CONFIG_H -#include <xorg-config.h> -#endif - -#include "xf86.h" -#include "xf86_OSproc.h" -#include "xf86_ansic.h" -#include "xf86Pci.h" -#include "compiler.h" -#define _INT10_PRIVATE -#include "xf86int10.h" - -#define REG pInt - -#ifdef _VM86_LINUX -#include "int10Defines.h" - -static int vm86_rep(struct vm86_struct *ptr); -static struct vm86_struct vm86_s; - -Bool -xf86Int10ExecSetup(xf86Int10InfoPtr pInt) -{ -#define VM86S ((struct vm86_struct *)pInt->cpuRegs) - - pInt->cpuRegs = &vm86_s; - VM86S->flags = 0; - VM86S->screen_bitmap = 0; - VM86S->cpu_type = CPU_586; - memset(&VM86S->int_revectored, 0xff, sizeof(VM86S->int_revectored)); - memset(&VM86S->int21_revectored, 0xff, sizeof(VM86S->int21_revectored)); - return TRUE; -} - -/* get the linear address */ -#define LIN_PREF_SI ((pref_seg << 4) + X86_SI) -#define LWECX ((prefix66 ^ prefix67) ? X86_ECX : X86_CX) -#define LWECX_ZERO {if (prefix66 ^ prefix67) X86_ECX = 0; else X86_CX = 0;} -#define DF (1 << 10) - -/* vm86 fault handling */ -static Bool -vm86_GP_fault(xf86Int10InfoPtr pInt) -{ - unsigned char *csp, *lina; - CARD32 org_eip; - int pref_seg; - int done, is_rep, prefix66, prefix67; - - csp = lina = SEG_ADR((unsigned char *), X86_CS, IP); - - is_rep = 0; - prefix66 = prefix67 = 0; - pref_seg = -1; - - /* eat up prefixes */ - done = 0; - do { - switch (MEM_RB(pInt, (int)csp++)) { - case 0x66: /* operand prefix */ prefix66=1; break; - case 0x67: /* address prefix */ prefix67=1; break; - case 0x2e: /* CS */ pref_seg=X86_CS; break; - case 0x3e: /* DS */ pref_seg=X86_DS; break; - case 0x26: /* ES */ pref_seg=X86_ES; break; - case 0x36: /* SS */ pref_seg=X86_SS; break; - case 0x65: /* GS */ pref_seg=X86_GS; break; - case 0x64: /* FS */ pref_seg=X86_FS; break; - case 0xf0: /* lock */ break; - case 0xf2: /* repnz */ - case 0xf3: /* rep */ is_rep=1; break; - default: done=1; - } - } while (!done); - csp--; /* oops one too many */ - org_eip = X86_EIP; - X86_IP += (csp - lina); - - switch (MEM_RB(pInt, (int)csp)) { - case 0x6c: /* insb */ - /* NOTE: ES can't be overwritten; prefixes 66,67 should use esi,edi,ecx - * but is anyone using extended regs in real mode? */ - /* WARNING: no test for DI wrapping! */ - X86_EDI += port_rep_inb(pInt, X86_DX, SEG_EADR((CARD32), X86_ES, DI), - X86_FLAGS & DF, is_rep ? LWECX : 1); - if (is_rep) LWECX_ZERO; - X86_IP++; - break; - - case 0x6d: /* (rep) insw / insd */ - /* NOTE: ES can't be overwritten */ - /* WARNING: no test for _DI wrapping! */ - if (prefix66) { - X86_DI += port_rep_inl(pInt, X86_DX, SEG_ADR((CARD32), X86_ES, DI), - X86_EFLAGS & DF, is_rep ? LWECX : 1); - } - else { - X86_DI += port_rep_inw(pInt, X86_DX, SEG_ADR((CARD32), X86_ES, DI), - X86_FLAGS & DF, is_rep ? LWECX : 1); - } - if (is_rep) LWECX_ZERO; - X86_IP++; - break; - - case 0x6e: /* (rep) outsb */ - if (pref_seg < 0) pref_seg = X86_DS; - /* WARNING: no test for _SI wrapping! */ - X86_SI += port_rep_outb(pInt, X86_DX, (CARD32)LIN_PREF_SI, - X86_FLAGS & DF, is_rep ? LWECX : 1); - if (is_rep) LWECX_ZERO; - X86_IP++; - break; - - case 0x6f: /* (rep) outsw / outsd */ - if (pref_seg < 0) pref_seg = X86_DS; - /* WARNING: no test for _SI wrapping! */ - if (prefix66) { - X86_SI += port_rep_outl(pInt, X86_DX, (CARD32)LIN_PREF_SI, - X86_EFLAGS & DF, is_rep ? LWECX : 1); - } - else { - X86_SI += port_rep_outw(pInt, X86_DX, (CARD32)LIN_PREF_SI, - X86_FLAGS & DF, is_rep ? LWECX : 1); - } - if (is_rep) LWECX_ZERO; - X86_IP++; - break; - - case 0xe5: /* inw xx, inl xx */ - if (prefix66) X86_EAX = x_inl(csp[1]); - else X86_AX = x_inw(csp[1]); - X86_IP += 2; - break; - - case 0xe4: /* inb xx */ - X86_AL = x_inb(csp[1]); - X86_IP += 2; - break; - - case 0xed: /* inw dx, inl dx */ - if (prefix66) X86_EAX = x_inl(X86_DX); - else X86_AX = x_inw(X86_DX); - X86_IP += 1; - break; - - case 0xec: /* inb dx */ - X86_AL = x_inb(X86_DX); - X86_IP += 1; - break; - - case 0xe7: /* outw xx */ - if (prefix66) x_outl(csp[1], X86_EAX); - else x_outw(csp[1], X86_AX); - X86_IP += 2; - break; - - case 0xe6: /* outb xx */ - x_outb(csp[1], X86_AL); - X86_IP += 2; - break; - - case 0xef: /* outw dx */ - if (prefix66) x_outl(X86_DX, X86_EAX); - else x_outw(X86_DX, X86_AX); - X86_IP += 1; - break; - - case 0xee: /* outb dx */ - x_outb(X86_DX, X86_AL); - X86_IP += 1; - break; - - case 0xf4: -#ifdef DEBUG - ErrorF("hlt at %p\n", lina); -#endif - return FALSE; - - case 0x0f: - xf86DrvMsg(pInt->scrnIndex, X_ERROR, - "CPU 0x0f Trap at CS:EIP=0x%4.4x:0x%8.8lx\n", X86_CS, X86_EIP); - goto op0ferr; - - default: - xf86DrvMsg(pInt->scrnIndex, X_ERROR, "unknown reason for exception\n"); - - op0ferr: - dump_registers(pInt); - stack_trace(pInt); - dump_code(pInt); - xf86DrvMsg(pInt->scrnIndex, X_ERROR, "cannot continue\n"); - return FALSE; - } /* end of switch() */ - return TRUE; -} - -static int -do_vm86(xf86Int10InfoPtr pInt) -{ - int retval, signo; - - xf86InterceptSignals(&signo); - retval = vm86_rep(VM86S); - xf86InterceptSignals(NULL); - - if (signo >= 0) { - xf86DrvMsg(pInt->scrnIndex, X_ERROR, - "vm86() syscall generated signal %d.\n", signo); - dump_registers(pInt); - dump_code(pInt); - stack_trace(pInt); - return 0; - } - - switch (VM86_TYPE(retval)) { - case VM86_UNKNOWN: - if (!vm86_GP_fault(pInt)) return 0; - break; - case VM86_STI: - xf86DrvMsg(pInt->scrnIndex, X_ERROR, "vm86_sti :-((\n"); - dump_registers(pInt); - dump_code(pInt); - stack_trace(pInt); - return 0; - case VM86_INTx: - pInt->num = VM86_ARG(retval); - if (!int_handler(pInt)) { - xf86DrvMsg(pInt->scrnIndex, X_ERROR, - "Unknown vm86_int: 0x%X\n\n", VM86_ARG(retval)); - dump_registers(pInt); - dump_code(pInt); - stack_trace(pInt); - return 0; - } - /* I'm not sure yet what to do if we can handle ints */ - break; - case VM86_SIGNAL: - return 1; - /* - * we used to warn here and bail out - but now the sigio stuff - * always fires signals at us. So we just ignore them for now. - */ - xf86DrvMsg(pInt->scrnIndex, X_WARNING, "received signal\n"); - return 0; - default: - xf86DrvMsg(pInt->scrnIndex, X_ERROR, "unknown type(0x%x)=0x%x\n", - VM86_ARG(retval), VM86_TYPE(retval)); - dump_registers(pInt); - dump_code(pInt); - stack_trace(pInt); - return 0; - } - - return 1; -} - -void -xf86ExecX86int10(xf86Int10InfoPtr pInt) -{ - int sig = setup_int(pInt); - - if (int_handler(pInt)) - while(do_vm86(pInt)) {}; - - finish_int(pInt, sig); -} - -static int -vm86_rep(struct vm86_struct *ptr) -{ - int __res; - -#ifdef __PIC__ - /* When compiling with -fPIC, we can't use asm constraint "b" because - %ebx is already taken by gcc. */ - __asm__ __volatile__("pushl %%ebx\n\t" - "push %%gs\n\t" - "movl %2,%%ebx\n\t" - "movl %1,%%eax\n\t" - "int $0x80\n\t" - "pop %%gs\n\t" - "popl %%ebx" - :"=a" (__res) - :"n" ((int)113), "r" ((struct vm86_struct *)ptr)); -#else - __asm__ __volatile__("push %%gs\n\t" - "int $0x80\n\t" - "pop %%gs" - :"=a" (__res):"a" ((int)113), - "b" ((struct vm86_struct *)ptr)); -#endif - - if (__res < 0) { - errno = -__res; - __res = -1; - } - else errno = 0; - return __res; -} - -#endif diff --git a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/x86emu/Imakefile b/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/x86emu/Imakefile deleted file mode 100644 index 8a0dc4463..000000000 --- a/nx-X11/programs/Xserver/hw/xfree86/os-support/linux/int10/x86emu/Imakefile +++ /dev/null @@ -1,86 +0,0 @@ -XCOMM $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/int10/x86emu/Imakefile,v 1.2 2003/06/12 14:12:37 eich Exp $ - -#define IHaveModules - -#include <Server.tmpl> - -SRCS1 = xf86x86emu.c helper_exec.c xf86int10.c -OBJS1 = xf86x86emu.o helper_exec.o xf86int10.o - -#if defined(DoLoadableServer) && defined(Int10SubLibs) -SUBMODSRCS = xf86x86emumodule.c -SUBMODOBJS = xf86x86emumodule.o -#endif - -SRCS2 = $(SUBMODSRCS) $(SRCS1) -OBJS2 = $(SUBMODOBJS) $(OBJS1) - -LinkSourceFile(helper_exec.c,$(XF86SRC)/int10) -LinkSourceFile(xf86int10.c,$(XF86SRC)/int10) -LinkSourceFile(xf86x86emu.c,$(XF86SRC)/int10) -LinkFile(xf86x86emumodule.c,$(XF86SRC)/int10/xf86int10module.c) - - -INCLUDES = -I. -I$(XF86COMSRC) -I$(XF86SRC)/int10 \ - -I$(XF86OSSRC) \ - -I$(SERVERSRC)/include -I$(XINCLUDESRC) -I$(X86EMUINCLUDES) - -DEFINES=-DHAVE_SYSV_IPC $(X86EMUDEFINES) $(EXTRADEFINES) - -#if defined(i386Architecture) || defined (AMD64Architecture) -EXTRADEFINES=-D_PC -#endif - -SpecialObjectRule(xf86x86emumodule.o, xf86x86emumodule.c, -DMOD_NAME=x86emu) -SpecialObjectRule(helper_exec.o, helper_exec.c, -D_X86EMU) -SpecialObjectRule(xf86int10.o, xf86int10.c, -D_X86EMU -DSHOW_ALL_DEVICES) -SpecialObjectRule(linux.o, linux.c, -D_X86EMU -DHAVE_SYSV_IPC) - -X86TOPDIR = $(TOP)/extras/x86emu -X86SRCDIR = $(X86TOPDIR)/src/x86emu -X86EMUINCLUDES = $(X86TOPDIR)/include -I$(X86SRCDIR) -# if DoLoadableServer -X86EMUMODDEFS = -DNO_SYS_HEADERS -# endif - -X86EMUDEFINES = -D__DRIVER__ -DFORCE_POST -D_CEXPORT= -DNO_LONG_LONG $(X86EMUMODDEFS) - -#if !defined(X86EMU_LIBPATH) -X86EMUSRCS = x86emu.c -X86EMUOBJS = x86emu.o - -LinkSourceFile(x86emu.c,$(XF86SRC)/int10) -LinkSourceFile(debug.c,$(X86SRCDIR)) -LinkSourceFile(decode.c,$(X86SRCDIR)) -LinkSourceFile(fpu.c,$(X86SRCDIR)) -LinkSourceFile(ops.c,$(X86SRCDIR)) -LinkSourceFile(ops2.c,$(X86SRCDIR)) -LinkSourceFile(prim_ops.c,$(X86SRCDIR)) -LinkSourceFile(sys.c,$(X86SRCDIR)) -#else -BuildObjectFromLibraryWithPath(X86EMU_LIBPATH,x86emu,x86emu) -X86EMUOBJS = x86emu.o -#endif - -SRCS = $(SRCS2) $(X86EMUSRCS) -OBJS = $(OBJS2) $(X86EMUOBJS) - -ModuleObjectRule() - -#if defined(DoLoadableServer) && defined(Int10SubLibs) -LibraryModuleTarget(x86emu, $(OBJS)) - -InstallLibraryModule(x86emu,$(MODULEDIR),linux) - -all:: - @(set -x; cd ../..; \ - RemoveFile(LibraryTargetName(x86emu)); \ - $(LN) linux/int10/x86emu/LibraryTargetName(x86emu) . ) - -InstallDriverSDKLibraryModule(x86emu,$(DRIVERSDKMODULEDIR),.) -#else -SubdirLibraryRule($(OBJS)) -#endif - -DependTarget() - |