summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/lm3s69xx/0005-Evil-hack-for-BASEPRI-BASEPRI_MAX.patch
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/lm3s69xx/0005-Evil-hack-for-BASEPRI-BASEPRI_MAX.patch')
-rw-r--r--c/src/lib/libbsp/arm/lm3s69xx/0005-Evil-hack-for-BASEPRI-BASEPRI_MAX.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/lm3s69xx/0005-Evil-hack-for-BASEPRI-BASEPRI_MAX.patch b/c/src/lib/libbsp/arm/lm3s69xx/0005-Evil-hack-for-BASEPRI-BASEPRI_MAX.patch
new file mode 100644
index 0000000000..d9b8afdd76
--- /dev/null
+++ b/c/src/lib/libbsp/arm/lm3s69xx/0005-Evil-hack-for-BASEPRI-BASEPRI_MAX.patch
@@ -0,0 +1,49 @@
+From ee20f52f56b076e71f617e4e3cfe413bea73b824 Mon Sep 17 00:00:00 2001
+From: Sebastian Huber <sebastian.huber@embedded-brains.de>
+Date: Fri, 16 Sep 2011 21:28:21 +0200
+Subject: [PATCH 5/6] Evil hack for BASEPRI/BASEPRI_MAX.
+
+---
+ target-arm/helper.c | 11 +++++++++++
+ 1 files changed, 11 insertions(+), 0 deletions(-)
+
+diff --git a/target-arm/helper.c b/target-arm/helper.c
+index 2fd45c4..d5fc9d3 100644
+--- a/target-arm/helper.c
++++ b/target-arm/helper.c
+@@ -1997,7 +1997,11 @@ uint32_t HELPER(v7m_mrs)(CPUState *env, uint32_t reg)
+ return (env->uncached_cpsr & CPSR_I) != 0;
+ case 17: /* BASEPRI */
+ case 18: /* BASEPRI_MAX */
++ /* FIXME */
++ return (env->uncached_cpsr & CPSR_I) != 0;
++#if 0
+ return env->v7m.basepri;
++#endif
+ case 19: /* FAULTMASK */
+ return (env->uncached_cpsr & CPSR_F) != 0;
+ case 20: /* CONTROL */
+@@ -2052,6 +2056,12 @@ void HELPER(v7m_msr)(CPUState *env, uint32_t reg, uint32_t val)
+ env->uncached_cpsr &= ~CPSR_I;
+ break;
+ case 17: /* BASEPRI */
++ case 18: /* BASEPRI_MAX */
++ if (val)
++ env->uncached_cpsr |= CPSR_I;
++ else
++ env->uncached_cpsr &= ~CPSR_I;
++#if 0
+ env->v7m.basepri = val & 0xff;
+ break;
+ case 18: /* BASEPRI_MAX */
+@@ -2059,6 +2069,7 @@ void HELPER(v7m_msr)(CPUState *env, uint32_t reg, uint32_t val)
+ if (val != 0 && (val < env->v7m.basepri || env->v7m.basepri == 0))
+ env->v7m.basepri = val;
+ break;
++#endif
+ case 19: /* FAULTMASK */
+ if (val & 1)
+ env->uncached_cpsr |= CPSR_F;
+--
+1.7.1
+