xserver-multidpi/hw/xfree86/os-support/misc/PortIO.S

118 lines
1.4 KiB
ArmAsm

/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/misc/PortIO.S,v 1.2 2004/03/05 04:02:14 dawes Exp $ */
/* Port I/O functions for platforms with no inlining. */
#if defined(i386)
#include "assyntax.h"
FILE("PortIO.s")
AS_BEGIN
GLOBL GLNAME(outb)
GLOBL GLNAME(outw)
GLOBL GLNAME(outl)
GLOBL GLNAME(inb)
GLOBL GLNAME(inw)
GLOBL GLNAME(inl)
SEG_TEXT
ALIGNTEXT4
GLNAME(outb):
MOV_L (REGOFF(4,ESP), EDX)
MOV_L (REGOFF(8,ESP), EAX)
OUT_B
RET
ALIGNTEXT4
GLNAME(outw):
MOV_L (REGOFF(4,ESP), EDX)
MOV_L (REGOFF(8,ESP), EAX)
OUT_W
RET
ALIGNTEXT4
GLNAME(outl):
MOV_L (REGOFF(4,ESP), EDX)
MOV_L (REGOFF(8,ESP), EAX)
OUT_L
RET
ALIGNTEXT4
GLNAME(inb):
MOV_L (REGOFF(4,ESP), EDX)
IN_B
RET
ALIGNTEXT4
GLNAME(inw):
MOV_L (REGOFF(4,ESP), EDX)
IN_L
RET
ALIGNTEXT4
GLNAME(inl):
MOV_L (REGOFF(4,ESP), EDX)
IN_L
RET
#elif defined(sparc)
#ifndef ASI_PL
#define ASI_PL 136
#endif
.file "PortIO.s"
.global outb
.global outw
.global outl
.global inb
.global inw
.global inl
.section ".text"
.align 4
outb:
stba %o1, [%o0] ASI_PL
membar 10
retl
nop
.align 4
outw:
stha %o1, [%o0] ASI_PL
membar 10
retl
nop
.align 4
outl:
sta %o1, [%o0] ASI_PL
membar 10
retl
nop
.align 4
inb:
lduba [%o0] ASI_PL, %o0
retl
nop
.align 4
inw:
lduha [%o0] ASI_PL, %o0
retl
nop
.align 4
inl:
lda [%o0] ASI_PL, %o0
retl
nop
#endif