diff options
author | Michael Davidsaver <mdavidsaver@gmail.com> | 2015-11-28 18:43:45 -0500 |
---|---|---|
committer | Michael Davidsaver <mdavidsaver@gmail.com> | 2015-11-28 18:43:45 -0500 |
commit | 6f925a6994f28856ff704697ec3847f10d75067c (patch) | |
tree | a0665b398d9eafa8d75622642e18b7531ed8d258 | |
parent | 223fb1997c9af04aa5da3ed3ceed6642e39099d5 (diff) |
drop broken test2
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | test2.c | 107 |
2 files changed, 0 insertions, 109 deletions
@@ -13,7 +13,6 @@ LDFLAGS=-static CFLAGS+=-Os all: test1-kern.bin -all: test2-kern.bin all: test3-kern.bin all: test4-kern.bin all: test5-kern.bin @@ -26,7 +25,6 @@ all: test11-kern.bin all: test12-kern.bin test1-kern.elf: cortexm.ld common.ld setup.o init-m.o test1.o -test2-kern.elf: cortexm.ld common.ld setup.o init-m.o test2.o test3-kern.elf: cortexm.ld common.ld setup.o init-m.o test3.o test4-kern.elf: cortexm.ld common.ld setup.o init-m.o test4.o test5-kern.elf: cortexm.ld common.ld setup.o init-m.o test5.o diff --git a/test2.c b/test2.c deleted file mode 100644 index 2cf26aa..0000000 --- a/test2.c +++ /dev/null @@ -1,107 +0,0 @@ -/* Test exception escalation in armv7-m - */ -#include "armv7m.h" - -static int test; - -void hard(uint32_t *sp) -{ - uint32_t temp; - switch(test) { - case 0: - __asm__ ("ldr %0, =recover0" : "=r"(temp) ::); - puts("2. HardFault\n"); - break; - case 1: - __asm__ ("ldr %0, =recover1" : "=r"(temp) ::); - puts("5. HardFault\n"); - break; - case 3: - __asm__ ("ldr %0, =recover4" : "=r"(temp) ::); - puts("12. HardFault\n"); - break; - default: - puts("HardFault Fail\n"); - abort(); - } - sp[6] = temp; -} - -void usage(uint32_t *sp) -{ - uint32_t temp; - switch(test) { - case 2: - __asm__ ("ldr %0, =recover2" : "=r"(temp) ::); - puts("8. UsageFault\n"); - break; - case 3: - puts("11. UsageFault\n"); - __asm__ ("ldr %0, =recover3" : "=r"(temp) ::); - __asm__ (".word 0xffff; recover4:" :::); - puts("13. Back in usage().\n"); - break; - default: - puts("Fail\n"); - abort(); - } - sp[6] = temp; -} - -static __attribute__((naked)) -void hardx(void) -{ - asm ("mov r0, sp"); // save stack pointer on entry - asm ("b hard"); -} - -static __attribute__((naked)) -void usagex(void) -{ - asm ("mov r0, sp"); // save stack pointer on entry - asm ("b usage"); -} - -void main(void) -{ - run_table.hard = hardx; - run_table.usage = usagex; - __asm__ ("cpsie f" :::); - __asm__ ("cpsid i" :::); - puts("1. Fault to HardFault\n"); - /* this would trigger a usage error, except that - * UsageFault isn't enabled and - * PRIMASK are set - */ - __asm__ (".word 0xffff; recover0:" :::); - puts("3. Back in main\n"); - - out32((void*)0xe000ed24, 1<<18); // enable UsageFault with SHCSR - - test = 1; - puts("4. Fault to HardFault\n"); - __asm__ ("cpsid i" :::); /* FAULTMASK auto-cleared when HardFault returns */ - /* this would trigger a usage error, except that - * FAULTMASK and PRIMASK are set - */ - __asm__ (".word 0xffff; recover1:" :::); - puts("6. Back in main\n"); - - test = 2; - __asm__ ("cpsie i" :::); - puts("7. Faulting to UsageFault\n"); - /* This time really trigger UsageFault - */ - __asm__ (".word 0xffff; recover2:" :::); - puts("9. Back in main\n"); - - test = 3; - puts("10. Faulting to UsageFault then HardFault\n"); - /* This time trigger UsageFault, - * then fault in UsageFault into HardFault - */ - __asm__ (".word 0xffff; recover3:" :::); - puts("14. Back in main 4\n"); - - puts("Done\n"); -} |