xref: /dragonfly/test/nvmm/demo/smallkern/trap.S (revision 20b815aa)
18368e25fSAaron LI/*	$NetBSD: trap.S,v 1.4 2018/09/08 00:00:00 maxv Exp $	*/
28368e25fSAaron LI
38368e25fSAaron LI/*
48368e25fSAaron LI * Copyright (c) 2018 The NetBSD Foundation, Inc. All rights reserved.
58368e25fSAaron LI *
68368e25fSAaron LI * This code is derived from software contributed to The NetBSD Foundation
78368e25fSAaron LI * by Maxime Villard.
88368e25fSAaron LI *
98368e25fSAaron LI * Redistribution and use in source and binary forms, with or without
108368e25fSAaron LI * modification, are permitted provided that the following conditions
118368e25fSAaron LI * are met:
128368e25fSAaron LI * 1. Redistributions of source code must retain the above copyright
138368e25fSAaron LI *    notice, this list of conditions and the following disclaimer.
148368e25fSAaron LI * 2. Redistributions in binary form must reproduce the above copyright
158368e25fSAaron LI *    notice, this list of conditions and the following disclaimer in the
168368e25fSAaron LI *    documentation and/or other materials provided with the distribution.
178368e25fSAaron LI *
188368e25fSAaron LI * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
198368e25fSAaron LI * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
208368e25fSAaron LI * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
218368e25fSAaron LI * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
228368e25fSAaron LI * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
238368e25fSAaron LI * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
248368e25fSAaron LI * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
258368e25fSAaron LI * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
268368e25fSAaron LI * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
278368e25fSAaron LI * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
288368e25fSAaron LI * POSSIBILITY OF SUCH DAMAGE.
298368e25fSAaron LI */
308368e25fSAaron LI
313bac6f2aSAaron LI#define _LOCORE
32*20b815aaSAaron LI#define LOCORE /* DragonFly */
338368e25fSAaron LI
343bac6f2aSAaron LI#include "asm.h"
353bac6f2aSAaron LI#include "trap.h"
368368e25fSAaron LI
378368e25fSAaron LI#define	TRAPENTRY(a) \
388368e25fSAaron LI	pushq $(a); \
398368e25fSAaron LI	jmp _C_LABEL(alltraps);
408368e25fSAaron LI
418368e25fSAaron LI#define	ZTRAPENTRY(a) \
428368e25fSAaron LI	pushq $0; \
438368e25fSAaron LI	pushq $(a); \
448368e25fSAaron LI	jmp _C_LABEL(alltraps);
458368e25fSAaron LI
468368e25fSAaron LI	.text
478368e25fSAaron LI
488368e25fSAaron LIIDTVEC(trap00)
498368e25fSAaron LI	ZTRAPENTRY(T_DIVIDE)
508368e25fSAaron LIIDTVEC_END(trap00)
518368e25fSAaron LI
528368e25fSAaron LIIDTVEC(trap01)
538368e25fSAaron LI	ZTRAPENTRY(T_TRCTRAP)
548368e25fSAaron LIIDTVEC_END(trap01)
558368e25fSAaron LI
568368e25fSAaron LIIDTVEC(trap02)
578368e25fSAaron LI	ZTRAPENTRY(T_NMI)
588368e25fSAaron LIIDTVEC_END(trap02)
598368e25fSAaron LI
608368e25fSAaron LIIDTVEC(trap03)
618368e25fSAaron LI	ZTRAPENTRY(T_BPTFLT)
628368e25fSAaron LIIDTVEC_END(trap03)
638368e25fSAaron LI
648368e25fSAaron LIIDTVEC(trap04)
658368e25fSAaron LI	ZTRAPENTRY(T_OFLOW)
668368e25fSAaron LIIDTVEC_END(trap04)
678368e25fSAaron LI
688368e25fSAaron LIIDTVEC(trap05)
698368e25fSAaron LI	ZTRAPENTRY(T_BOUND)
708368e25fSAaron LIIDTVEC_END(trap05)
718368e25fSAaron LI
728368e25fSAaron LIIDTVEC(trap06)
738368e25fSAaron LI	ZTRAPENTRY(T_PRIVINFLT)
748368e25fSAaron LIIDTVEC_END(trap06)
758368e25fSAaron LI
768368e25fSAaron LIIDTVEC(trap07)
778368e25fSAaron LI	ZTRAPENTRY(T_DNA)
788368e25fSAaron LIIDTVEC_END(trap07)
798368e25fSAaron LI
808368e25fSAaron LIIDTVEC(trap08)
818368e25fSAaron LI	TRAPENTRY(T_DOUBLEFLT)
828368e25fSAaron LIIDTVEC_END(trap08)
838368e25fSAaron LI
848368e25fSAaron LIIDTVEC(trap09)
858368e25fSAaron LI	ZTRAPENTRY(T_FPOPFLT)
868368e25fSAaron LIIDTVEC_END(trap09)
878368e25fSAaron LI
888368e25fSAaron LIIDTVEC(trap10)
898368e25fSAaron LI	TRAPENTRY(T_TSSFLT)
908368e25fSAaron LIIDTVEC_END(trap10)
918368e25fSAaron LI
928368e25fSAaron LIIDTVEC(trap11)
938368e25fSAaron LI	ZTRAPENTRY(T_SEGNPFLT)
948368e25fSAaron LIIDTVEC_END(trap11)
958368e25fSAaron LI
968368e25fSAaron LIIDTVEC(trap12)
978368e25fSAaron LI	ZTRAPENTRY(T_STKFLT)
988368e25fSAaron LIIDTVEC_END(trap12)
998368e25fSAaron LI
1008368e25fSAaron LIIDTVEC(trap13)
1018368e25fSAaron LI	ZTRAPENTRY(T_PROTFLT)
1028368e25fSAaron LIIDTVEC_END(trap13)
1038368e25fSAaron LI
1048368e25fSAaron LIIDTVEC(trap14)
1058368e25fSAaron LI	TRAPENTRY(T_PAGEFLT)
1068368e25fSAaron LIIDTVEC_END(trap14)
1078368e25fSAaron LI
1088368e25fSAaron LIIDTVEC(trap15)
1098368e25fSAaron LI	ZTRAPENTRY(T_ASTFLT)
1108368e25fSAaron LIIDTVEC_END(trap15)
1118368e25fSAaron LI
1128368e25fSAaron LIIDTVEC(trap16)
1138368e25fSAaron LI	ZTRAPENTRY(T_ARITHTRAP)
1148368e25fSAaron LIIDTVEC_END(trap16)
1158368e25fSAaron LI
1168368e25fSAaron LIIDTVEC(trap17)
1178368e25fSAaron LI	TRAPENTRY(T_ALIGNFLT)
1188368e25fSAaron LIIDTVEC_END(trap17)
1198368e25fSAaron LI
1208368e25fSAaron LIIDTVEC(trap18)
1218368e25fSAaron LI	ZTRAPENTRY(T_MCA)
1228368e25fSAaron LIIDTVEC_END(trap18)
1238368e25fSAaron LI
1248368e25fSAaron LIIDTVEC(trap19)
1258368e25fSAaron LI	ZTRAPENTRY(T_XMM)
1268368e25fSAaron LIIDTVEC_END(trap19)
1278368e25fSAaron LI
1288368e25fSAaron LIIDTVEC(trap20)
1298368e25fSAaron LIIDTVEC(trap21)
1308368e25fSAaron LIIDTVEC(trap22)
1318368e25fSAaron LIIDTVEC(trap23)
1328368e25fSAaron LIIDTVEC(trap24)
1338368e25fSAaron LIIDTVEC(trap25)
1348368e25fSAaron LIIDTVEC(trap26)
1358368e25fSAaron LIIDTVEC(trap27)
1368368e25fSAaron LIIDTVEC(trap28)
1378368e25fSAaron LIIDTVEC(trap29)
1388368e25fSAaron LIIDTVEC(trap30)
1398368e25fSAaron LIIDTVEC(trap31)
1408368e25fSAaron LI	/* 20 - 31 reserved for future exp */
1418368e25fSAaron LI	ZTRAPENTRY(T_RESERVED)
1428368e25fSAaron LIIDTVEC_END(trap31)
1438368e25fSAaron LIIDTVEC_END(trap30)
1448368e25fSAaron LIIDTVEC_END(trap29)
1458368e25fSAaron LIIDTVEC_END(trap28)
1468368e25fSAaron LIIDTVEC_END(trap27)
1478368e25fSAaron LIIDTVEC_END(trap26)
1488368e25fSAaron LIIDTVEC_END(trap25)
1498368e25fSAaron LIIDTVEC_END(trap24)
1508368e25fSAaron LIIDTVEC_END(trap23)
1518368e25fSAaron LIIDTVEC_END(trap22)
1528368e25fSAaron LIIDTVEC_END(trap21)
1538368e25fSAaron LIIDTVEC_END(trap20)
1548368e25fSAaron LI
1558368e25fSAaron LIIDTVEC(intr)
1568368e25fSAaron LI	ZTRAPENTRY(T_RESERVED)
1578368e25fSAaron LIIDTVEC_END(intr)
1588368e25fSAaron LI
1598368e25fSAaron LI/*
1608368e25fSAaron LI * Arguments pushed on the stack:
1618368e25fSAaron LI *  sf_trapno
1628368e25fSAaron LI *  sf_err  (dummy inserted if not defined)
1638368e25fSAaron LI *  sf_rip
1648368e25fSAaron LI *  sf_cs
1658368e25fSAaron LI *  sf_rflags
1668368e25fSAaron LI *  sf_rsp
1678368e25fSAaron LI *  sf_ss
1688368e25fSAaron LI */
1698368e25fSAaron LIENTRY(alltraps)
1708368e25fSAaron LI	movq	%rsp,%rdi
1718368e25fSAaron LI	call	_C_LABEL(trap)
1728368e25fSAaron LI	/* NOTREACHED */
1738368e25fSAaron LIEND(alltraps)
1748368e25fSAaron LI
1758368e25fSAaron LI	.section .rodata
1768368e25fSAaron LI
1778368e25fSAaron LILABEL(x86_exceptions)
1788368e25fSAaron LI	.quad	_C_LABEL(Xtrap00), _C_LABEL(Xtrap01)
1798368e25fSAaron LI	.quad	_C_LABEL(Xtrap02), _C_LABEL(Xtrap03)
1808368e25fSAaron LI	.quad	_C_LABEL(Xtrap04), _C_LABEL(Xtrap05)
1818368e25fSAaron LI	.quad	_C_LABEL(Xtrap06), _C_LABEL(Xtrap07)
1828368e25fSAaron LI	.quad	_C_LABEL(Xtrap08), _C_LABEL(Xtrap09)
1838368e25fSAaron LI	.quad	_C_LABEL(Xtrap10), _C_LABEL(Xtrap11)
1848368e25fSAaron LI	.quad	_C_LABEL(Xtrap12), _C_LABEL(Xtrap13)
1858368e25fSAaron LI	.quad	_C_LABEL(Xtrap14), _C_LABEL(Xtrap15)
1868368e25fSAaron LI	.quad	_C_LABEL(Xtrap16), _C_LABEL(Xtrap17)
1878368e25fSAaron LI	.quad	_C_LABEL(Xtrap18), _C_LABEL(Xtrap19)
1888368e25fSAaron LI	.quad	_C_LABEL(Xtrap20), _C_LABEL(Xtrap21)
1898368e25fSAaron LI	.quad	_C_LABEL(Xtrap22), _C_LABEL(Xtrap23)
1908368e25fSAaron LI	.quad	_C_LABEL(Xtrap24), _C_LABEL(Xtrap25)
1918368e25fSAaron LI	.quad	_C_LABEL(Xtrap26), _C_LABEL(Xtrap27)
1928368e25fSAaron LI	.quad	_C_LABEL(Xtrap28), _C_LABEL(Xtrap29)
1938368e25fSAaron LI	.quad	_C_LABEL(Xtrap30), _C_LABEL(Xtrap31)
1948368e25fSAaron LIEND(x86_exceptions)
195