diff options
| author | 2026-08-18 12:15:05 +0200 | |
|---|---|---|
| committer | 2026-08-18 12:15:05 +0200 | |
| commit | 132d3236bb884433bf94e961f6d32264e0334aec (patch) | |
| tree | 06638976b06f019ea4037175ff228f8271057c44 /misc-host/paging-debug | |
Diffstat (limited to 'misc-host/paging-debug')
| -rw-r--r-- | misc-host/paging-debug/build-paging-debug-GCC-Debug/Makefile | 595 | ||||
| -rw-r--r-- | misc-host/paging-debug/paging-debug/.gitignore | 73 | ||||
| -rw-r--r-- | misc-host/paging-debug/paging-debug/bootloader_compat.cpp | 20 | ||||
| -rw-r--r-- | misc-host/paging-debug/paging-debug/bootloader_compat.h | 40 | ||||
| -rw-r--r-- | misc-host/paging-debug/paging-debug/main.c | 25 | ||||
| -rw-r--r-- | misc-host/paging-debug/paging-debug/paging-debug.pro | 14 | ||||
| -rw-r--r-- | misc-host/paging-debug/paging-debug/paging.c | 310 | ||||
| -rw-r--r-- | misc-host/paging-debug/paging-debug/paging.h | 17 | ||||
| -rw-r--r-- | misc-host/paging-debug/paging-debug/paging_struct.h | 189 |
9 files changed, 1283 insertions, 0 deletions
diff --git a/misc-host/paging-debug/build-paging-debug-GCC-Debug/Makefile b/misc-host/paging-debug/build-paging-debug-GCC-Debug/Makefile new file mode 100644 index 0000000..c0b03e8 --- /dev/null +++ b/misc-host/paging-debug/build-paging-debug-GCC-Debug/Makefile @@ -0,0 +1,595 @@ +############################################################################# +# Makefile for building: paging-debug +# Generated by qmake (3.0) (Qt 5.5.0) +# Project: ../paging-debug/paging-debug.pro +# Template: app +# Command: /usr/lib/qt/bin/qmake -spec linux-g++ CONFIG+=debug -o Makefile ../paging-debug/paging-debug.pro +############################################################################# + +MAKEFILE = Makefile + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = +CFLAGS = -pipe -g -Wall -W -fPIC $(DEFINES) +CXXFLAGS = -pipe -g -std=c++0x -Wall -W -fPIC $(DEFINES) +INCPATH = -I../paging-debug -I. -I/usr/lib/qt/mkspecs/linux-g++ +QMAKE = /usr/lib/qt/bin/qmake +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = cp -f +COPY_DIR = cp -f -R +INSTALL_FILE = install -m 644 -p +INSTALL_PROGRAM = install -m 755 -p +INSTALL_DIR = cp -f -R +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +TAR = tar -cf +COMPRESS = gzip -9f +DISTNAME = paging-debug1.0.0 +DISTDIR = /home/ornitorrincos/OS-github/misc-host/paging-debug/build-paging-debug-GCC-Debug/.tmp/paging-debug1.0.0 +LINK = g++ +LFLAGS = +LIBS = $(SUBLIBS) +AR = ar cqs +RANLIB = +SED = sed +STRIP = strip + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = ../paging-debug/main.c \ + ../paging-debug/bootloader_compat.cpp \ + ../paging-debug/paging.c +OBJECTS = main.o \ + bootloader_compat.o \ + paging.o +DIST = /usr/lib/qt/mkspecs/features/spec_pre.prf \ + /usr/lib/qt/mkspecs/common/unix.conf \ + /usr/lib/qt/mkspecs/common/linux.conf \ + /usr/lib/qt/mkspecs/common/sanitize.conf \ + /usr/lib/qt/mkspecs/common/gcc-base.conf \ + /usr/lib/qt/mkspecs/common/gcc-base-unix.conf \ + /usr/lib/qt/mkspecs/common/g++-base.conf \ + /usr/lib/qt/mkspecs/common/g++-unix.conf \ + /usr/lib/qt/mkspecs/qconfig.pri \ + /usr/lib/qt/mkspecs/modules/qt_Attica.pri \ + /usr/lib/qt/mkspecs/modules/qt_KActivities.pri \ + /usr/lib/qt/mkspecs/modules/qt_KArchive.pri \ + /usr/lib/qt/mkspecs/modules/qt_KAuth.pri \ + /usr/lib/qt/mkspecs/modules/qt_KBookmarks.pri \ + /usr/lib/qt/mkspecs/modules/qt_KCMUtils.pri \ + /usr/lib/qt/mkspecs/modules/qt_KCodecs.pri \ + /usr/lib/qt/mkspecs/modules/qt_KCompletion.pri \ + /usr/lib/qt/mkspecs/modules/qt_KConfigCore.pri \ + /usr/lib/qt/mkspecs/modules/qt_KConfigGui.pri \ + /usr/lib/qt/mkspecs/modules/qt_KConfigWidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_KCoreAddons.pri \ + /usr/lib/qt/mkspecs/modules/qt_KCrash.pri \ + /usr/lib/qt/mkspecs/modules/qt_KDBusAddons.pri \ + /usr/lib/qt/mkspecs/modules/qt_KDeclarative.pri \ + /usr/lib/qt/mkspecs/modules/qt_KDEWebKit.pri \ + /usr/lib/qt/mkspecs/modules/qt_KDNSSD.pri \ + /usr/lib/qt/mkspecs/modules/qt_KEmoticons.pri \ + /usr/lib/qt/mkspecs/modules/qt_KGlobalAccel.pri \ + /usr/lib/qt/mkspecs/modules/qt_KGuiAddons.pri \ + /usr/lib/qt/mkspecs/modules/qt_KHtml.pri \ + /usr/lib/qt/mkspecs/modules/qt_KI18n.pri \ + /usr/lib/qt/mkspecs/modules/qt_KIconThemes.pri \ + /usr/lib/qt/mkspecs/modules/qt_KIdleTime.pri \ + /usr/lib/qt/mkspecs/modules/qt_KIOCore.pri \ + /usr/lib/qt/mkspecs/modules/qt_KIOFileWidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_KIOWidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_KItemModels.pri \ + /usr/lib/qt/mkspecs/modules/qt_KItemViews.pri \ + /usr/lib/qt/mkspecs/modules/qt_KJobWidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_KJS.pri \ + /usr/lib/qt/mkspecs/modules/qt_KJSApi.pri \ + /usr/lib/qt/mkspecs/modules/qt_KNewStuff.pri \ + /usr/lib/qt/mkspecs/modules/qt_KNotifications.pri \ + /usr/lib/qt/mkspecs/modules/qt_KNotifyConfig.pri \ + /usr/lib/qt/mkspecs/modules/qt_KNTLM.pri \ + /usr/lib/qt/mkspecs/modules/qt_KParts.pri \ + /usr/lib/qt/mkspecs/modules/qt_KPlotting.pri \ + /usr/lib/qt/mkspecs/modules/qt_KPty.pri \ + /usr/lib/qt/mkspecs/modules/qt_KService.pri \ + /usr/lib/qt/mkspecs/modules/qt_KTextEditor.pri \ + /usr/lib/qt/mkspecs/modules/qt_KTextWidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_KUnitConversion.pri \ + /usr/lib/qt/mkspecs/modules/qt_KWallet.pri \ + /usr/lib/qt/mkspecs/modules/qt_KWidgetsAddons.pri \ + /usr/lib/qt/mkspecs/modules/qt_KWindowSystem.pri \ + /usr/lib/qt/mkspecs/modules/qt_KXmlGui.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_clucene_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_core.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_declarative.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_declarative_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_designer.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_designer_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_designercomponents_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_eglfs_device_lib_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_help.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_help_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_location.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_location_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_network.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_platformsupport_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_positioning.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_positioning_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_qml.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_qml_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_qmldevtools_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_qmltest.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_qmltest_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_quick.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_quick_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_quickparticles_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_script.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_script_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_scripttools.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_scripttools_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_sensors.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_sensors_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_svg_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_uiplugin.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_uitools.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_uitools_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webchannel.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webchannel_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webkit.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webkit_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webkitwidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_x11extras.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_x11extras_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_phonon4qt5.pri \ + /usr/lib/qt/mkspecs/modules/qt_QGpgme.pri \ + /usr/lib/qt/mkspecs/modules/qt_QuickAddons.pri \ + /usr/lib/qt/mkspecs/modules/qt_Solid.pri \ + /usr/lib/qt/mkspecs/modules/qt_SonnetCore.pri \ + /usr/lib/qt/mkspecs/modules/qt_SonnetUi.pri \ + /usr/lib/qt/mkspecs/modules/qt_ThreadWeaver.pri \ + /usr/lib/qt/mkspecs/features/qt_functions.prf \ + /usr/lib/qt/mkspecs/features/qt_config.prf \ + /usr/lib/qt/mkspecs/linux-g++/qmake.conf \ + /usr/lib/qt/mkspecs/features/spec_post.prf \ + /usr/lib/qt/mkspecs/features/exclusive_builds.prf \ + /usr/lib/qt/mkspecs/features/default_pre.prf \ + /usr/lib/qt/mkspecs/features/resolve_config.prf \ + /usr/lib/qt/mkspecs/features/default_post.prf \ + /usr/lib/qt/mkspecs/features/c++11.prf \ + /usr/lib/qt/mkspecs/features/warn_on.prf \ + /usr/lib/qt/mkspecs/features/testcase_targets.prf \ + /usr/lib/qt/mkspecs/features/exceptions.prf \ + /usr/lib/qt/mkspecs/features/yacc.prf \ + /usr/lib/qt/mkspecs/features/lex.prf \ + ../paging-debug/paging-debug.pro bootloader_compat.h \ + paging_struct.h \ + paging.h ../paging-debug/main.c \ + ../paging-debug/bootloader_compat.cpp \ + ../paging-debug/paging.c +QMAKE_TARGET = paging-debug +DESTDIR = #avoid trailing-slash linebreak +TARGET = paging-debug + + +first: all +####### Implicit rules + +.SUFFIXES: .o .c .cpp .cc .cxx .C + +.cpp.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cc.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.cxx.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.C.o: + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<" + +.c.o: + $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<" + +####### Build rules + +$(TARGET): $(OBJECTS) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS) + +Makefile: ../paging-debug/paging-debug.pro /usr/lib/qt/mkspecs/linux-g++/qmake.conf /usr/lib/qt/mkspecs/features/spec_pre.prf \ + /usr/lib/qt/mkspecs/common/unix.conf \ + /usr/lib/qt/mkspecs/common/linux.conf \ + /usr/lib/qt/mkspecs/common/sanitize.conf \ + /usr/lib/qt/mkspecs/common/gcc-base.conf \ + /usr/lib/qt/mkspecs/common/gcc-base-unix.conf \ + /usr/lib/qt/mkspecs/common/g++-base.conf \ + /usr/lib/qt/mkspecs/common/g++-unix.conf \ + /usr/lib/qt/mkspecs/qconfig.pri \ + /usr/lib/qt/mkspecs/modules/qt_Attica.pri \ + /usr/lib/qt/mkspecs/modules/qt_KActivities.pri \ + /usr/lib/qt/mkspecs/modules/qt_KArchive.pri \ + /usr/lib/qt/mkspecs/modules/qt_KAuth.pri \ + /usr/lib/qt/mkspecs/modules/qt_KBookmarks.pri \ + /usr/lib/qt/mkspecs/modules/qt_KCMUtils.pri \ + /usr/lib/qt/mkspecs/modules/qt_KCodecs.pri \ + /usr/lib/qt/mkspecs/modules/qt_KCompletion.pri \ + /usr/lib/qt/mkspecs/modules/qt_KConfigCore.pri \ + /usr/lib/qt/mkspecs/modules/qt_KConfigGui.pri \ + /usr/lib/qt/mkspecs/modules/qt_KConfigWidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_KCoreAddons.pri \ + /usr/lib/qt/mkspecs/modules/qt_KCrash.pri \ + /usr/lib/qt/mkspecs/modules/qt_KDBusAddons.pri \ + /usr/lib/qt/mkspecs/modules/qt_KDeclarative.pri \ + /usr/lib/qt/mkspecs/modules/qt_KDEWebKit.pri \ + /usr/lib/qt/mkspecs/modules/qt_KDNSSD.pri \ + /usr/lib/qt/mkspecs/modules/qt_KEmoticons.pri \ + /usr/lib/qt/mkspecs/modules/qt_KGlobalAccel.pri \ + /usr/lib/qt/mkspecs/modules/qt_KGuiAddons.pri \ + /usr/lib/qt/mkspecs/modules/qt_KHtml.pri \ + /usr/lib/qt/mkspecs/modules/qt_KI18n.pri \ + /usr/lib/qt/mkspecs/modules/qt_KIconThemes.pri \ + /usr/lib/qt/mkspecs/modules/qt_KIdleTime.pri \ + /usr/lib/qt/mkspecs/modules/qt_KIOCore.pri \ + /usr/lib/qt/mkspecs/modules/qt_KIOFileWidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_KIOWidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_KItemModels.pri \ + /usr/lib/qt/mkspecs/modules/qt_KItemViews.pri \ + /usr/lib/qt/mkspecs/modules/qt_KJobWidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_KJS.pri \ + /usr/lib/qt/mkspecs/modules/qt_KJSApi.pri \ + /usr/lib/qt/mkspecs/modules/qt_KNewStuff.pri \ + /usr/lib/qt/mkspecs/modules/qt_KNotifications.pri \ + /usr/lib/qt/mkspecs/modules/qt_KNotifyConfig.pri \ + /usr/lib/qt/mkspecs/modules/qt_KNTLM.pri \ + /usr/lib/qt/mkspecs/modules/qt_KParts.pri \ + /usr/lib/qt/mkspecs/modules/qt_KPlotting.pri \ + /usr/lib/qt/mkspecs/modules/qt_KPty.pri \ + /usr/lib/qt/mkspecs/modules/qt_KService.pri \ + /usr/lib/qt/mkspecs/modules/qt_KTextEditor.pri \ + /usr/lib/qt/mkspecs/modules/qt_KTextWidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_KUnitConversion.pri \ + /usr/lib/qt/mkspecs/modules/qt_KWallet.pri \ + /usr/lib/qt/mkspecs/modules/qt_KWidgetsAddons.pri \ + /usr/lib/qt/mkspecs/modules/qt_KWindowSystem.pri \ + /usr/lib/qt/mkspecs/modules/qt_KXmlGui.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_clucene_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_core.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_declarative.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_declarative_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_designer.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_designer_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_designercomponents_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_eglfs_device_lib_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_help.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_help_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_location.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_location_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_network.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_opengl.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_platformsupport_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_positioning.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_positioning_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_qml.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_qml_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_qmldevtools_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_qmltest.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_qmltest_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_quick.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_quick_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_quickparticles_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_script.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_script_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_scripttools.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_scripttools_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_sensors.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_sensors_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_svg_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_uiplugin.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_uitools.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_uitools_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webchannel.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webchannel_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webkit.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webkit_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webkitwidgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_webkitwidgets_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_x11extras.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_x11extras_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns.pri \ + /usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns_private.pri \ + /usr/lib/qt/mkspecs/modules/qt_phonon4qt5.pri \ + /usr/lib/qt/mkspecs/modules/qt_QGpgme.pri \ + /usr/lib/qt/mkspecs/modules/qt_QuickAddons.pri \ + /usr/lib/qt/mkspecs/modules/qt_Solid.pri \ + /usr/lib/qt/mkspecs/modules/qt_SonnetCore.pri \ + /usr/lib/qt/mkspecs/modules/qt_SonnetUi.pri \ + /usr/lib/qt/mkspecs/modules/qt_ThreadWeaver.pri \ + /usr/lib/qt/mkspecs/features/qt_functions.prf \ + /usr/lib/qt/mkspecs/features/qt_config.prf \ + /usr/lib/qt/mkspecs/linux-g++/qmake.conf \ + /usr/lib/qt/mkspecs/features/spec_post.prf \ + /usr/lib/qt/mkspecs/features/exclusive_builds.prf \ + /usr/lib/qt/mkspecs/features/default_pre.prf \ + /usr/lib/qt/mkspecs/features/resolve_config.prf \ + /usr/lib/qt/mkspecs/features/default_post.prf \ + /usr/lib/qt/mkspecs/features/c++11.prf \ + /usr/lib/qt/mkspecs/features/warn_on.prf \ + /usr/lib/qt/mkspecs/features/testcase_targets.prf \ + /usr/lib/qt/mkspecs/features/exceptions.prf \ + /usr/lib/qt/mkspecs/features/yacc.prf \ + /usr/lib/qt/mkspecs/features/lex.prf \ + ../paging-debug/paging-debug.pro + $(QMAKE) -spec linux-g++ CONFIG+=debug -o Makefile ../paging-debug/paging-debug.pro +/usr/lib/qt/mkspecs/features/spec_pre.prf: +/usr/lib/qt/mkspecs/common/unix.conf: +/usr/lib/qt/mkspecs/common/linux.conf: +/usr/lib/qt/mkspecs/common/sanitize.conf: +/usr/lib/qt/mkspecs/common/gcc-base.conf: +/usr/lib/qt/mkspecs/common/gcc-base-unix.conf: +/usr/lib/qt/mkspecs/common/g++-base.conf: +/usr/lib/qt/mkspecs/common/g++-unix.conf: +/usr/lib/qt/mkspecs/qconfig.pri: +/usr/lib/qt/mkspecs/modules/qt_Attica.pri: +/usr/lib/qt/mkspecs/modules/qt_KActivities.pri: +/usr/lib/qt/mkspecs/modules/qt_KArchive.pri: +/usr/lib/qt/mkspecs/modules/qt_KAuth.pri: +/usr/lib/qt/mkspecs/modules/qt_KBookmarks.pri: +/usr/lib/qt/mkspecs/modules/qt_KCMUtils.pri: +/usr/lib/qt/mkspecs/modules/qt_KCodecs.pri: +/usr/lib/qt/mkspecs/modules/qt_KCompletion.pri: +/usr/lib/qt/mkspecs/modules/qt_KConfigCore.pri: +/usr/lib/qt/mkspecs/modules/qt_KConfigGui.pri: +/usr/lib/qt/mkspecs/modules/qt_KConfigWidgets.pri: +/usr/lib/qt/mkspecs/modules/qt_KCoreAddons.pri: +/usr/lib/qt/mkspecs/modules/qt_KCrash.pri: +/usr/lib/qt/mkspecs/modules/qt_KDBusAddons.pri: +/usr/lib/qt/mkspecs/modules/qt_KDeclarative.pri: +/usr/lib/qt/mkspecs/modules/qt_KDEWebKit.pri: +/usr/lib/qt/mkspecs/modules/qt_KDNSSD.pri: +/usr/lib/qt/mkspecs/modules/qt_KEmoticons.pri: +/usr/lib/qt/mkspecs/modules/qt_KGlobalAccel.pri: +/usr/lib/qt/mkspecs/modules/qt_KGuiAddons.pri: +/usr/lib/qt/mkspecs/modules/qt_KHtml.pri: +/usr/lib/qt/mkspecs/modules/qt_KI18n.pri: +/usr/lib/qt/mkspecs/modules/qt_KIconThemes.pri: +/usr/lib/qt/mkspecs/modules/qt_KIdleTime.pri: +/usr/lib/qt/mkspecs/modules/qt_KIOCore.pri: +/usr/lib/qt/mkspecs/modules/qt_KIOFileWidgets.pri: +/usr/lib/qt/mkspecs/modules/qt_KIOWidgets.pri: +/usr/lib/qt/mkspecs/modules/qt_KItemModels.pri: +/usr/lib/qt/mkspecs/modules/qt_KItemViews.pri: +/usr/lib/qt/mkspecs/modules/qt_KJobWidgets.pri: +/usr/lib/qt/mkspecs/modules/qt_KJS.pri: +/usr/lib/qt/mkspecs/modules/qt_KJSApi.pri: +/usr/lib/qt/mkspecs/modules/qt_KNewStuff.pri: +/usr/lib/qt/mkspecs/modules/qt_KNotifications.pri: +/usr/lib/qt/mkspecs/modules/qt_KNotifyConfig.pri: +/usr/lib/qt/mkspecs/modules/qt_KNTLM.pri: +/usr/lib/qt/mkspecs/modules/qt_KParts.pri: +/usr/lib/qt/mkspecs/modules/qt_KPlotting.pri: +/usr/lib/qt/mkspecs/modules/qt_KPty.pri: +/usr/lib/qt/mkspecs/modules/qt_KService.pri: +/usr/lib/qt/mkspecs/modules/qt_KTextEditor.pri: +/usr/lib/qt/mkspecs/modules/qt_KTextWidgets.pri: +/usr/lib/qt/mkspecs/modules/qt_KUnitConversion.pri: +/usr/lib/qt/mkspecs/modules/qt_KWallet.pri: +/usr/lib/qt/mkspecs/modules/qt_KWidgetsAddons.pri: +/usr/lib/qt/mkspecs/modules/qt_KWindowSystem.pri: +/usr/lib/qt/mkspecs/modules/qt_KXmlGui.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_clucene_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_concurrent.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_concurrent_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_core.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_core_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_dbus.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_dbus_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_declarative.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_declarative_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_designer.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_designer_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_designercomponents_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_eglfs_device_lib_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_gui.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_gui_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_help.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_help_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_location.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_location_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_network.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_network_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_opengl.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_opengl_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_platformsupport_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_positioning.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_positioning_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_printsupport.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_printsupport_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_qml.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_qml_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_qmldevtools_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_qmltest.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_qmltest_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_quick.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_quick_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_quickparticles_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_script.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_script_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_scripttools.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_scripttools_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_sensors.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_sensors_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_sql.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_sql_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_svg.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_svg_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_testlib.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_testlib_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_uiplugin.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_uitools.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_uitools_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_webchannel.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_webchannel_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_webkit.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_webkit_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_webkitwidgets.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_webkitwidgets_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_widgets.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_widgets_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_x11extras.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_x11extras_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_xml.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_xml_private.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns.pri: +/usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns_private.pri: +/usr/lib/qt/mkspecs/modules/qt_phonon4qt5.pri: +/usr/lib/qt/mkspecs/modules/qt_QGpgme.pri: +/usr/lib/qt/mkspecs/modules/qt_QuickAddons.pri: +/usr/lib/qt/mkspecs/modules/qt_Solid.pri: +/usr/lib/qt/mkspecs/modules/qt_SonnetCore.pri: +/usr/lib/qt/mkspecs/modules/qt_SonnetUi.pri: +/usr/lib/qt/mkspecs/modules/qt_ThreadWeaver.pri: +/usr/lib/qt/mkspecs/features/qt_functions.prf: +/usr/lib/qt/mkspecs/features/qt_config.prf: +/usr/lib/qt/mkspecs/linux-g++/qmake.conf: +/usr/lib/qt/mkspecs/features/spec_post.prf: +/usr/lib/qt/mkspecs/features/exclusive_builds.prf: +/usr/lib/qt/mkspecs/features/default_pre.prf: +/usr/lib/qt/mkspecs/features/resolve_config.prf: +/usr/lib/qt/mkspecs/features/default_post.prf: +/usr/lib/qt/mkspecs/features/c++11.prf: +/usr/lib/qt/mkspecs/features/warn_on.prf: +/usr/lib/qt/mkspecs/features/testcase_targets.prf: +/usr/lib/qt/mkspecs/features/exceptions.prf: +/usr/lib/qt/mkspecs/features/yacc.prf: +/usr/lib/qt/mkspecs/features/lex.prf: +../paging-debug/paging-debug.pro: +qmake: FORCE + @$(QMAKE) -spec linux-g++ CONFIG+=debug -o Makefile ../paging-debug/paging-debug.pro + +qmake_all: FORCE + + +all: Makefile $(TARGET) + +dist: distdir FORCE + (cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR) + +distdir: FORCE + @test -d $(DISTDIR) || mkdir -p $(DISTDIR) + $(COPY_FILE) --parents $(DIST) $(DISTDIR)/ + + +clean: compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +distclean: clean + -$(DEL_FILE) $(TARGET) + -$(DEL_FILE) Makefile + + +####### Sub-libraries + +check: first + +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: + +####### Compile + +main.o: ../paging-debug/main.c + $(CC) -c $(CFLAGS) $(INCPATH) -o main.o ../paging-debug/main.c + +bootloader_compat.o: ../paging-debug/bootloader_compat.cpp ../paging-debug/bootloader_compat.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o bootloader_compat.o ../paging-debug/bootloader_compat.cpp + +paging.o: ../paging-debug/paging.c ../paging-debug/paging_struct.h + $(CC) -c $(CFLAGS) $(INCPATH) -o paging.o ../paging-debug/paging.c + +####### Install + +install: FORCE + +uninstall: FORCE + +FORCE: + diff --git a/misc-host/paging-debug/paging-debug/.gitignore b/misc-host/paging-debug/paging-debug/.gitignore new file mode 100644 index 0000000..5439c79 --- /dev/null +++ b/misc-host/paging-debug/paging-debug/.gitignore @@ -0,0 +1,73 @@ +# This file is used to ignore files which are generated +# ---------------------------------------------------------------------------- + +*~ +*.autosave +*.a +*.core +*.moc +*.o +*.obj +*.orig +*.rej +*.so +*.so.* +*_pch.h.cpp +*_resource.rc +*.qm +.#* +*.*# +core +!core/ +tags +.DS_Store +*.debug +Makefile* +*.prl +*.app +moc_*.cpp +ui_*.h +qrc_*.cpp +Thumbs.db +*.res +*.rc +/.qmake.cache +/.qmake.stash + +# qtcreator generated files +*.pro.user* + +# xemacs temporary files +*.flc + +# Vim temporary files +.*.swp + +# Visual Studio generated files +*.ib_pdb_index +*.idb +*.ilk +*.pdb +*.sln +*.suo +*.vcproj +*vcproj.*.*.user +*.ncb +*.sdf +*.opensdf +*.vcxproj +*vcxproj.* + +# MinGW generated files +*.Debug +*.Release + +# Python byte code +*.pyc + +# Binaries +# -------- +*.dll +*.exe + + diff --git a/misc-host/paging-debug/paging-debug/bootloader_compat.cpp b/misc-host/paging-debug/paging-debug/bootloader_compat.cpp new file mode 100644 index 0000000..8852dad --- /dev/null +++ b/misc-host/paging-debug/paging-debug/bootloader_compat.cpp @@ -0,0 +1,20 @@ +#define _CRT_SECURE_NO_WARNINGS + +#include "bootloader_compat.h" +#include <stdio.h> +#include <stdlib.h> + +UEFIPrint Print = wprintf; + +void * EFIAPI LoadFile(char * name, UINTN memtype) +{ + FILE * f = fopen(name, "rb"); + fseek(f, 0, SEEK_END); + long fsize = ftell(f); + fseek(f, 0, SEEK_SET); + char * mem = (char*)malloc(fsize); + fread(mem, fsize, 1, f); + fclose(f); + + return mem; +} diff --git a/misc-host/paging-debug/paging-debug/bootloader_compat.h b/misc-host/paging-debug/paging-debug/bootloader_compat.h new file mode 100644 index 0000000..973e623 --- /dev/null +++ b/misc-host/paging-debug/paging-debug/bootloader_compat.h @@ -0,0 +1,40 @@ +#ifndef BOOTLOADER_COMPAT_H +#define BOOTLOADER_COMPAT_H + +// partial API of UEFI/bootloader + +#include <wchar.h> +#include <stdint.h> + +#define EFIAPI +#define IN +#define OUT + +// basic UEFI datatypes +typedef uint8_t BOOLEAN; +typedef int8_t INT8; +typedef uint8_t UINT8; +typedef int16_t INT16; +typedef uint16_t UINT16; +typedef int32_t INT32; +typedef uint32_t UINT32; +typedef int64_t INT64; +typedef uint64_t UINT64; +typedef char CHAR8; +typedef wchar_t CHAR16; +typedef uint64_t UINTN; + +typedef uint64_t* EFI_PHYSICAL_ADDRESS; +typedef uint32_t EFI_STATUS; + +#define EFI_SUCCESS 0 + +// UEFI native functions +typedef int (*UEFIPrint)(const wchar_t *, ...); +extern UEFIPrint Print; + +// Bootloader defined +void * EFIAPI LoadFile(char * name, UINTN memtype); + +#endif // BOOTLOADER_COMPAT_H + diff --git a/misc-host/paging-debug/paging-debug/main.c b/misc-host/paging-debug/paging-debug/main.c new file mode 100644 index 0000000..9db9c18 --- /dev/null +++ b/misc-host/paging-debug/paging-debug/main.c @@ -0,0 +1,25 @@ +#include <stdio.h> +#include "paging.h" + +int main(void) +{ + printf("Hello World!\n"); + + + initCR3(); + + uint64_t addr = 4; // GB + addr *= 1024; // MB + addr *= 1024; // KB + + for(uint64_t i = 0; i < addr; i += 0x1000) + { + SetVirtualAddress(i, i); + } + //SetVirtualAddress(0x4000, 0x4000); + + //SetVirtualAddress(0x6523000, 0x6523000); + + return 0; +} + diff --git a/misc-host/paging-debug/paging-debug/paging-debug.pro b/misc-host/paging-debug/paging-debug/paging-debug.pro new file mode 100644 index 0000000..86e553c --- /dev/null +++ b/misc-host/paging-debug/paging-debug/paging-debug.pro @@ -0,0 +1,14 @@ +TEMPLATE = app +CONFIG += console c++11 +CONFIG -= app_bundle +CONFIG -= qt + +SOURCES += main.c \ + bootloader_compat.cpp \ + paging.c + +HEADERS += \ + bootloader_compat.h \ + paging_struct.h \ + paging.h + diff --git a/misc-host/paging-debug/paging-debug/paging.c b/misc-host/paging-debug/paging-debug/paging.c new file mode 100644 index 0000000..80adbda --- /dev/null +++ b/misc-host/paging-debug/paging-debug/paging.c @@ -0,0 +1,310 @@ +#include "paging_struct.h" +#include "memory.h" + +#include <stdlib.h> +#include <intrin.h> +#include <malloc.h> + +uint64_t size; +uint64_t baseaddr; +uint64_t current; + +uint64_t count; + +EFI_PHYSICAL_ADDRESS pages; +uint64_t * CR3; + +uint64_t virtualmemory; +uint64_t maxneg; +uint64_t maxnegcomp; +//uint64_t base_memory; + +void bootloader_memset(void* ptr, uint64_t size, uint8_t value) +{ + memset(ptr, value, size); +} + +uint64_t GetNextEntry() +{ + uint64_t ret = current + 0x1000;//1024*4; + + count++; + + if(count > 1023) + { + // need to allocate new page + // 1024 pages for 4MB + + //pages = (EFI_PHYSICAL_ADDRESS)malloc(size*0x1000); + pages = (EFI_PHYSICAL_ADDRESS)_aligned_malloc(size * 0x1000, 0x1000); + + /*EFI_STATUS allocstatus = uefi_call_wrapper(BS->AllocatePages, 4, AllocateAnyPages, MEM_PAGING, size, &pages); + if(allocstatus != EFI_SUCCESS) + { + Print(L"Paging space allocation failed"); + return -1; + }*/ + bootloader_memset((void*)pages, size*0x1000, 0x0); + baseaddr = (uint64_t)pages; + ret = baseaddr; + + //Print(L"New Chunk: 0x%llX\n", baseaddr); + count = 0; + + current = ret; + + if(ret % 0x1000 != 0) + { + Print(L"WARNING Memory not aligned\n"); + } + + return ret; + } + + //Print(L"New Entry: 0x%llX\n", ret); + current = ret; + + if(ret % 0x1000 != 0) + { + Print(L"WARNING Memory not aligned\n"); + } + + return ret; +} + +uint8_t NeedAllocation(uint64_t in) +{ + if(in == -1) + { + return 1; + } + + return 0; +} + +UINT64 EFIAPI GetVMCPUID() +{ + long out = 0; + long id = 0x80000008; + + int arr[4] = {0}; + + __cpuid(arr, id); + + out = arr[0]; + + return out; +} + +uint64_t powerTwo(uint64_t power) +{ + uint64_t ret = 1; + + while(power > 0) + { + ret *= 2; + + power--; + } + + return ret; +} + +void initCR3() +{ + UINT64 cpu = GetVMCPUID(); + + CPUIDsizes * sizes = (CPUIDsizes*)&cpu; + + Print(L"raw: %x\n", cpu); + Print(L"Physical: %d\n", sizes->PhysicalAddress); + Print(L"Virtual: %d\n", sizes->VirtualAddress); + virtualmemory = sizes->PhysicalAddress; + + maxneg = powerTwo(virtualmemory) - 1; + maxnegcomp = maxneg << PE_ADDR_SHIFT; + + size = 1024; + + Print(L"Started CR3\n"); + + // 1024 pages for 4MB + //EFI_STATUS allocstatus = uefi_call_wrapper(BS->AllocatePages, 4, AllocateAnyPages, MEM_PAGING, size, &pages); + pages = (EFI_PHYSICAL_ADDRESS)_aligned_malloc(size * 0x1000, 0x1000); + /*if(allocstatus != EFI_SUCCESS) + { + Print(L"Paging space allocation failed"); + return; + }*/ + + count = 1; + + // 1024 pages at 4kb each + bootloader_memset((void*)pages, size*4*1024, 0x0); + + baseaddr = (uint64_t)pages; + current = baseaddr; + + CR3 = (uint64_t*)current; + *CR3 = 0; + + *CR3 |= CR3_PCD; + *CR3 |= CR3_PWT; + uint64_t tmpaddr = GetNextEntry(); + + memset((uint64_t*)tmpaddr, 0, 0x1000); + + *CR3 &= CR3_ERASE; + //*CR3 |= CR3SetAddr(tmpaddr); + *CR3 |= MaskPhyAddr(tmpaddr); + + //*CR3 |=(maxneg << CR3_ADDR_SHIFT); + + //((s_CR3*)CR3)->PCD = 1; + //((s_CR3*)CR3)->PWT = 1; + //((s_CR3*)CR3)->base_addr = GetNextEntry(); + + + //int32_t pml4es = sizeof(s_PML4E); + + + //((s_CR3*)CR3)->base_addr = maxneg; + +} + +void printCR3() +{ + Print(L"CR3 value: 0x%llX\n", *((uint64_t*)CR3)); +} + +void writeCR3() +{ + +} + +void SetVirtualAddress(uint64_t phy, uint64_t virt) +{ + uint64_t* pml4 = (uint64_t*)MaskPhyAddr(*CR3); + + // Get the offsets to each page table + uint64_t pml4offset = GetPML4Offset(virt); + uint64_t pdpoffset = GetPDPOffset(virt); + uint64_t pdoffset = GetPDOffset(virt); + uint64_t ptoffset = GetPTOffset(virt); + + + uint64_t pml4e = pml4[pml4offset]; + + // if not present, allocate the page + if((pml4e & PE_P) == 0x0ull) + { + //assign the physical addr, and clear all to zero + uint64_t tmpaddr = GetNextEntry(); + pml4e |= MaskPhyAddr(tmpaddr); + + // initialize the page + pml4e |= PE_P; + pml4e |= PE_RW; + pml4e |= PE_US; + pml4e |= PE_PWT; + pml4e |= PE_PCD; + } + // assign the values to the array + pml4[pml4offset] = pml4e; + + + uint64_t pdpe = ((uint64_t*)MaskPhyAddr(pml4e))[pdpoffset]; + if((pdpe & PE_P) == 0x0ull) + { + // page not present + uint64_t tmpaddr = GetNextEntry(); + pdpe |= MaskPhyAddr(tmpaddr); + + pdpe |= PE_P; + pdpe |= PE_RW; + pdpe |= PE_US; + pdpe |= PE_PWT; + pdpe |= PE_PCD; + } + ((uint64_t*)MaskPhyAddr(pml4e))[pdpoffset] = pdpe; + + uint64_t pde = ((uint64_t*)MaskPhyAddr(pdpe))[pdoffset]; + + if((pde & PE_P) == 0x0ull) + { + uint64_t tmpaddr = GetNextEntry(); + + pde |= MaskPhyAddr(tmpaddr); + + pde |= PE_P; + pde |= PE_RW; + pde |= PE_US; + pde |= PE_PWT; + pde |= PE_PCD; + } + ((uint64_t*)MaskPhyAddr(pdpe))[pdoffset] = pde; + + uint64_t pte = ((uint64_t*)MaskPhyAddr(pde))[ptoffset]; + + // need to make the pt entry + + if((pte & PE_P) == 0x0ull) + { + pte |= PE_P; + pte |= PE_RW; + pte |= PE_US; + pte |= PE_PWT; + pte |= PE_PCD; + pte |= MaskPhyAddr(phy); + } + ((uint64_t*)MaskPhyAddr(pde))[ptoffset] = pte; +} + +uint8_t checkIdentity(uint64_t phy) +{ + //uint8_t phyvalue = (uint8_t)(*(uint64_t*)phy); + uint8_t phyvalue = (uint8_t)*(uint64_t*)phy; // to check values in memory, not really used in hosted environment + uint8_t virtvalue; + uint64_t pml4e = CR3GetAddr(*CR3);// + GetPML4Offset(phy); + pml4e = *(((uint64_t*)pml4e) + GetPML4Offset(phy)); + uint64_t pdpe = *(((uint64_t*)GetAddr(pml4e)) + GetPDPOffset(phy)); + uint64_t pde = *(((uint64_t*)GetAddr(pdpe)) + GetPDOffset(phy)); + uint64_t pte = *(((uint64_t*)GetAddr(pde)) + GetPTOffset(phy)); + uint64_t pteptr = ((GetAddr(pte)) + GetPhyOffset(phy)); + virtvalue = (uint8_t)*(uint64_t*)((GetAddr(pte)) + GetPhyOffset(phy)); + + //s_PDPE * pdpe = ((s_PDPE*)(pml4e->PDPBA + 8*virt->PDP)); + //s_PDE * pde = ((s_PDE*)(pdpe->PDBA + 8*virt->PD)); + //s_PTE * pte = ((s_PTE*)(pde->PTBA + 8*virt->PT)); + //virtvalue = *(uint8_t*)(pte->PPBA + virt->offset); + + // get the correct virtual value + + Print(L"ADDR: 0x%llx\n", phy); + + Print(L"PML4E 0x%llx\n", pml4e); + Print(L"PDPE 0x%llx\n", pdpe); + Print(L"PDE 0x%llx\n", pde); + Print(L"PTE 0x%llx\n", pte); + Print(L"pageentry: 0x%llx\n", pteptr); + Print(L"PPBA 0x%llx\n", GetAddr(pte)); + + Print(L"PML4 %d\n", GetPML4Offset(phy)); + Print(L"PDP %d\n", GetPDPOffset(phy)); + Print(L"PD %d\n", GetPDOffset(phy)); + Print(L"PT %d\n", GetPTOffset(phy)); + Print(L"PHY 0x%llx\n", GetPhyOffset(phy)); + + + Print(L"PHYSICAL: 0x%x\n", phyvalue); + Print(L"VIRTUAL: 0x%x\n", virtvalue); + + if(phyvalue != virtvalue) + { + Print(L"Incorrect physical virtual value\n"); + return 0; + } + + Print(L"Correct physical virtual value\n"); + return 1; +} diff --git a/misc-host/paging-debug/paging-debug/paging.h b/misc-host/paging-debug/paging-debug/paging.h new file mode 100644 index 0000000..59eef1e --- /dev/null +++ b/misc-host/paging-debug/paging-debug/paging.h @@ -0,0 +1,17 @@ +#ifndef PAGING_H +#define PAGING_H + +#include <stdint.h> + +uint64_t GetNextEntry(); +void initCR3(); +void printCR3(); +void writeCR3(); +void SetVirtualAddress(uint64_t phy, uint64_t virt); +uint8_t checkIdentity(uint64_t phy); + + +//void * SetPagingStructs(); + +#endif // PAGING_H + diff --git a/misc-host/paging-debug/paging-debug/paging_struct.h b/misc-host/paging-debug/paging-debug/paging_struct.h new file mode 100644 index 0000000..7fca6d5 --- /dev/null +++ b/misc-host/paging-debug/paging-debug/paging_struct.h @@ -0,0 +1,189 @@ +#ifndef PAGING_STRUCT_H +#define PAGING_STRUCT_H + +#include "bootloader_compat.h" +#include <stdint.h> + +typedef UINT64 uchar; // need to replace this for other more sensible thing or location + +UINT64 GetVMCPUID(); // implemented in misc.s + +extern uint64_t maxneg; + +typedef struct _CPUIDsizes +{ + UINT64 PhysicalAddress:8; + UINT64 VirtualAddress:8; + UINT64 Padding:48; +} CPUIDsizes; + +// these entries are for 4KB pages + + +// Virtual pointer bits breakdown (4KB pages) +// +---------------+-------------+------------+-----------+-----------+-----------------------+ +// | 63 - 48 | 47 - 39 | 38 - 30 | 29 - 21 | 20 - 12 | 11 - 0 | +// +---------------+-------------+------------+-----------+-----------+-----------------------+ +// | sign extend | PML4 offset | PDP offset | PD offset | PT offset | physical page offset | +// +---------------+-------------+------------+-----------+-----------+-----------------------+ + +// Virtual pointer bits breakdown (2MB pages) +// +---------------+-------------+------------+-----------+-----------------------------------+ +// | 63 - 48 | 47 - 39 | 38 - 30 | 29 - 21 | 20 - 0 | +// +---------------+-------------+------------+-----------+-----------------------------------+ +// | sign extend | PML4 offset | PDP offset | PD offset | physical page offset | +// +---------------+-------------+------------+-----------+-----------------------------------+ + + +// paging structure: + +// CR3 +// the contents of this struct go into CR3 +#pragma pack(1) +typedef struct +{ + uint64_t reserved1:3; + uint64_t PWT:1; // page level writethough + uint64_t PCD:1; // page level cache disable + uint64_t reserved2:7; + uint64_t base_addr:40; // base address to the table of PML4 entries + uint64_t reserved3:13; +} s_CR3; + +// Virtual Pointer +#define VP_OFF_PHY 0ull +#define VP_OFF_PT 12ull +#define VP_OFF_PD 21ull +#define VP_OFF_PDP 30ull +#define VP_OFF_PML4 39ull +#define VP_OFF_SIGN 48ull + +#define GetPhyOffset(x) (x & 0xFFFull) +#define GetPTOffset(x) ((x >> VP_OFF_PT) & 0x1FFull) +#define GetPDOffset(x) ((x >> VP_OFF_PD) & 0x1FFull) +#define GetPDPOffset(x) ((x >> VP_OFF_PDP) & 0x1FFull) +#define GetPML4Offset(x) ((x >> VP_OFF_PML4) & 0x1FFull) +#define GetSignOffset(x) ((x >> VP_OFF_SIGN) & 0xFFFFull) + + +// CR3 +#define CR3_PWT (1ull << 3ull) +#define CR3_PCD (1ull << 4ull) +#define CR3_ADDR_SHIFT 12ull +#define CR3_ERASE (~(maxneg << CR3_ADDR_SHIFT)) + +#define CR3GetAddr(x) ((x >> CR3_ADDR_SHIFT) & maxneg) +#define CR3SetAddr(x) ((x & maxneg) << CR3_ADDR_SHIFT) + +// Page Entry +#define PE_P (1ull << 0ull) +#define PE_RW (1ull << 1ull) +#define PE_US (1ull << 2ull) +#define PE_PWT (1ull << 3ull) +#define PE_PCD (1ull << 4ull) +#define PE_A (1ull << 5ull) +#define PE_D (1ull << 6ull) +#define PE_PS (1ull << 7ull) +#define PE_G (1ull << 8ull) +#define PE_BA (1ull << 12ull) +#define PE_NX (1ull << 63ull) +#define PE_ADDR_SHIFT 12ull +#define PE_ERASE (~(maxneg << PE_ADDR_SHIFT)) + +#define MaskTable(x) (x & maxneg) +#define MaskPhyAddr(x) (x & maxnegcomp) +#define SetAddr(x) (x << PE_ADDR_SHIFT) +#define GetAddr(x) (x >> PE_ADDR_SHIFT) +//#define GetAddr(x) (x & ~0xFFFull) + + + +// PML4E + +typedef struct +{ + uint64_t P:1; // present bit + uint64_t RW:1; // read write (if 0 write protected) + uint64_t US:1; // user/supervisor if 0 no user mode access + uint64_t PWT:1; // page level write though + uint64_t PCD:1; // page level cache disable + uint64_t A:1; // accesed + uint64_t PS:1; // value must be 1 for 1GB pages + uint64_t MBZ:2; + uint64_t AVL:3; + uint64_t PDPBA:40; // physical address of the table pointed by this entry + uint64_t available:11; // need to look into what values go here + uint64_t NX:1; // execute disable +} s_PML4E; + + + +// PDPE + +typedef struct +{ + uint64_t P:1; + uint64_t RW:1; + uint64_t US:1; + uint64_t PWT:1; + uint64_t PCD:1; + uint64_t A:1; + uint64_t PS:1; // value must be 1 for 2MB pages + uint64_t zero:1; // zero + uint64_t MBZ:1; + uint64_t AVL:3; + uint64_t PDBA:40; + uint64_t available:11; + uint64_t NX:1; +} s_PDPE; + +// PDE + +typedef struct +{ + uint64_t P:1; + uint64_t RW:1; + uint64_t US:1; + uint64_t PWT:1; + uint64_t PCD:1; + uint64_t A:1; + uint64_t ignored1:1; + uint64_t zero:1; + uint64_t ignored2:1; + uint64_t AVL:3; + uint64_t PTBA:40; + uint64_t available:11; + uint64_t NX:1; +} s_PDE; + +// PTE + +typedef struct +{ + uint64_t P:1; + uint64_t RW:1; + uint64_t US:1; + uint64_t PWT:1; + uint64_t PCD:1; + uint64_t A:1; + uint64_t D:1; + uint64_t PAT:1; + uint64_t G:1; + uint64_t AVL:3; + uint64_t PPBA:40; + uint64_t available:11; + uint64_t NX:1; +} s_PTE; + +typedef struct +{ + uint64_t offset:12; + uint64_t PT:9; + uint64_t PD:9; + uint64_t PDP:9; + uint64_t PML4:9; + uint64_t sign:16; +} s_VPTR; + +#endif // PAGING_STRUCT_H + |
