npc: split gdbstub api into seperate file

This commit is contained in:
xinyangli 2024-08-01 18:53:17 +08:00
parent fed4ac225d
commit 85d7840804
Signed by: xin
SSH key fingerprint: SHA256:qZ/tzd8lYRtUFSrfBDBMcUqV4GHKxqeqRA3huItgvbk
15 changed files with 287 additions and 270 deletions

View file

@ -1,3 +1,4 @@
add_library(devices serial.cpp rtc.cpp)
target_include_directories(devices PUBLIC include)
target_link_libraries(devices PRIVATE spdlog::spdlog)

View file

@ -1,14 +1,12 @@
#include <array>
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <initializer_list>
#include <iostream>
#include <iterator>
#include <map>
#include <memory>
#include <unordered_map>
#include <spdlog/logger.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <utility>
namespace Devices {
@ -55,6 +53,7 @@ public:
class DeviceMap {
std::map<uint64_t, Device *> addr_to_device;
std::shared_ptr<spdlog::logger> logger = spdlog::stdout_color_mt("devicemap");
public:
DeviceMap(std::initializer_list<Device *> devices) {
@ -66,8 +65,8 @@ public:
auto it = addr_to_device.upper_bound(addr);
if (it == addr_to_device.begin() ||
(--it)->second->addr + it->second->len <= addr) {
std::cerr << "Use of a unintialized device at memory addr: 0x" << std::hex
<< addr << std::dec << std::endl;
logger->error("Accessed an unintialized device at memory addr: 0x{:x}",
addr);
return false;
}
auto &device = it->second;