aboutsummaryrefslogtreecommitdiffstats
path: root/misc-host/paging-debug
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--misc-host/paging-debug/build-paging-debug-GCC-Debug/Makefile595
-rw-r--r--misc-host/paging-debug/paging-debug/.gitignore73
-rw-r--r--misc-host/paging-debug/paging-debug/bootloader_compat.cpp20
-rw-r--r--misc-host/paging-debug/paging-debug/bootloader_compat.h40
-rw-r--r--misc-host/paging-debug/paging-debug/main.c25
-rw-r--r--misc-host/paging-debug/paging-debug/paging-debug.pro14
-rw-r--r--misc-host/paging-debug/paging-debug/paging.c310
-rw-r--r--misc-host/paging-debug/paging-debug/paging.h17
-rw-r--r--misc-host/paging-debug/paging-debug/paging_struct.h189
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
+