diff --git a/tests/test-progs/chdir-print/Makefile b/tests/test-progs/chdir-print/Makefile
deleted file mode 100644
index 6a357d5..0000000
--- a/tests/test-progs/chdir-print/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-
-CPP := g++
-
-TEST_OBJS := chdir-print.o
-TEST_PROGS := $(TEST_OBJS:.o=)
-
-# ==== Rules ==================================================================
-
-.PHONY: default clean
-
-default: $(TEST_PROGS)
-
-clean:
-	$(RM)  $(TEST_OBJS) $(TEST_PROGS)
-
-$(TEST_PROGS): $(TEST_OBJS)
-	$(CPP)  -static -o $@  $@.o
-
-%.o: %.c Makefile
-	$(CPP) -c -o $@ $*.c -msse3
diff --git a/tests/test-progs/chdir-print/README.txt b/tests/test-progs/chdir-print/README.txt
deleted file mode 100644
index b1e9213..0000000
--- a/tests/test-progs/chdir-print/README.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-# example test compile and run parameters
-# Note: the absolute path to the chdir-print binary should be specified
-# in the run command even if running from the same folder. This is needed
-# because chdir is executed before triggering a clone for the file read,
-# and the cloned process won't be able to find the executable if a relative
-# path is provided.
-
-# compile examples
-scons --default=X86 ./build/X86/gem5.opt PROTOCOL=MOESI_hammer
-scons --default=X86 ./build/X86/gem5.opt PROTOCOL=MESI_Three_Level
-
-# run parameters
-<GEM5_ROOT>/build/X86/gem5.opt <GEM5_ROOT>/configs/example/se.py -c <GEM5_ROOT>/tests/test-progs/chdir-print/chdir-print -n2 --ruby
-
-
-# example successful output for MESI_Three_Level:
-
-<...>
-
-**** REAL SIMULATION ****
-info: Entering event queue @ 0.  Starting simulation...
-warn: Replacement policy updates recently became the responsibility of SLICC state machines. Make sure to setMRU() near callbacks in .sm files!
-cwd: /proj/research_simu/users/jalsop/gem5-mem_dif_debug/tests/test-progs/chdir-print/
-cwd: /proc
-
-<...>
-
-processor       : 0
-vendor_id       : Generic
-cpu family      : 0
-model           : 0
-model name      : Generic
-stepping        : 0
-cpu MHz         : 2000
-cache size:     : 2048K
-physical id     : 0
-siblings        : 2
-core id         : 0
-cpu cores       : 2
-fpu             : yes
-fpu exception   : yes
-cpuid level     : 1
-wp              : yes
-flags           : fpu
-cache alignment : 64
-
-processor       : 1
-vendor_id       : Generic
-cpu family      : 0
-model           : 0
-model name      : Generic
-stepping        : 0
-cpu MHz         : 2000
-cache size:     : 2048K
-physical id     : 0
-siblings        : 2
-core id         : 1
-cpu cores       : 2
-fpu             : yes
-fpu exception   : yes
-cpuid level     : 1
-wp              : yes
-flags           : fpu
-cache alignment : 64
-
-SUCCESS
-Exiting @ tick 2694923000 because exiting with last active thread context
diff --git a/tests/test-progs/chdir-print/chdir-print.c b/tests/test-progs/chdir-print/chdir-print.c
deleted file mode 100644
index 71747b6..0000000
--- a/tests/test-progs/chdir-print/chdir-print.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2011-2015 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * For use for simulation and test purposes only
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <linux/limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-const int BUFFER_SIZE = 64;
-
-// Tests the functionality of RegisterFilesystem
-int main(void)
-{
-    char *cwd = getcwd(NULL, PATH_MAX);
-    printf("cwd: %s\n", cwd);
-    free(cwd);
-
-    chdir("/proc");
-
-    cwd = getcwd(NULL, PATH_MAX);
-    printf("cwd: %s\n", cwd);
-    free(cwd);
-
-    FILE *fp;
-    char buffer[BUFFER_SIZE];
-
-    bool found_procline = false;
-    fp = popen("cat cpuinfo", "r");
-    if (fp != NULL) {
-        while (fgets(buffer, BUFFER_SIZE, fp) != NULL) {
-            printf("%s", buffer);
-            if (strstr(buffer, "processor")) {
-                found_procline = true;
-            }
-        }
-        pclose(fp);
-    }
-
-    if (found_procline) {
-        printf("SUCCESS\n");
-        return EXIT_SUCCESS;
-    }
-
-    printf("FAILURE\n");
-    return EXIT_FAILURE;
-}
diff --git a/tests/test-progs/mwait/Makefile b/tests/test-progs/mwait/Makefile
deleted file mode 100644
index 6b88811..0000000
--- a/tests/test-progs/mwait/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-
-CPP := g++
-
-TEST_OBJS := mwait.o
-TEST_PROGS := $(TEST_OBJS:.o=)
-
-# ==== Rules ==================================================================
-
-.PHONY: default clean
-
-default: $(TEST_PROGS) 
-
-clean:
-	$(RM)  $(TEST_OBJS) $(TEST_PROGS)
-
-$(TEST_PROGS): $(TEST_OBJS)
-	$(CPP)  -static -o $@  $@.o pthread.o
-
-%.o: %.c Makefile
-	$(CPP) -c -o $@ $*.c -msse3
diff --git a/tests/test-progs/mwait/mwait.c b/tests/test-progs/mwait/mwait.c
deleted file mode 100644
index e1b2035..0000000
--- a/tests/test-progs/mwait/mwait.c
+++ /dev/null
@@ -1,73 +0,0 @@
-// author: Marc Orr
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#define NUM_TRIES   1000
-
-// Make sure that flags and wait sit in different cache lines
-volatile int flags[10];
-volatile int wait[10];
-
-pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-
-void *DoWork1(void *threadid)
-{
-    flags[0] = flags[0] + 1;
-    wait[0] = 0;
-    pthread_exit(0);
-}
-
-void *DoWork2(void *threadid)
-{
-    pthread_mutex_lock (&mutex);
-    flags[0] = flags[0] + 1;
-    pthread_mutex_unlock (&mutex);
-    pthread_exit(0);
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// Program main
-////////////////////////////////////////////////////////////////////////////////
-int main( int argc, char** argv)
-{
-    // stuff for thread
-    pthread_t threads[1];
-
-    // initialize global variables
-    flags[0] = 0;
-    wait[0] = 1;
-
-    // monitor (via gcc intrinsic)
-    __builtin_ia32_monitor ((void *)&flags, 0, 0);
-
-    // invalidate flags in this cpu's cache
-    pthread_create(&threads[0], NULL, DoWork1, NULL);
-    while (wait[0]);
-
-    // launch thread to invalidate address being monitored
-    pthread_create(&threads[0], NULL, DoWork2, NULL);
-
-    // wait for other thread to modify flags
-    int mwait_cnt = 0;
-    do {
-        pthread_mutex_lock (&mutex);
-        if (flags[0] != 2) {
-            pthread_mutex_unlock (&mutex);
-            __builtin_ia32_mwait(0, 0);
-        } else {
-            pthread_mutex_unlock (&mutex);
-        }
-        mwait_cnt++;
-    } while (flags[0] != 2 && mwait_cnt < NUM_TRIES);
-
-    // test may hang if mwait is not working
-    if (flags[0]==2) {
-        printf("mwait regression PASSED, flags[0] = %d\n", flags[0]);
-    } else {
-        printf("mwait regression FAILED, flags[0] = %d\n", flags[0]);
-    }
-
-    return 0;
-}
diff --git a/tests/test-progs/page-access-wrap/Makefile b/tests/test-progs/page-access-wrap/Makefile
deleted file mode 100644
index 41e7a18..0000000
--- a/tests/test-progs/page-access-wrap/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-
-CPP := g++
-
-TEST_OBJS := page-access-wrap.o
-TEST_PROGS := $(TEST_OBJS:.o=)
-
-# ==== Rules ==================================================================
-
-.PHONY: default clean
-
-default: $(TEST_PROGS)
-
-clean:
-	$(RM)  $(TEST_OBJS) $(TEST_PROGS)
-
-$(TEST_PROGS): $(TEST_OBJS)
-	$(CPP)  -static -o $@  $@.o
-
-%.o: %.c Makefile
-	$(CPP) -c -o $@ $*.c -msse3
diff --git a/tests/test-progs/page-access-wrap/page-access-wrap.cpp b/tests/test-progs/page-access-wrap/page-access-wrap.cpp
deleted file mode 100644
index 6e536aa..0000000
--- a/tests/test-progs/page-access-wrap/page-access-wrap.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2019 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * For use for simulation and test purposes only
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/mman.h>
-
-#include <cstdint>
-#include <cstdio>
-#include <cstdlib>
-#include <ctime>
-
-int main(void)
-{
-    uint64_t page_size = 0x1000;
-    uint64_t num_pages = 0x10000;
-    uint64_t length = page_size * num_pages;
-
-    void *raw = mmap(NULL, length, PROT_WRITE, MAP_ANON|MAP_PRIVATE, -1, 0);
-    uint8_t *mem = reinterpret_cast<uint8_t*>(raw);
-
-    srand(0xABCD);
-
-    uint64_t last_byte = page_size - 1;
-    uint64_t page_boundaries = num_pages - 1;
-
-    for (int i = 0; i < 2000; i++) {
-        uint64_t random_boundary = rand() % page_boundaries;
-        uint64_t boundary_offset = random_boundary * page_size;
-        uint64_t boundary_last_byte = boundary_offset + last_byte;
-        uint32_t *poke = reinterpret_cast<uint32_t*>(mem + boundary_last_byte);
-        printf("%p\n", poke);
-        uint32_t value = *poke;
-    }
-
-    return 0;
-}
diff --git a/tests/test-progs/stack-print/bin/x86/linux/stack-print b/tests/test-progs/stack-print/bin/x86/linux/stack-print
deleted file mode 100755
index e40dc48..0000000
--- a/tests/test-progs/stack-print/bin/x86/linux/stack-print
+++ /dev/null
Binary files differ
diff --git a/tests/test-progs/stack-print/src/stack-print.c b/tests/test-progs/stack-print/src/stack-print.c
deleted file mode 100644
index 9fbf962..0000000
--- a/tests/test-progs/stack-print/src/stack-print.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * Copyright (c) 2017 Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * For use for simulation and test purposes only
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * Author: Brandon Potter
- */
-
-#include <elf.h>
-#include <stdio.h>
-
-int main(int argc, char **argv, char **envp)
-{
-    int i;
-
-    printf("%p: argc: [%d]\n", &argc, argc);
-    printf("\n");
-
-    for (i = 0; i < argc; i++)
-        printf("%p: argv[%d]: [%s]\n", &argv[i], i, argv[i]);
-    printf("\n");
-
-    i = 0;
-    while (envp[i] != NULL) {
-        printf("%p: envp[%d]: [%s]\n", &envp[i], i, envp[i]);
-        i++;
-    }
-    printf("\n");
-
-    Elf64_auxv_t *auxv = (Elf64_auxv_t*)&envp[--i];
-    while (auxv++) {
-        char *type;
-        switch(auxv->a_type) {
-            case AT_IGNORE:
-                type = "AT_IGNORE";
-                break;
-            case AT_EXECFD:
-                type = "AT_EXECFD";
-                break;
-            case AT_PHDR:
-                type = "AT_PHDR";
-                break;
-            case AT_PHENT:
-                type = "AT_PHENT";
-                break;
-            case AT_PHNUM:
-                type = "AT_PHNUM";
-                break;
-            case AT_PAGESZ:
-                type = "AT_PAGESZ";
-                break;
-            case AT_BASE:
-                type = "AT_BASE";
-                break;
-            case AT_FLAGS:
-                type = "AT_FLAGS";
-                break;
-            case AT_ENTRY:
-                type = "AT_ENTRY";
-                break;
-            case AT_NOTELF:
-                type = "AT_NOTELF";
-                break;
-            case AT_UID:
-                type = "AT_UID";
-                break;
-            case AT_EUID:
-                type = "AT_EUID";
-                break;
-            case AT_GID:
-                type = "AT_GID";
-                break;
-            case AT_EGID:
-                type = "AT_EGID";
-                break;
-            case AT_CLKTCK:
-                type = "AT_CLKTCK";
-                break;
-            case AT_PLATFORM:
-                type = "AT_PLATFORM";
-                break;
-            case AT_HWCAP:
-                type = "AT_HWCAP";
-                break;
-            case AT_FPUCW:
-                type = "AT_FPUCW";
-                break;
-            case AT_DCACHEBSIZE:
-                type = "AT_DCACHEBSIZE";
-                break;
-            case AT_ICACHEBSIZE:
-                type = "AT_ICACHEBSIZE";
-                break;
-            case AT_UCACHEBSIZE:
-                type = "AT_UCACHEBSIZE";
-                break;
-            case AT_IGNOREPPC:
-                type = "AT_IGNOREPPC";
-                break;
-            case AT_SECURE:
-                type = "AT_SECURE";
-                break;
-            case AT_BASE_PLATFORM:
-                type = "AT_BASE_PLATFORM";
-                break;
-            case AT_RANDOM:
-                type = "AT_RANDOM";
-                break;
-            case AT_EXECFN:
-                type = "AT_EXECFN";
-                break;
-            case AT_SYSINFO:
-                type = "AT_SYSINFO";
-                break;
-            case AT_SYSINFO_EHDR:
-                type = "AT_SYSINFO_EHDR";
-                break;
-            case AT_L1I_CACHESHAPE:
-                type = "AT_L1I_CACHESHAPE";
-                break;
-            case AT_L1D_CACHESHAPE:
-                type = "AT_L1D_CACHESHAPE";
-                break;
-            case AT_L2_CACHESHAPE:
-                type = "AT_L2_CACHESHAPE";
-                break;
-            case AT_L3_CACHESHAPE:
-                type = "AT_L3_CACHESHAPE";
-                break;
-            case AT_NULL:
-            default:
-                printf("\n");
-                return 0;
-        }
-        printf("%p: %s: [%lx]\n", auxv, type, auxv->a_un.a_val);
-    }
-}
-
