* Copyright (c) Huawei Technologies Co., Ltd. 2024-2025. All rights reserved.
*/
#ifdef MS_DEBUGGER
#ifndef liblldb_ASCEND310P_DEVICE_CONTEXT_H_
#define liblldb_ASCEND310P_DEVICE_CONTEXT_H_
#include "DeviceContext.h"
namespace lldb_private {
class Ascend310PDeviceContext : public DeviceContext {
public:
Ascend310PDeviceContext(const ::pid_t pid, const uint32_t device_id);
~Ascend310PDeviceContext() = default;
SocType GetSocType() override { return m_soc_type; }
Status CheckRegisterAddr(CoreType core_type, uint64_t addr) const override;
MemType GetStackMemType() const override;
Status Resume(const InterruptPosInfo &pos_info) const override;
Status InvalidInstrCache(const lldb::addr_t &addr, const InterruptPosInfo &pos_info,
uint8_t redirect_ifu = 0) const override;
size_t ReadLocalMemory(lldb::addr_t addr, size_t size, const MemoryTypeInfo &memory_type_info,
const InterruptPosInfo &pos_info, void *data) override;
private:
size_t ReadL0CMemory(lldb::addr_t addr, size_t size, const MemoryTypeInfo &memory_type_info,
const InterruptPosInfo &pos_info, void *data);
size_t ReadL0ABMemory(lldb::addr_t addr, size_t size, const MemoryTypeInfo &memory_type_info,
const InterruptPosInfo &pos_info, void *data);
private:
SocType m_soc_type;
};
}
#endif
#endif