diff --git a/nemu/include/rlib/3rdparty/prettyprint.hpp b/nemu/include/rlib/3rdparty/prettyprint.hpp index ce2226a92b3d753826442b16ee18264e0a755839..106c275e9a7e2bd8a9af54f884fee0ba9a6efb1a 100644 --- a/nemu/include/rlib/3rdparty/prettyprint.hpp +++ b/nemu/include/rlib/3rdparty/prettyprint.hpp @@ -167,11 +167,11 @@ namespace pretty_print template <typename T, typename TChar, typename TCharTraits, typename TDelimiters> template <typename T1, typename T2> - struct print_container_helper<T, TChar, TCharTraits, TDelimiters>::printer<std::pair<T1, T2>> + struct print_container_helper<T, TChar, TCharTraits, TDelimiters>::printer<::std::pair<T1, T2>> { using ostream_type = typename print_container_helper<T, TChar, TCharTraits, TDelimiters>::ostream_type; - static void print_body(const std::pair<T1, T2> & c, ostream_type & stream) + static void print_body(const ::std::pair<T1, T2> & c, ostream_type & stream) { stream << c.first; if (print_container_helper<T, TChar, TCharTraits, TDelimiters>::delimiters_type::values.delimiter != NULL) @@ -184,10 +184,10 @@ namespace pretty_print template <typename T, typename TChar, typename TCharTraits, typename TDelimiters> template <typename ...Args> - struct print_container_helper<T, TChar, TCharTraits, TDelimiters>::printer<std::tuple<Args...>> + struct print_container_helper<T, TChar, TCharTraits, TDelimiters>::printer<::std::tuple<Args...>> { using ostream_type = typename print_container_helper<T, TChar, TCharTraits, TDelimiters>::ostream_type; - using element_type = std::tuple<Args...>; + using element_type = ::std::tuple<Args...>; template <std::size_t I> struct Int { }; @@ -249,10 +249,10 @@ namespace pretty_print struct is_container<std::valarray<T>> : std::true_type { }; template <typename T1, typename T2> - struct is_container<std::pair<T1, T2>> : std::true_type { }; + struct is_container<::std::pair<T1, T2>> : std::true_type { }; template <typename ...Args> - struct is_container<std::tuple<Args...>> : std::true_type { }; + struct is_container<::std::tuple<Args...>> : std::true_type { }; // Default delimiters @@ -316,13 +316,13 @@ namespace pretty_print // Delimiters for pair and tuple - template <typename T1, typename T2> struct delimiters<std::pair<T1, T2>, char> { static const delimiters_values<char> values; }; - template <typename T1, typename T2> const delimiters_values<char> delimiters<std::pair<T1, T2>, char>::values = { "(", ", ", ")" }; + template <typename T1, typename T2> struct delimiters<::std::pair<T1, T2>, char> { static const delimiters_values<char> values; }; + template <typename T1, typename T2> const delimiters_values<char> delimiters<::std::pair<T1, T2>, char>::values = { "(", ", ", ")" }; template <typename T1, typename T2> struct delimiters< ::std::pair<T1, T2>, wchar_t> { static const delimiters_values<wchar_t> values; }; template <typename T1, typename T2> const delimiters_values<wchar_t> delimiters< ::std::pair<T1, T2>, wchar_t>::values = { L"(", L", ", L")" }; - template <typename ...Args> struct delimiters<std::tuple<Args...>, char> { static const delimiters_values<char> values; }; - template <typename ...Args> const delimiters_values<char> delimiters<std::tuple<Args...>, char>::values = { "(", ", ", ")" }; + template <typename ...Args> struct delimiters<::std::tuple<Args...>, char> { static const delimiters_values<char> values; }; + template <typename ...Args> const delimiters_values<char> delimiters<::std::tuple<Args...>, char>::values = { "(", ", ", ")" }; template <typename ...Args> struct delimiters< ::std::tuple<Args...>, wchar_t> { static const delimiters_values<wchar_t> values; }; template <typename ...Args> const delimiters_values<wchar_t> delimiters< ::std::tuple<Args...>, wchar_t>::values = { L"(", L", ", L")" }; diff --git a/nemu/include/util/util.h b/nemu/include/util/util.h index 330a1d97315d45346981fd79c8eb6cfe9bb7e92f..2fe56754c7a2a04a2229baa1902028b4ba93e464 100644 --- a/nemu/include/util/util.h +++ b/nemu/include/util/util.h @@ -11,7 +11,7 @@ namespace rlib { return (int8_t)val; else if constexpr(BytesCount == 2) return (int16_t)val; - else return val; + return val; } } diff --git a/nemu/src/device/io/mmio.cc b/nemu/src/device/io/mmio.cc index 396f0ede02f279af5758403e9c2788806fa702c4..50feaabe59f30028c4afb7d47c0fbc0435a36545 100644 --- a/nemu/src/device/io/mmio.cc +++ b/nemu/src/device/io/mmio.cc @@ -34,8 +34,7 @@ void* add_mmio_map(paddr_t addr, int len, mmio_callback_t callback) { /* bus interface */ __attribute__((hot)) int is_mmio(paddr_t addr) { - int i; - for (i = 0; i < nr_map; i ++) { + for (int i = 0; i < nr_map; i ++) { if (addr >= maps[i].low && addr <= maps[i].high) { return i; } diff --git a/nemu/src/memory/memory.cc b/nemu/src/memory/memory.cc index f510a8a9a9843acf8c9375b1676888e2e0c3160e..46be639c22a2af66d476b3a3e6b4798dfb48d34b 100644 --- a/nemu/src/memory/memory.cc +++ b/nemu/src/memory/memory.cc @@ -15,21 +15,29 @@ uint8_t pmem[PMEM_SIZE]; __attribute__((hot)) uint32_t paddr_read(paddr_t addr, int len) { static const uint32_t niddle[] = {0, 0xff, 0xffff, 0xffffff, 0xffffffff}; +#ifndef DISABLE_MMIO if(const auto mmio_id = is_mmio(addr); RLIB_MACRO_LIKELY(-1 == mmio_id)) { +#endif return pmem_rw(addr, uint32_t) & niddle[len]; +#ifndef DISABLE_MMIO } else { return mmio_read(addr, len, mmio_id); } +#endif } void paddr_write(paddr_t addr, uint32_t data, int len) { +#ifndef DISABLE_MMIO if(const auto mmio_id = is_mmio(addr); RLIB_MACRO_LIKELY(-1 == mmio_id)) { +#endif memcpy(guest_to_host(addr), &data, len); +#ifndef DISABLE_MMIO } else { mmio_write(addr, len, data, mmio_id); } +#endif }