1251767Sgibbs/******************************************************************************
2251767Sgibbs * debug_op.h
3251767Sgibbs *
4251767Sgibbs * Copyright (c) 2007 Tristan Gingold <tgingold@free.fr>
5251767Sgibbs *
6251767Sgibbs * Permission is hereby granted, free of charge, to any person obtaining a copy
7251767Sgibbs * of this software and associated documentation files (the "Software"), to
8251767Sgibbs * deal in the Software without restriction, including without limitation the
9251767Sgibbs * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10251767Sgibbs * sell copies of the Software, and to permit persons to whom the Software is
11251767Sgibbs * furnished to do so, subject to the following conditions:
12251767Sgibbs *
13251767Sgibbs * The above copyright notice and this permission notice shall be included in
14251767Sgibbs * all copies or substantial portions of the Software.
15251767Sgibbs *
16251767Sgibbs * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17251767Sgibbs * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18251767Sgibbs * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19251767Sgibbs * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20251767Sgibbs * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21251767Sgibbs * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22251767Sgibbs * DEALINGS IN THE SOFTWARE.
23251767Sgibbs */
24251767Sgibbs
25251767Sgibbs#ifndef __XEN_PUBLIC_IA64_DEBUG_OP_H__
26251767Sgibbs#define __XEN_PUBLIC_IA64_DEBUG_OP_H__
27251767Sgibbs
28251767Sgibbs/* Set/Get extra conditions to break.  */
29251767Sgibbs#define XEN_IA64_DEBUG_OP_SET_FLAGS 1
30251767Sgibbs#define XEN_IA64_DEBUG_OP_GET_FLAGS 2
31251767Sgibbs
32251767Sgibbs/* Break on kernel single step.  */
33251767Sgibbs#define XEN_IA64_DEBUG_ON_KERN_SSTEP   (1 << 0)
34251767Sgibbs
35251767Sgibbs/* Break on kernel debug (breakpoint or watch point).  */
36251767Sgibbs#define XEN_IA64_DEBUG_ON_KERN_DEBUG   (1 << 1)
37251767Sgibbs
38251767Sgibbs/* Break on kernel taken branch.  */
39251767Sgibbs#define XEN_IA64_DEBUG_ON_KERN_TBRANCH (1 << 2)
40251767Sgibbs
41251767Sgibbs/* Break on interrupt injection.  */
42251767Sgibbs#define XEN_IA64_DEBUG_ON_EXTINT       (1 << 3)
43251767Sgibbs
44251767Sgibbs/* Break on interrupt injection.  */
45251767Sgibbs#define XEN_IA64_DEBUG_ON_EXCEPT       (1 << 4)
46251767Sgibbs
47251767Sgibbs/* Break on event injection.  */
48251767Sgibbs#define XEN_IA64_DEBUG_ON_EVENT        (1 << 5)
49251767Sgibbs
50251767Sgibbs/* Break on privop/virtualized instruction (slow path only).  */
51251767Sgibbs#define XEN_IA64_DEBUG_ON_PRIVOP       (1 << 6)
52251767Sgibbs
53251767Sgibbs/* Break on emulated PAL call (at entry).  */
54251767Sgibbs#define XEN_IA64_DEBUG_ON_PAL          (1 << 7)
55251767Sgibbs
56251767Sgibbs/* Break on emulated SAL call (at entry).  */
57251767Sgibbs#define XEN_IA64_DEBUG_ON_SAL          (1 << 8)
58251767Sgibbs
59251767Sgibbs/* Break on emulated EFI call (at entry).  */
60251767Sgibbs#define XEN_IA64_DEBUG_ON_EFI          (1 << 9)
61251767Sgibbs
62251767Sgibbs/* Break on rfi emulation (slow path only, before exec).  */
63251767Sgibbs#define XEN_IA64_DEBUG_ON_RFI          (1 << 10)
64251767Sgibbs
65251767Sgibbs/* Break on address translation switch.  */
66251767Sgibbs#define XEN_IA64_DEBUG_ON_MMU          (1 << 11)
67251767Sgibbs
68251767Sgibbs/* Break on bad guest physical address.  */
69251767Sgibbs#define XEN_IA64_DEBUG_ON_BAD_MPA      (1 << 12)
70251767Sgibbs
71251767Sgibbs/* Force psr.ss bit.  */
72251767Sgibbs#define XEN_IA64_DEBUG_FORCE_SS        (1 << 13)
73251767Sgibbs
74251767Sgibbs/* Force psr.db bit.  */
75251767Sgibbs#define XEN_IA64_DEBUG_FORCE_DB        (1 << 14)
76251767Sgibbs
77251767Sgibbs/* Break on ITR/PTR.  */
78251767Sgibbs#define XEN_IA64_DEBUG_ON_TR           (1 << 15)
79251767Sgibbs
80251767Sgibbs/* Break on ITC/PTC.L/PTC.G/PTC.GA.  */
81251767Sgibbs#define XEN_IA64_DEBUG_ON_TC           (1 << 16)
82251767Sgibbs
83251767Sgibbs/* Get translation cache.  */
84251767Sgibbs#define XEN_IA64_DEBUG_OP_GET_TC   3
85251767Sgibbs
86251767Sgibbs/* Translate virtual address to guest physical address.  */
87251767Sgibbs#define XEN_IA64_DEBUG_OP_TRANSLATE 4
88251767Sgibbs
89251767Sgibbsunion xen_ia64_debug_op {
90251767Sgibbs    uint64_t flags;
91251767Sgibbs    struct xen_ia64_debug_vtlb {
92251767Sgibbs        uint64_t nbr;                             /* IN/OUT */
93251767Sgibbs        XEN_GUEST_HANDLE_64(ia64_tr_entry_t) tr;  /* IN/OUT */
94251767Sgibbs    } vtlb;
95251767Sgibbs};
96251767Sgibbstypedef union xen_ia64_debug_op xen_ia64_debug_op_t;
97251767SgibbsDEFINE_XEN_GUEST_HANDLE(xen_ia64_debug_op_t);
98251767Sgibbs
99251767Sgibbs#endif /* __XEN_PUBLIC_IA64_DEBUG_OP_H__ */
100