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

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [debugger/] [src/] [common/] [coreservices/] [isrccode.h] - Rev 3

Go to most recent revision | 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 interface: disassembler.
 */
 
#ifndef __DEBUGGER_PLUGIN_ISRCCODE_H__
#define __DEBUGGER_PLUGIN_ISRCCODE_H__
 
#include "iface.h"
#include <inttypes.h>
#include "attribute.h"
 
namespace debugger {
 
static const char *const IFACE_SOURCE_CODE = "ISourceCode";
 
enum EBreakList {
    BrkList_address,
    BrkList_instr,
    BrkList_hwflag,
    BrkList_Total
};
 
enum EListTypes {
    AsmList_disasm,
    AsmList_symbol,
};
 
enum EColumnNames {
    ASM_list_type,
    ASM_addrline,
    ASM_code,
    ASM_codesize,
    ASM_breakpoint,
    ASM_label,
    ASM_mnemonic,
    ASM_comment,
    ASM_Total
};
 
static const uint64_t BreakFlag_HW = (1 << 0);
 
class ISourceCode : public IFace {
public:
    ISourceCode() : IFace(IFACE_SOURCE_CODE) {}
 
    /** Disasm input data buffer.
     *
     * @return disassembled instruction length
     */
    virtual int disasm(uint64_t pc,
                       uint8_t *data,
                       int offset,
                       AttributeType *mnemonic,
                       AttributeType *comment) =0;
    virtual void disasm(uint64_t pc,
                       AttributeType *idata,
                       AttributeType *asmlist) =0;
 
 
    /** Register breakpoint at specified address.
     *
     * @param[in] addr  Breakpoint location
     * @param[in] instr Current instruction value at specified address.
     *                  For HW breakpoint may have any value so that memory
     *                  won't be modified.
     * @param[in] hw    Breakpoint flags
     */
    virtual void registerBreakpoint(uint64_t addr, uint32_t instr,
                                    uint64_t flags) =0;
 
    /** Unregister breakpoint at specified address.
     *
     * @param[in]  addr  Breakpoint location
     * @param[out] instr Original instruction value.
     * @param[out] flags Breakpoint flags.
     * @return 0 if no errors
     */
    virtual int unregisterBreakpoint(uint64_t addr, uint32_t *instr,
                                     uint64_t *flags) =0;
 
    /** Get list of breakpoints.
     *
     * @param[out] lst Breakpoint list.
     */
    virtual void getBreakpointList(AttributeType *list) =0;
};
 
}  // namespace debugger
 
#endif  // __DEBUGGER_PLUGIN_ISRCCODE_H__
 

Go to most recent revision | 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.