Skip to content

Commit 61bf7e9

Browse files
committed
nrf_sdh: Update irq forwarding for compact vector table
Softdevice no longer stores the full vector table. Instead it gived the offsets where the relevant handlers are stored. Signed-off-by: Herman Berget <[email protected]>
1 parent 0948789 commit 61bf7e9

File tree

1 file changed

+12
-20
lines changed

1 file changed

+12
-20
lines changed

subsys/softdevice_handler/irq_forward.s

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
.arch armv8-m.main
1919

2020
#include "irq_connect.h"
21+
#include "nrf_sd_isr_vectors.h"
2122

2223
.section .text.STACK_INTERRUPTS, "x"
2324

@@ -48,11 +49,8 @@ ConsumeOrForwardIRQ:
4849
.globl SVC_Handler
4950
.type SVC_Handler, %function
5051
SVC_Handler:
52+
LDR R0, =SOFTDEVICE_SVC_HANDLER_OFFSET
5153
ForwardIRQ_ForwardToSoftDevice:
52-
/* Fetch current exception number */
53-
MRS R0, IPSR
54-
/* Get offset into exception vector (multiplying by 4) */
55-
LSLS R0, R0, #2
5654
/* SoftDevice interrupt vector is located in softdevice_vector_forward_address */
5755
LDR R1, =softdevice_vector_forward_address
5856
LDR R1, [R1]
@@ -70,10 +68,7 @@ ForwardIRQ_ForwardToSoftDevice:
7068
.globl CallSoftDeviceResetHandler
7169
.type CallSoftDeviceResetHandler, %function
7270
CallSoftDeviceResetHandler:
73-
/* Fetch current exception number */
74-
MOV R0, #1
75-
/* Get offset into exception vector (multiplying by 4) */
76-
LSLS R0, R0, #2
71+
LDR R0, =SOFTDEVICE_RESET_HANDLER_OFFSET
7772
/* SoftDevice interrupt vector is located in softdevice_vector_forward_address */
7873
LDR R1, =softdevice_vector_forward_address
7974
LDR R1, [R1]
@@ -92,6 +87,7 @@ CallSoftDeviceResetHandler:
9287
.type HardFault_Handler, "function"
9388
HardFault_Handler:
9489
LDR R3, =C_HardFault_Handler
90+
LDR R0, =SOFTDEVICE_HARDFAULT_HANDLER_OFFSET
9591
LDR R1, =ConsumeOrForwardIRQ
9692
BX R1
9793

@@ -102,6 +98,7 @@ HardFault_Handler:
10298
.type CLOCK_POWER_IRQHandler, "function"
10399
CLOCK_POWER_IRQHandler:
104100
LDR R3, =C_POWER_CLOCK_Handler
101+
LDR R0, =SOFTDEVICE_CLOCK_POWER_IRQHANDLER_OFFSET
105102
LDR R1, =ConsumeOrForwardIRQ
106103
BX R1
107104

@@ -112,6 +109,7 @@ CLOCK_POWER_IRQHandler:
112109
.type RADIO_0_IRQHandler, "function"
113110
RADIO_0_IRQHandler:
114111
LDR R3, =C_RADIO_Handler
112+
LDR R0, =SOFTDEVICE_RADIO_0_IRQHANDLER_OFFSET
115113
LDR R1, =ConsumeOrForwardIRQ
116114
BX R1
117115

@@ -122,6 +120,7 @@ RADIO_0_IRQHandler:
122120
.type TIMER10_IRQHandler, "function"
123121
TIMER10_IRQHandler:
124122
LDR R3, =C_TIMER0_Handler
123+
LDR R0, =SOFTDEVICE_TIMER10_IRQHANDLER_OFFSET
125124
LDR R1, =ConsumeOrForwardIRQ
126125
BX R1
127126

@@ -132,6 +131,7 @@ TIMER10_IRQHandler:
132131
.type GRTC_3_IRQHandler, "function"
133132
GRTC_3_IRQHandler:
134133
LDR R3, =C_RTC0_Handler
134+
LDR R0, =SOFTDEVICE_GRTC_3_IRQHANDLER_OFFSET
135135
LDR R1, =ConsumeOrForwardIRQ
136136
BX R1
137137

@@ -142,6 +142,7 @@ GRTC_3_IRQHandler:
142142
.type CRACEN_IRQHandler, "function"
143143
CRACEN_IRQHandler:
144144
LDR R3, =C_RNG_Handler
145+
LDR R0, =SOFTDEVICE_CRACEN_IRQHANDLER_OFFSET
145146
LDR R1, =ConsumeOrForwardIRQ
146147
BX R1
147148

@@ -152,6 +153,7 @@ CRACEN_IRQHandler:
152153
.type ECB00_IRQHandler, "function"
153154
ECB00_IRQHandler:
154155
LDR R3, =C_ECB_Handler
156+
LDR R0, =SOFTDEVICE_ECB00_IRQHANDLER_OFFSET
155157
LDR R1, =ConsumeOrForwardIRQ
156158
BX R1
157159

@@ -162,6 +164,7 @@ ECB00_IRQHandler:
162164
.type AAR00_CCM00_IRQHandler, "function"
163165
AAR00_CCM00_IRQHandler:
164166
LDR R3, =C_CCM_Handler
167+
LDR R0, =SOFTDEVICE_AAR00_CCM00_IRQHANDLER_OFFSET
165168
LDR R1, =ConsumeOrForwardIRQ
166169
BX R1
167170

@@ -172,20 +175,9 @@ AAR00_CCM00_IRQHandler:
172175
.type SWI00_IRQHandler, "function"
173176
SWI00_IRQHandler:
174177
LDR R3, =C_SIGNALLING_Handler
178+
LDR R0, =SOFTDEVICE_SWI00_IRQHANDLER_OFFSET
175179
LDR R1, =ConsumeOrForwardIRQ
176180
BX R1
177181

178-
#ifdef INCLUDE_FEATURE_MWU
179-
.thumb
180-
.thumb_func
181-
.align 1
182-
.global MWU_IRQHandler
183-
.type MWU_IRQHandler, "function"FEATURE_MWU
184-
MWU_IRQHandler:
185-
LDR R3, =C_MWU_Handler
186-
LDR R1, =ConsumeOrForwardIRQ
187-
BX R1
188-
#endif
189-
190182
.balign
191183
.end /* End of file */

0 commit comments

Comments
 (0)