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] - Rev 5

Compare with Previous | Blame | View Log

/**
 * @file
 * @copyright  Copyright 2016 GNSS Sensor Ltd. All right reserved.
 * @author     Sergey Khabarov - sergeykhbr@gmail.com
 * @brief      Source code processor class declaration.
 */
 
#ifndef __DEBUGGER_SRCPROC_H__
#define __DEBUGGER_SRCPROC_H__
 
#include <iclass.h>
#include <iservice.h>
#include "coreservices/isrccode.h"
 
namespace debugger {
 
typedef int (*disasm_opcode_f)(ISourceCode *isrc, uint64_t pc, uint32_t code,
                              AttributeType *mnemonic, AttributeType *comment);
 
typedef int (*disasm_opcode16_f)(ISourceCode *isrc, uint64_t pc,
                                Reg16Type code, AttributeType *mnemonic,
                                AttributeType *comment);
 
class RiscvSourceService : public IService,
                           public ISourceCode {
public:
    explicit RiscvSourceService(const char *name);
    virtual ~RiscvSourceService();
 
    /** IService interface */
    virtual void postinitService();
 
    /** ISourceCode interface */
    virtual void addFileSymbol(const char *name, uint64_t addr, int sz);
 
    virtual void addFunctionSymbol(const char *name, uint64_t addr, int sz);
 
    virtual void addDataSymbol(const char *name, uint64_t addr, int sz);
 
    virtual void addSymbols(AttributeType *list);
 
    virtual void clearSymbols();
 
    virtual void getSymbols(AttributeType *list) {
        *list = symbolListSortByName_;
    }
 
    virtual void addressToSymbol(uint64_t addr, AttributeType *info);
 
    virtual int symbol2Address(const char *name, uint64_t *addr);
 
    virtual int disasm(uint64_t pc,
                       uint8_t *data,
                       int offset,
                       AttributeType *mnemonic,
                       AttributeType *comment);
    virtual void disasm(uint64_t pc,
                       AttributeType *idata,
                       AttributeType *asmlist);
 
    virtual void registerBreakpoint(uint64_t addr, uint64_t flags,
                                    uint64_t instr);
 
    virtual int unregisterBreakpoint(uint64_t addr, uint64_t *flags,
                                    uint64_t *instr);
 
    virtual void getBreakpointList(AttributeType *list);
 
    virtual bool isBreakpoint(uint64_t addr, AttributeType *outbr);
 
private:
    disasm_opcode_f tblOpcode1_[32];
    disasm_opcode16_f tblCompressed_[32];
    AttributeType brList_;
    AttributeType symbolListSortByName_;
    AttributeType symbolListSortByAddr_;
};
 
DECLARE_CLASS(RiscvSourceService)
 
}  // namespace debugger
 
#endif  // __DEBUGGER_SRCPROC_H__
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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