source:
rtems/bsps/arm/lm3s69xx/0003-target-arm-Evil-hack-for-BASEPRI-and-BASEPRI_MAX.patch
@
419d1e9
Last change on this file since 419d1e9 was eb36d11, checked in by Sebastian Huber <sebastian.huber@…>, on 04/25/18 at 13:06:08 | |
---|---|
|
|
File size: 2.4 KB |
-
cpu-exec.c
From 78e85bb79c02b14170c3f39d9bb9cccd4d625890 Mon Sep 17 00:00:00 2001 From: Sebastian Huber <sebastian.huber@embedded-brains.de> Date: Fri, 16 Dec 2011 20:12:29 +0100 Subject: [PATCH 3/4] target-arm: Evil hack for BASEPRI and BASEPRI_MAX This is only a quick and dirty fix to get the ARMv7-M BASEPRI and BASEPRI_MAX feature working. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de> --- cpu-exec.c | 4 ++-- target-arm/helper.c | 12 +++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/cpu-exec.c b/cpu-exec.c index a9fa608..6ca9aab 100644
a b int cpu_exec(CPUState *env) 408 408 We avoid this by disabling interrupts when 409 409 pc contains a magic address. */ 410 410 if (interrupt_request & CPU_INTERRUPT_HARD 411 && ((IS_M(env) && env->regs[15] < 0xfffffff0)412 || !(env->uncached_cpsr & CPSR_I))) {411 && !(env->uncached_cpsr & CPSR_I) 412 && (!IS_M(env) || env->regs[15] < 0xfffffff0)) { 413 413 env->exception_index = EXCP_IRQ; 414 414 do_interrupt(env); 415 415 next_tb = 0; -
target-arm/helper.c
diff --git a/target-arm/helper.c b/target-arm/helper.c index 65f4fbf..be2e6db 100644
a b uint32_t HELPER(v7m_mrs)(CPUState *env, uint32_t reg) 2163 2163 return (env->uncached_cpsr & CPSR_I) != 0; 2164 2164 case 17: /* BASEPRI */ 2165 2165 case 18: /* BASEPRI_MAX */ 2166 return env->v7m.basepri;2166 return (env->uncached_cpsr & CPSR_I) != 0; 2167 2167 case 19: /* FAULTMASK */ 2168 2168 return (env->uncached_cpsr & CPSR_F) != 0; 2169 2169 case 20: /* CONTROL */ … … void HELPER(v7m_msr)(CPUState *env, uint32_t reg, uint32_t val) 2218 2218 env->uncached_cpsr &= ~CPSR_I; 2219 2219 break; 2220 2220 case 17: /* BASEPRI */ 2221 env->v7m.basepri = val & 0xff;2222 break;2223 2221 case 18: /* BASEPRI_MAX */ 2224 val &= 0xff;2225 if (val != 0 && (val < env->v7m.basepri || env->v7m.basepri == 0))2226 env->v7m.basepri = val;2227 break;2222 if (val) 2223 env->uncached_cpsr |= CPSR_I; 2224 else 2225 env->uncached_cpsr &= ~CPSR_I; 2228 2226 case 19: /* FAULTMASK */ 2229 2227 if (val & 1) 2230 2228 env->uncached_cpsr |= CPSR_F;
Note: See TracBrowser
for help on using the repository browser.