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

Subversion Repositories riscv_vhdl

[/] [riscv_vhdl/] [trunk/] [debugger/] [src/] [cpu_arm_plugin/] [srcproc/] [srcproc.h] - Rev 5

Compare with Previous | Blame | View Log

/*
 *  Copyright 2018 Sergey Khabarov, sergeykhbr@gmail.com
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
 
#ifndef __DEBUGGER_SRCPROC_H__
#define __DEBUGGER_SRCPROC_H__
 
#include <iclass.h>
#include <iservice.h>
#include "coreservices/isrccode.h"
 
namespace debugger {
 
class ArmSourceService : public IService,
                         public ISourceCode {
 public:
    explicit ArmSourceService(const char *name);
    virtual ~ArmSourceService();
 
    /** 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:
    int parseUndefinedInstruction(uint64_t pc, uint32_t instr,
                            AttributeType *mnemonic,
                            AttributeType *comment);
    int parseSingleDataTransfer(uint64_t pc, uint32_t instr,
                            AttributeType *mnemonic,
                            AttributeType *comment);
    int parseBlockDataTransfer(uint64_t pc, uint32_t instr,
                            AttributeType *mnemonic,
                            AttributeType *comment);
    int parseDataProcessing(uint64_t pc, uint32_t instr,
                            AttributeType *mnemonic,
                            AttributeType *comment);
    int parseMultiply(uint64_t pc, uint32_t instr,
                            AttributeType *mnemonic,
                            AttributeType *comment);
    int parseBytesExtending(uint64_t pc, uint32_t instr,
                            AttributeType *mnemonic,
                            AttributeType *comment);
    int parseCoprocRegTransfer(uint64_t pc, uint32_t instr,
                            AttributeType *mnemonic,
                            AttributeType *comment);
    int parseBranch(uint64_t pc, uint32_t instr,
                    AttributeType *mnemonic,
                    AttributeType *comment);
    int parseBranchExchange(uint64_t pc, uint32_t instr,
                    AttributeType *mnemonic,
                    AttributeType *comment);
 
 private:
    AttributeType endianess_;
    AttributeType brList_;
    AttributeType symbolListSortByName_;
    AttributeType symbolListSortByAddr_;
};
 
DECLARE_CLASS(ArmSourceService)
 
}  // 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.