| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  *  linux/arch/arm/mm/extable.c | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #include <linux/module.h>
 | 
					
						
							| 
									
										
										
										
											2008-09-06 11:35:55 +01:00
										 |  |  | #include <linux/uaccess.h>
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | int fixup_exception(struct pt_regs *regs) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	const struct exception_table_entry *fixup; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	fixup = search_exception_tables(instruction_pointer(regs)); | 
					
						
							| 
									
										
										
										
											2013-11-04 11:42:29 +01:00
										 |  |  | 	if (fixup) { | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		regs->ARM_pc = fixup->fixup; | 
					
						
							| 
									
										
										
										
											2013-11-04 11:42:29 +01:00
										 |  |  | #ifdef CONFIG_THUMB2_KERNEL
 | 
					
						
							|  |  |  | 		/* Clear the IT state to avoid nasty surprises in the fixup */ | 
					
						
							|  |  |  | 		regs->ARM_cpsr &= ~PSR_IT_MASK; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	return fixup != NULL; | 
					
						
							|  |  |  | } |