mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Many of the privileged CSRs exist in a supervisor and machine version that are used very similarly. Provide versions of the CSR names and fields that map to either the S-mode or M-mode variant depending on a new CONFIG_RISCV_M_MODE kconfig symbol. Contains contributions from Damien Le Moal <Damien.LeMoal@wdc.com> and Paul Walmsley <paul.walmsley@sifive.com>. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Thomas Gleixner <tglx@linutronix.de> # for drivers/clocksource, drivers/irqchip [paul.walmsley@sifive.com: updated to apply] Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com>
		
			
				
	
	
		
			24 lines
		
	
	
	
		
			539 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			539 B
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
						|
/*
 | 
						|
 * Copyright (C) 2009 Sunplus Core Technology Co., Ltd.
 | 
						|
 *  Lennox Wu <lennox.wu@sunplusct.com>
 | 
						|
 *  Chen Liqin <liqin.chen@sunplusct.com>
 | 
						|
 * Copyright (C) 2013 Regents of the University of California
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
#include <linux/extable.h>
 | 
						|
#include <linux/module.h>
 | 
						|
#include <linux/uaccess.h>
 | 
						|
 | 
						|
int fixup_exception(struct pt_regs *regs)
 | 
						|
{
 | 
						|
	const struct exception_table_entry *fixup;
 | 
						|
 | 
						|
	fixup = search_exception_tables(regs->epc);
 | 
						|
	if (fixup) {
 | 
						|
		regs->epc = fixup->fixup;
 | 
						|
		return 1;
 | 
						|
	}
 | 
						|
	return 0;
 | 
						|
}
 |