diff options
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.patch | 60 |
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 @@ | |||
1 | From 1b1d05fa9e086e7161f8ef2df43874a3712ff8e0 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Anders=20T=C3=B6rnqvist?= <anders.tornqvist@retotech.se> | ||
3 | Date: Fri, 27 Jan 2017 16:20:29 +0100 | ||
4 | Subject: [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 | |||
13 | diff --git a/freertos/Source/portable/GCC/ARM_A7jailhouse/port.c b/freertos/Source/portable/GCC/ARM_A7jailhouse/port.c | ||
14 | index 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 | -- | ||
59 | 1.9.1 | ||
60 | |||