118 lines
1.4 KiB
ArmAsm
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
|
|
|