diff options
author | Kaleb Keithley <kaleb@freedesktop.org> | 2003-11-14 16:48:57 +0000 |
---|---|---|
committer | Kaleb Keithley <kaleb@freedesktop.org> | 2003-11-14 16:48:57 +0000 |
commit | 9508a382f8a9f241dab097d921b6d290c1c3a776 (patch) | |
tree | fa456480bae7040c3f971a70b390f2d091c680b5 /hw/xfree86/os-support/lynxos | |
parent | ded6147bfb5d75ff1e67c858040a628b61bc17d1 (diff) |
Initial revision
Diffstat (limited to 'hw/xfree86/os-support/lynxos')
-rw-r--r-- | hw/xfree86/os-support/lynxos/lynx_mouse.c | 30 | ||||
-rw-r--r-- | hw/xfree86/os-support/lynxos/lynx_noinline.c | 174 | ||||
-rw-r--r-- | hw/xfree86/os-support/lynxos/lynx_ppc.c | 52 |
3 files changed, 256 insertions, 0 deletions
diff --git a/hw/xfree86/os-support/lynxos/lynx_mouse.c b/hw/xfree86/os-support/lynxos/lynx_mouse.c new file mode 100644 index 000000000..1dc5ff8af --- /dev/null +++ b/hw/xfree86/os-support/lynxos/lynx_mouse.c @@ -0,0 +1,30 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_mouse.c,v 1.1 1999/05/22 08:40:14 dawes Exp $ */ + +/* + * Copyright 1999 by The XFree86 Project, Inc. + */ + +#include "X.h" +#include "xf86.h" +#include "xf86Xinput.h" +#include "xf86OSmouse.h" + +static int +SupportedInterfaces(void) +{ + /* XXX Need to check this. */ + return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_AUTO; +} + +OSMouseInfoPtr +xf86OSMouseInit(int flags) +{ + OSMouseInfoPtr p; + + p = xcalloc(sizeof(OSMouseInfoRec), 1); + if (!p) + return NULL; + p->SupportedInterfaces = SupportedInterfaces; + return p; +} + diff --git a/hw/xfree86/os-support/lynxos/lynx_noinline.c b/hw/xfree86/os-support/lynxos/lynx_noinline.c new file mode 100644 index 000000000..858b0eb65 --- /dev/null +++ b/hw/xfree86/os-support/lynxos/lynx_noinline.c @@ -0,0 +1,174 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_noinline.c,v 3.6 2002/01/25 21:56:20 tsi Exp $ */ +/* + * Copyright 1998 by Metro Link Incorporated + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation, and that the name of Metro Link + * Incorporated not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Metro Link Incorporated makes no representations + * about the suitability of this software for any purpose. It is + * provided "as is" without express or implied warranty. + * + * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE + * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY + * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +#if /* NO_INLINE && */ defined(__powerpc__) + +#include "xf86Pci.h" + +extern volatile unsigned char *ioBase; + +void +eieio() +{ + __asm__ __volatile__ ("eieio"); +} + +unsigned long +ldl_brx(volatile unsigned char *base, int ndx) +{ + register unsigned long tmp = *(volatile unsigned long *)(base+ndx); + return( ((tmp & 0x000000ff) << 24) | + ((tmp & 0x0000ff00) << 8) | + ((tmp & 0x00ff0000) >> 8) | + ((tmp & 0xff000000) >> 24) ); +} + +unsigned short +ldw_brx(volatile unsigned char *base, int ndx) +{ + register unsigned short tmp = *(volatile unsigned short *)(base+ndx); + return((tmp << 8) | (tmp >> 8)); +} + +void +stl_brx(unsigned long val, volatile unsigned char *base, int ndx) +{ + unsigned char *p = (unsigned char *)&val; + unsigned long tmp = (p[3] << 24) | (p[2] << 16) | (p[1] << 8) | (p[0] << 0); + *(volatile unsigned long *)(base+ndx) = tmp; +} + +void +stw_brx(unsigned short val, volatile unsigned char *base, int ndx) +{ + unsigned char *p = (unsigned char *)&val; + unsigned short tmp = (p[1] << 8) | p[0]; + *(volatile unsigned short *)(base+ndx) = tmp; +} + +void +outb(IOADDRESS port, unsigned char value) +{ + *((volatile unsigned char *)(ioBase + port)) = value; eieio(); +} + +void +outw(IOADDRESS port, unsigned short value) +{ + stw_brx(value, ioBase, port); eieio(); +} + +void +outl(IOADDRESS port, unsigned int value) +{ + stl_brx(value, ioBase, port); eieio(); +} + +unsigned char +inb(IOADDRESS port) +{ + unsigned char val; + + val = *((volatile unsigned char *)(ioBase + port)); eieio(); + return(val); +} + +unsigned short +inw(IOADDRESS port) +{ + unsigned short val; + + val = ldw_brx(ioBase, port); eieio(); + return(val); +} + +unsigned int +inl(IOADDRESS port) +{ + unsigned int val; + + val = ldl_brx(ioBase, port); eieio(); + return(val); +} + +unsigned long +ldl_u(void *p) +{ + return (((*(unsigned char *)(p)) | + (*((unsigned char *)(p)+1)<<8) | + (*((unsigned char *)(p)+2)<<16) | + (*((unsigned char *)(p)+3)<<24))); +} + +unsigned long +ldq_u(void *p) +{ + return ldl_u(p); +} + +unsigned short +ldw_u(void *p) +{ + return(((*(unsigned char *)(p)) | + (*((unsigned char *)(p)+1)<<8))); +} + +void +stl_u(unsigned long v, void *p) +{ + + (*(unsigned char *)(p)) = (v); + (*((unsigned char *)(p)+1)) = ((v) >> 8); + (*((unsigned char *)(p)+2)) = ((v) >> 16); + (*((unsigned char *)(p)+3)) = ((v) >> 24); +} + +void +stq_u(unsigned long v, void *p) +{ + stl_u(v,p); +} + +void +stw_u(unsigned short v, void *p) +{ + (*(unsigned char *)(p)) = (v); + (*((unsigned char *)(p)+1)) = ((v) >> 8); +} + + +void +mem_barrier(void) +{ + __asm__ __volatile__("eieio"); +} + +void +write_mem_barrier(void) +{ + __asm__ __volatile__("eieio"); +} + +#endif /* NO_INLINE && __powerpc__ */ diff --git a/hw/xfree86/os-support/lynxos/lynx_ppc.c b/hw/xfree86/os-support/lynxos/lynx_ppc.c new file mode 100644 index 000000000..e587b7ee0 --- /dev/null +++ b/hw/xfree86/os-support/lynxos/lynx_ppc.c @@ -0,0 +1,52 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/lynxos/lynx_ppc.c,v 1.1 2002/12/14 04:41:14 dawes Exp $ */ +/* + * Copyright 1998 by Metro Link Incorporated + * + * Permission to use, copy, modify, distribute, and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation, and that the name of Metro Link + * Incorporated not be used in advertising or publicity pertaining to + * distribution of the software without specific, written prior + * permission. Metro Link Incorporated makes no representations + * about the suitability of this software for any purpose. It is + * provided "as is" without express or implied warranty. + * + * METRO LINK INCORPORATED DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS, IN NO EVENT SHALL METRO LINK INCORPORATED BE + * LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY + * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +void ppc_flush_icache() +{ +__asm__ __volatile__ (" \ + mflr 0 ;\ + stw 31,-4(1) ;\ + stw 0,8(1) ;\ + stwu 1,-64(1) ;\ + mr 31,1 ;\ + stw 3,88(31) ;\ + li 6, 0 ;\ + dcbf 3, 6 ;\ + li 5, 32 ;\ + dcbf 3, 5 ;\ + sync ;\ + li 4,0 ;\ + icbi 3,4 ;\ + li 7,32 ;\ + icbi 3,7 ;\ + sync ;\ + isync ;\ + lwz 1,0(1) ;\ + lwz 0,8(1) ;\ + mtlr 0 ;\ + lwz 31,-4(1) ;\ + blr ;\ +"); +} |