ARMv8: SError exception handling in PSCI exception vectors
Allow platform vendors to handle SError interrupt exceptions from ARMv8 PSCI exception vectors by overriding this weak function 'plat_error_handler'. Signed-off-by: Chee Hong Ang <chee.hong.ang@intel.com>
This commit is contained in:
		
							parent
							
								
									c0f3296f83
								
							
						
					
					
						commit
						eb13dddd2c
					
				|  | @ -236,6 +236,28 @@ handle_sync: | ||||||
| 
 | 
 | ||||||
| 	b	unhandled_exception | 	b	unhandled_exception | ||||||
| 
 | 
 | ||||||
|  | #ifdef CONFIG_ARMV8_EA_EL3_FIRST | ||||||
|  | /* | ||||||
|  |  * Override this function if custom error handling is | ||||||
|  |  * needed for asynchronous aborts | ||||||
|  |  */ | ||||||
|  | ENTRY(plat_error_handler) | ||||||
|  | 	ret | ||||||
|  | ENDPROC(plat_error_handler) | ||||||
|  | .weak plat_error_handler
 | ||||||
|  | 
 | ||||||
|  | handle_error: | ||||||
|  | 	bl	psci_get_cpu_id | ||||||
|  | 	bl	psci_get_cpu_stack_top | ||||||
|  | 	mov	x9, #1 | ||||||
|  | 	msr	spsel, x9 | ||||||
|  | 	mov	sp, x0 | ||||||
|  | 
 | ||||||
|  | 	bl	plat_error_handler	/* Platform specific error handling */ | ||||||
|  | deadloop: | ||||||
|  | 	b	deadloop		/* Never return */ | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| 	.align	11
 | 	.align	11
 | ||||||
| 	.globl	el3_exception_vectors
 | 	.globl	el3_exception_vectors
 | ||||||
| el3_exception_vectors: | el3_exception_vectors: | ||||||
|  | @ -261,7 +283,11 @@ el3_exception_vectors: | ||||||
| 	.align	7
 | 	.align	7
 | ||||||
| 	b	unhandled_exception	/* FIQ, Lower EL using AArch64 */ | 	b	unhandled_exception	/* FIQ, Lower EL using AArch64 */ | ||||||
| 	.align	7
 | 	.align	7
 | ||||||
|  | #ifdef CONFIG_ARMV8_EA_EL3_FIRST | ||||||
|  | 	b	handle_error		/* SError, Lower EL using AArch64 */ | ||||||
|  | #else | ||||||
| 	b	unhandled_exception	/* SError, Lower EL using AArch64 */ | 	b	unhandled_exception	/* SError, Lower EL using AArch64 */ | ||||||
|  | #endif | ||||||
| 	.align	7
 | 	.align	7
 | ||||||
| 	b	unhandled_exception	/* Sync, Lower EL using AArch32 */ | 	b	unhandled_exception	/* Sync, Lower EL using AArch32 */ | ||||||
| 	.align	7
 | 	.align	7
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue