summaryrefslogtreecommitdiffstats
path: root/recipes-jailhouse/freertos-cell/freertos-cell/Remove-check-of-interrupt-mask.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-jailhouse/freertos-cell/freertos-cell/Remove-check-of-interrupt-mask.patch')
-rw-r--r--recipes-jailhouse/freertos-cell/freertos-cell/Remove-check-of-interrupt-mask.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/recipes-jailhouse/freertos-cell/freertos-cell/Remove-check-of-interrupt-mask.patch b/recipes-jailhouse/freertos-cell/freertos-cell/Remove-check-of-interrupt-mask.patch
new file mode 100644
index 0000000..a343eff
--- /dev/null
+++ b/recipes-jailhouse/freertos-cell/freertos-cell/Remove-check-of-interrupt-mask.patch
@@ -0,0 +1,60 @@
1From 1b1d05fa9e086e7161f8ef2df43874a3712ff8e0 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Anders=20T=C3=B6rnqvist?= <anders.tornqvist@retotech.se>
3Date: Fri, 27 Jan 2017 16:20:29 +0100
4Subject: [PATCH 1/2] Remove check of interrupt mask check that probably is not
5 needed in recent versions of Jailhouse. This check causes FreeRTOS to hang
6 for ever in the while loop. The commit in Jailhouse that is close to this is
7 902ee9cfd32652f6926da709b259d46a68bdebf4
8
9---
10 .../Source/portable/GCC/ARM_A7jailhouse/port.c | 34 ----------------------
11 1 file changed, 34 deletions(-)
12
13diff --git a/freertos/Source/portable/GCC/ARM_A7jailhouse/port.c b/freertos/Source/portable/GCC/ARM_A7jailhouse/port.c
14index dd739c3..6084939 100644
15--- a/freertos/Source/portable/GCC/ARM_A7jailhouse/port.c
16+++ b/freertos/Source/portable/GCC/ARM_A7jailhouse/port.c
17@@ -323,40 +323,6 @@ BaseType_t xPortStartScheduler( void )
18 {
19 uint32_t ulAPSR;
20
21- #if( configASSERT_DEFINED == 1 )
22- {
23- volatile uint32_t ulOriginalPriority;
24- volatile uint8_t * const pucFirstUserPriorityRegister = ( volatile uint8_t * const ) ( gic_v2_gicd_get_address() + portINTERRUPT_PRIORITY_REGISTER_OFFSET );
25- volatile uint8_t ucMaxPriorityValue;
26-
27- /* Determine how many priority bits are implemented in the GIC.
28-
29- Save the interrupt priority value that is about to be clobbered. */
30- ulOriginalPriority = *pucFirstUserPriorityRegister;
31-
32- /* Determine the number of priority bits available. First write to
33- all possible bits. */
34- *pucFirstUserPriorityRegister = portMAX_8_BIT_VALUE;
35-
36- /* Read the value back to see how many bits stuck. */
37- ucMaxPriorityValue = *pucFirstUserPriorityRegister;
38-
39- /* Shift to the least significant bits. */
40- while( ( ucMaxPriorityValue & portBIT_0_SET ) != portBIT_0_SET )
41- {
42- ucMaxPriorityValue >>= ( uint8_t ) 0x01;
43- }
44-
45- /* Sanity check configUNIQUE_INTERRUPT_PRIORITIES matches the read
46- value. */
47- configASSERT( ucMaxPriorityValue == portLOWEST_INTERRUPT_PRIORITY );
48-
49- /* Restore the clobbered interrupt priority register to its original
50- value. */
51- *pucFirstUserPriorityRegister = ulOriginalPriority;
52- }
53- #endif /* conifgASSERT_DEFINED */
54-
55 ulICCIAR = ulICCEOIR = ulICCPMR = (uint32_t) gic_v2_gicc_get_address();
56 ulICCIAR += portICCIAR_INTERRUPT_ACKNOWLEDGE_OFFSET;
57 ulICCEOIR += portICCEOIR_END_OF_INTERRUPT_OFFSET;
58--
591.9.1
60