xref: /dflybsd-src/test/testcases/libnvmm/h_io_assist_asm.S (revision e84206a6156728f25f14aa8391a556add61c2aa0)
18f70d46cSAaron LI/*
2*e84206a6SAaron LI * Copyright (c) 2019-2021 Maxime Villard, m00nbsd.net
38f70d46cSAaron LI * All rights reserved.
48f70d46cSAaron LI *
58f70d46cSAaron LI * This code is part of the NVMM hypervisor.
68f70d46cSAaron LI *
78f70d46cSAaron LI * Redistribution and use in source and binary forms, with or without
88f70d46cSAaron LI * modification, are permitted provided that the following conditions
98f70d46cSAaron LI * are met:
108f70d46cSAaron LI * 1. Redistributions of source code must retain the above copyright
118f70d46cSAaron LI *    notice, this list of conditions and the following disclaimer.
128f70d46cSAaron LI * 2. Redistributions in binary form must reproduce the above copyright
138f70d46cSAaron LI *    notice, this list of conditions and the following disclaimer in the
148f70d46cSAaron LI *    documentation and/or other materials provided with the distribution.
158f70d46cSAaron LI *
168f70d46cSAaron LI * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
178f70d46cSAaron LI * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
188f70d46cSAaron LI * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
198f70d46cSAaron LI * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
208f70d46cSAaron LI * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
218f70d46cSAaron LI * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
228f70d46cSAaron LI * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
238f70d46cSAaron LI * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
248f70d46cSAaron LI * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
258f70d46cSAaron LI * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
268f70d46cSAaron LI * SUCH DAMAGE.
278f70d46cSAaron LI */
288f70d46cSAaron LI
298f70d46cSAaron LI	.globl	test1_begin, test1_end
308f70d46cSAaron LI	.globl	test2_begin, test2_end
318f70d46cSAaron LI	.globl	test3_begin, test3_end
328f70d46cSAaron LI	.globl	test4_begin, test4_end
338f70d46cSAaron LI	.globl	test5_begin, test5_end
348f70d46cSAaron LI	.globl	test6_begin, test6_end
358f70d46cSAaron LI	.globl	test7_begin, test7_end
368f70d46cSAaron LI	.globl	test8_begin, test8_end
378f70d46cSAaron LI	.globl	test9_begin, test9_end
388f70d46cSAaron LI	.globl	test10_begin, test10_end
398f70d46cSAaron LI	.globl	test11_begin, test11_end
408f70d46cSAaron LI	.globl	test12_begin, test12_end
418f70d46cSAaron LI	.text
428f70d46cSAaron LI	.code64
438f70d46cSAaron LI
448f70d46cSAaron LI#define TEST_END	\
458f70d46cSAaron LI	movq	$0xFFFFFFFFFFFFFFFF,%rcx;	\
468f70d46cSAaron LI	rdmsr	;
478f70d46cSAaron LI
488f70d46cSAaron LI/*
498f70d46cSAaron LI * IN
508f70d46cSAaron LI */
518f70d46cSAaron LI
528f70d46cSAaron LI	.align	64
538f70d46cSAaron LItest1_begin:
548f70d46cSAaron LI	movq	$0x1000,%rbx
558f70d46cSAaron LI
568f70d46cSAaron LI	inb	$123
578f70d46cSAaron LI	movb	%al,(%rbx)
588f70d46cSAaron LI	incq	%rbx
598f70d46cSAaron LI
608f70d46cSAaron LI	movq	$123,%rdx
618f70d46cSAaron LI	inb	%dx
628f70d46cSAaron LI	movb	%al,(%rbx)
638f70d46cSAaron LI
648f70d46cSAaron LI	TEST_END
658f70d46cSAaron LItest1_end:
668f70d46cSAaron LI
678f70d46cSAaron LI	.align	64
688f70d46cSAaron LItest2_begin:
698f70d46cSAaron LI	movq	$0x1000,%rbx
708f70d46cSAaron LI
718f70d46cSAaron LI	inw	$123
728f70d46cSAaron LI	movw	%ax,(%rbx)
738f70d46cSAaron LI	addq	$2,%rbx
748f70d46cSAaron LI
758f70d46cSAaron LI	movq	$123,%rdx
768f70d46cSAaron LI	inw	%dx
778f70d46cSAaron LI	movw	%ax,(%rbx)
788f70d46cSAaron LI
798f70d46cSAaron LI	TEST_END
808f70d46cSAaron LItest2_end:
818f70d46cSAaron LI
828f70d46cSAaron LI	.align	64
838f70d46cSAaron LItest3_begin:
848f70d46cSAaron LI	movq	$0x1000,%rbx
858f70d46cSAaron LI
868f70d46cSAaron LI	inl	$123
878f70d46cSAaron LI	movl	%eax,(%rbx)
888f70d46cSAaron LI	addq	$4,%rbx
898f70d46cSAaron LI
908f70d46cSAaron LI	movq	$123,%rdx
918f70d46cSAaron LI	inl	%dx
928f70d46cSAaron LI	movl	%eax,(%rbx)
938f70d46cSAaron LI
948f70d46cSAaron LI	TEST_END
958f70d46cSAaron LItest3_end:
968f70d46cSAaron LI
978f70d46cSAaron LI	.align	64
988f70d46cSAaron LItest4_begin:
998f70d46cSAaron LI	movq	$0x1000,%rdi
1008f70d46cSAaron LI	movq	$5,%rcx
1018f70d46cSAaron LI
1028f70d46cSAaron LI	movq	$123,%rdx
1038f70d46cSAaron LI	rep
1048f70d46cSAaron LI	insb
1058f70d46cSAaron LI
1068f70d46cSAaron LI	TEST_END
1078f70d46cSAaron LItest4_end:
1088f70d46cSAaron LI
1098f70d46cSAaron LI	.align	64
1108f70d46cSAaron LItest5_begin:
1118f70d46cSAaron LI	movq	$0x1000,%rdi
1128f70d46cSAaron LI	movq	$14,%rcx
1138f70d46cSAaron LI
1148f70d46cSAaron LI	movq	$123,%rdx
1158f70d46cSAaron LI	rep
1168f70d46cSAaron LI	insw
1178f70d46cSAaron LI
1188f70d46cSAaron LI	TEST_END
1198f70d46cSAaron LItest5_end:
1208f70d46cSAaron LI
1218f70d46cSAaron LI	.align	64
1228f70d46cSAaron LItest6_begin:
1238f70d46cSAaron LI	movq	$0x1000,%rdi
1248f70d46cSAaron LI	movq	$7,%rcx
1258f70d46cSAaron LI
1268f70d46cSAaron LI	movq	$123,%rdx
1278f70d46cSAaron LI	rep
1288f70d46cSAaron LI	insl
1298f70d46cSAaron LI
1308f70d46cSAaron LI	TEST_END
1318f70d46cSAaron LItest6_end:
1328f70d46cSAaron LI
1338f70d46cSAaron LI/*
1348f70d46cSAaron LI * OUT
1358f70d46cSAaron LI */
1368f70d46cSAaron LI
1378f70d46cSAaron LI	.align	64
1388f70d46cSAaron LItest7_begin:
1398f70d46cSAaron LI	movq	$0x1000,%rbx
1408f70d46cSAaron LI
1418f70d46cSAaron LI	movb	(%rbx),%al
1428f70d46cSAaron LI	outb	$123
1438f70d46cSAaron LI	incq	%rbx
1448f70d46cSAaron LI
1458f70d46cSAaron LI	movb	(%rbx),%al
1468f70d46cSAaron LI	movq	$123,%rdx
1478f70d46cSAaron LI	outb	%dx
1488f70d46cSAaron LI
1498f70d46cSAaron LI	TEST_END
1508f70d46cSAaron LItest7_end:
1518f70d46cSAaron LI
1528f70d46cSAaron LI	.align	64
1538f70d46cSAaron LItest8_begin:
1548f70d46cSAaron LI	movq	$0x1000,%rbx
1558f70d46cSAaron LI
1568f70d46cSAaron LI	movw	(%rbx),%ax
1578f70d46cSAaron LI	outw	$123
1588f70d46cSAaron LI	addq	$2,%rbx
1598f70d46cSAaron LI
1608f70d46cSAaron LI	movw	(%rbx),%ax
1618f70d46cSAaron LI	movq	$123,%rdx
1628f70d46cSAaron LI	outw	%dx
1638f70d46cSAaron LI
1648f70d46cSAaron LI	TEST_END
1658f70d46cSAaron LItest8_end:
1668f70d46cSAaron LI
1678f70d46cSAaron LI	.align	64
1688f70d46cSAaron LItest9_begin:
1698f70d46cSAaron LI	movq	$0x1000,%rbx
1708f70d46cSAaron LI
1718f70d46cSAaron LI	movl	(%rbx),%eax
1728f70d46cSAaron LI	outl	$123
1738f70d46cSAaron LI	addq	$4,%rbx
1748f70d46cSAaron LI
1758f70d46cSAaron LI	movl	(%rbx),%eax
1768f70d46cSAaron LI	movq	$123,%rdx
1778f70d46cSAaron LI	outl	%dx
1788f70d46cSAaron LI
1798f70d46cSAaron LI	TEST_END
1808f70d46cSAaron LItest9_end:
1818f70d46cSAaron LI
1828f70d46cSAaron LI	.align	64
1838f70d46cSAaron LItest10_begin:
1848f70d46cSAaron LI	movq	$0x1000,%rsi
1858f70d46cSAaron LI	movq	$5,%rcx
1868f70d46cSAaron LI
1878f70d46cSAaron LI	movq	$123,%rdx
1888f70d46cSAaron LI	rep
1898f70d46cSAaron LI	outsb
1908f70d46cSAaron LI
1918f70d46cSAaron LI	TEST_END
1928f70d46cSAaron LItest10_end:
1938f70d46cSAaron LI
1948f70d46cSAaron LI	.align	64
1958f70d46cSAaron LItest11_begin:
1968f70d46cSAaron LI	movq	$0x1000,%rsi
1978f70d46cSAaron LI	movq	$8,%rcx
1988f70d46cSAaron LI
1998f70d46cSAaron LI	movq	$123,%rdx
2008f70d46cSAaron LI	rep
2018f70d46cSAaron LI	outsw
2028f70d46cSAaron LI
2038f70d46cSAaron LI	TEST_END
2048f70d46cSAaron LItest11_end:
2058f70d46cSAaron LI
2068f70d46cSAaron LI	.align	64
2078f70d46cSAaron LItest12_begin:
2088f70d46cSAaron LI	movq	$0x1000,%rsi
2098f70d46cSAaron LI	movq	$7,%rcx
2108f70d46cSAaron LI
2118f70d46cSAaron LI	movq	$123,%rdx
2128f70d46cSAaron LI	rep
2138f70d46cSAaron LI	outsl
2148f70d46cSAaron LI
2158f70d46cSAaron LI	TEST_END
2168f70d46cSAaron LItest12_end:
217