diff --git a/libraries/libmesosphere/include/mesosphere/board/generic/kern_k_device_page_table.hpp b/libraries/libmesosphere/include/mesosphere/board/generic/kern_k_device_page_table.hpp new file mode 100644 index 000000000..e87148680 --- /dev/null +++ b/libraries/libmesosphere/include/mesosphere/board/generic/kern_k_device_page_table.hpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2018-2020 Atmosphère-NX + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include +#include +#include +#include + +namespace ams::kern::board::generic { + + using KDeviceVirtualAddress = u64; + + class KDevicePageTable { + public: + constexpr KDevicePageTable() { /* ... */ } + + Result ALWAYS_INLINE Initialize(u64 space_address, u64 space_size) { return ams::kern::svc::ResultNotImplemented(); } + void ALWAYS_INLINE Finalize() { /* ... */ } + + Result ALWAYS_INLINE Attach(ams::svc::DeviceName device_name, u64 space_address, u64 space_size) { return ams::kern::svc::ResultNotImplemented(); } + Result ALWAYS_INLINE Detach(ams::svc::DeviceName device_name) { return ams::kern::svc::ResultNotImplemented(); } + + Result ALWAYS_INLINE Map(size_t *out_mapped_size, const KPageGroup &pg, KDeviceVirtualAddress device_address, ams::svc::MemoryPermission device_perm, bool refresh_mappings) { return ams::kern::svc::ResultNotImplemented(); } + Result ALWAYS_INLINE Unmap(const KPageGroup &pg, KDeviceVirtualAddress device_address) { return ams::kern::svc::ResultNotImplemented(); } + public: + static ALWAYS_INLINE void Initialize() { /* ... */ } + + static ALWAYS_INLINE void Lock() { /* ... */ } + static ALWAYS_INLINE void Unlock() { /* ... */ } + static ALWAYS_INLINE void Sleep() { /* ... */ } + static ALWAYS_INLINE void Wakeup() { /* ... */ } + }; + +} \ No newline at end of file diff --git a/libraries/libmesosphere/include/mesosphere/kern_select_device_page_table.hpp b/libraries/libmesosphere/include/mesosphere/kern_select_device_page_table.hpp index 51e4db302..6557c991e 100644 --- a/libraries/libmesosphere/include/mesosphere/kern_select_device_page_table.hpp +++ b/libraries/libmesosphere/include/mesosphere/kern_select_device_page_table.hpp @@ -24,5 +24,10 @@ } #else - #error "Unknown board for KDevicePageTable" + #include + + namespace ams::kern { + using ams::kern::board::generic::KDevicePageTable; + } + #endif diff --git a/libraries/libvapours/include/vapours/svc/board/generic/svc_device_name.hpp b/libraries/libvapours/include/vapours/svc/board/generic/svc_device_name.hpp new file mode 100644 index 000000000..4de1ba2bd --- /dev/null +++ b/libraries/libvapours/include/vapours/svc/board/generic/svc_device_name.hpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2018-2020 Atmosphère-NX + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once +#include + +namespace ams::svc::board::generic { + + enum DeviceName { + /* If there is no smmu, there are no device names. */ + DeviceName_Count = 0, + }; + +} diff --git a/libraries/libvapours/include/vapours/svc/svc_select_device_name.hpp b/libraries/libvapours/include/vapours/svc/svc_select_device_name.hpp index 5435c6b93..5db94155c 100644 --- a/libraries/libvapours/include/vapours/svc/svc_select_device_name.hpp +++ b/libraries/libvapours/include/vapours/svc/svc_select_device_name.hpp @@ -26,6 +26,9 @@ #else - #error "Unknown board for svc::DeviceName" + #include + namespace ams::svc { + using namespace ams::svc::board::generic; + } #endif