constexpr explicit phys_ptr(std::uintptr_t phys_addr): phys_addr(phys_addr) {}
constexpr phys_ptr(std::nullptr_t): phys_addr(0) {}
- constexpr T& operator[](std::size_t i) const {
+ T& operator[](std::size_t i) const {
return get_virt_addr()[i];
}
- constexpr T& operator*() const {
+ T& operator*() const {
return *get_virt_addr();
}
- constexpr T* operator->() const {
+ T* operator->() const {
return get_virt_addr();
}
}
private:
- constexpr T* get_virt_addr() const {
+ T* get_virt_addr() const {
return reinterpret_cast<T*>(phys_addr + 0xFFFF800000000000);
}