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

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [debugger/] [src/] [cpu_fnc_plugin/] [srcproc/] [srcproc.h] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 sergeykhbr
/**
2
 * @file
3
 * @copyright  Copyright 2016 GNSS Sensor Ltd. All right reserved.
4
 * @author     Sergey Khabarov - sergeykhbr@gmail.com
5
 * @brief      Source code processor class declaration.
6
 */
7
 
8
#ifndef __DEBUGGER_SRCPROC_H__
9
#define __DEBUGGER_SRCPROC_H__
10
 
11
#include <iclass.h>
12
#include <iservice.h>
13
#include "coreservices/isrccode.h"
14
 
15
namespace debugger {
16
 
17
typedef int (*disasm_opcode_f)(ISourceCode *isrc, uint64_t pc, uint32_t code,
18
                              AttributeType *mnemonic, AttributeType *comment);
19
 
20
typedef int (*disasm_opcode16_f)(ISourceCode *isrc, uint64_t pc,
21
                                Reg16Type code, AttributeType *mnemonic,
22
                                AttributeType *comment);
23
 
24
class RiscvSourceService : public IService,
25
                           public ISourceCode {
26
public:
27
    explicit RiscvSourceService(const char *name);
28
    virtual ~RiscvSourceService();
29
 
30
    /** IService interface */
31
    virtual void postinitService();
32
 
33
    /** ISourceCode interface */
34
    virtual void addFileSymbol(const char *name, uint64_t addr, int sz);
35
 
36
    virtual void addFunctionSymbol(const char *name, uint64_t addr, int sz);
37
 
38
    virtual void addDataSymbol(const char *name, uint64_t addr, int sz);
39
 
40
    virtual void addSymbols(AttributeType *list);
41
 
42
    virtual void clearSymbols();
43
 
44
    virtual void getSymbols(AttributeType *list) {
45
        *list = symbolListSortByName_;
46
    }
47
 
48
    virtual void addressToSymbol(uint64_t addr, AttributeType *info);
49
 
50
    virtual int symbol2Address(const char *name, uint64_t *addr);
51
 
52
    virtual int disasm(uint64_t pc,
53
                       uint8_t *data,
54
                       int offset,
55
                       AttributeType *mnemonic,
56
                       AttributeType *comment);
57
    virtual void disasm(uint64_t pc,
58
                       AttributeType *idata,
59
                       AttributeType *asmlist);
60
 
61
    virtual void registerBreakpoint(uint64_t addr, uint64_t flags,
62
                                    uint64_t instr);
63
 
64
    virtual int unregisterBreakpoint(uint64_t addr, uint64_t *flags,
65
                                    uint64_t *instr);
66
 
67
    virtual void getBreakpointList(AttributeType *list);
68
 
69
    virtual bool isBreakpoint(uint64_t addr, AttributeType *outbr);
70
 
71
private:
72
    disasm_opcode_f tblOpcode1_[32];
73
    disasm_opcode16_f tblCompressed_[32];
74
    AttributeType brList_;
75
    AttributeType symbolListSortByName_;
76
    AttributeType symbolListSortByAddr_;
77
};
78
 
79
DECLARE_CLASS(RiscvSourceService)
80
 
81
}  // namespace debugger
82
 
83
#endif  // __DEBUGGER_SRCPROC_H__

powered by: WebSVN 2.1.0

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