OpenCores
URL https://opencores.org/ocsvn/riscv_vhdl/riscv_vhdl/trunk

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [debugger/] [src/] [common/] [coreservices/] [isrccode.h] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 sergeykhbr
/**
2
 * @file
3
 * @copyright  Copyright 2016 GNSS Sensor Ltd. All right reserved.
4
 * @author     Sergey Khabarov - sergeykhbr@gmail.com
5
 * @brief      Source code interface: disassembler.
6
 */
7
 
8
#ifndef __DEBUGGER_PLUGIN_ISRCCODE_H__
9
#define __DEBUGGER_PLUGIN_ISRCCODE_H__
10
 
11
#include <inttypes.h>
12 4 sergeykhbr
#include <iface.h>
13
#include <attribute.h>
14 3 sergeykhbr
 
15
namespace debugger {
16
 
17
static const char *const IFACE_SOURCE_CODE = "ISourceCode";
18
 
19 4 sergeykhbr
enum ESymbolType {
20
    SYMBOL_TYPE_FILE     = 0x01,
21
    SYMBOL_TYPE_FUNCTION = 0x02,
22
    SYMBOL_TYPE_DATA     = 0x04
23
};
24
 
25
enum ESymbolInfoListItem {
26
    Symbol_Name,
27
    Symbol_Addr,
28
    Symbol_Size,
29
    Symbol_Type,
30
    Symbol_Total
31
};
32
 
33
 
34 3 sergeykhbr
enum EBreakList {
35
    BrkList_address,
36 4 sergeykhbr
    BrkList_flags,
37 3 sergeykhbr
    BrkList_instr,
38
    BrkList_Total
39
};
40
 
41
enum EListTypes {
42
    AsmList_disasm,
43
    AsmList_symbol,
44
};
45
 
46
enum EColumnNames {
47
    ASM_list_type,
48
    ASM_addrline,
49
    ASM_code,
50
    ASM_codesize,
51
    ASM_breakpoint,
52
    ASM_label,
53
    ASM_mnemonic,
54
    ASM_comment,
55
    ASM_Total
56
};
57
 
58
static const uint64_t BreakFlag_HW = (1 << 0);
59
 
60
class ISourceCode : public IFace {
61 4 sergeykhbr
 public:
62 3 sergeykhbr
    ISourceCode() : IFace(IFACE_SOURCE_CODE) {}
63
 
64 4 sergeykhbr
    /** Control Debug Symbols */
65
    virtual void addFileSymbol(const char *name, uint64_t addr, int sz) = 0;
66
 
67
    virtual void addFunctionSymbol(const char *name, uint64_t addr,
68
                                   int sz) = 0;
69
 
70
    virtual void addDataSymbol(const char *name, uint64_t addr, int sz) = 0;
71
 
72
    virtual void clearSymbols() = 0;
73
    virtual void addSymbols(AttributeType *list) = 0;
74
 
75
    virtual void getSymbols(AttributeType *list) = 0;
76
 
77
    virtual void addressToSymbol(uint64_t addr, AttributeType *info) = 0;
78
 
79
    virtual int symbol2Address(const char *name, uint64_t *addr) = 0;
80
 
81 3 sergeykhbr
    /** Disasm input data buffer.
82
     *
83
     * @return disassembled instruction length
84
     */
85
    virtual int disasm(uint64_t pc,
86
                       uint8_t *data,
87
                       int offset,
88
                       AttributeType *mnemonic,
89 4 sergeykhbr
                       AttributeType *comment) = 0;
90 3 sergeykhbr
    virtual void disasm(uint64_t pc,
91
                       AttributeType *idata,
92 4 sergeykhbr
                       AttributeType *asmlist) = 0;
93 3 sergeykhbr
 
94
 
95
    /** Register breakpoint at specified address.
96
     *
97
     * @param[in] addr  Breakpoint location
98
     * @param[in] instr Current instruction value at specified address.
99
     *                  For HW breakpoint may have any value so that memory
100
     *                  won't be modified.
101
     * @param[in] hw    Breakpoint flags
102 4 sergeykhbr
     * @param[in] instr Original opcode before EBREAK instruction injection.
103 3 sergeykhbr
     */
104 4 sergeykhbr
    virtual void registerBreakpoint(uint64_t addr, uint64_t flags,
105
                                    uint64_t instr) = 0;
106 3 sergeykhbr
 
107
    /** Unregister breakpoint at specified address.
108
     *
109
     * @param[in]  addr  Breakpoint location
110
     * @param[out] flags Breakpoint flags.
111 4 sergeykhbr
     * @param[out] instr Original opcode rewriten by EBREAK instruction.
112 3 sergeykhbr
     * @return 0 if no errors
113
     */
114 4 sergeykhbr
    virtual int unregisterBreakpoint(uint64_t addr, uint64_t *flags,
115
                                    uint64_t *instr) = 0;
116 3 sergeykhbr
 
117
    /** Get list of breakpoints.
118
     *
119
     * @param[out] lst Breakpoint list.
120
     */
121 4 sergeykhbr
    virtual void getBreakpointList(AttributeType *list) = 0;
122
 
123
    /** Check specified address on breakpoint */
124
    virtual bool isBreakpoint(uint64_t addr, AttributeType *outbr) = 0;
125 3 sergeykhbr
};
126
 
127
}  // namespace debugger
128
 
129
#endif  // __DEBUGGER_PLUGIN_ISRCCODE_H__

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.