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
 | 
						|
 |