diff --git a/DevTools/ProfileViewer/Profile.cpp b/DevTools/ProfileViewer/Profile.cpp index e1fc50ae81..8881a43eee 100644 --- a/DevTools/ProfileViewer/Profile.cpp +++ b/DevTools/ProfileViewer/Profile.cpp @@ -35,7 +35,8 @@ Profile::Profile(const JsonArray& json) if (frames_array.size() < 2) continue; - sample.in_kernel = frames_array.at(1).as_object().get("address").to_number() < (8 * MB); + u32 innermost_frame_address = frames_array.at(1).as_object().get("address").to_number(); + sample.in_kernel = innermost_frame_address >= 0xc0000000 || innermost_frame_address < (8 * MB); for (int i = frames_array.size() - 1; i >= 1; --i) { auto& frame_value = frames_array.at(i); diff --git a/DevTools/ProfileViewer/ProfileModel.cpp b/DevTools/ProfileViewer/ProfileModel.cpp index 427023cdb4..02d5dde0d4 100644 --- a/DevTools/ProfileViewer/ProfileModel.cpp +++ b/DevTools/ProfileViewer/ProfileModel.cpp @@ -92,7 +92,7 @@ GVariant ProfileModel::data(const GModelIndex& index, Role role) const auto* node = static_cast(index.internal_data()); if (role == Role::Icon) { if (index.column() == Column::StackFrame) { - if (node->address() < (8 * MB)) + if (node->address() < (8 * MB) || node->address() >= 0xc0000000) return m_kernel_frame_icon; return m_user_frame_icon; }