MIPS: Provide more elevant interface cu2_notifier for CP2 extensions.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: David Daney <ddaney@caviumnetworks.com> Patchwork: https://patchwork.linux-mips.org/patch/1504/
This commit is contained in:
parent
ea7a8463be
commit
4483b15916
|
@ -41,12 +41,8 @@ static int cnmips_cu2_call(struct notifier_block *nfb, unsigned long action,
|
||||||
return NOTIFY_OK; /* Let default notifier send signals */
|
return NOTIFY_OK; /* Let default notifier send signals */
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct notifier_block cnmips_cu2_notifier = {
|
|
||||||
.notifier_call = cnmips_cu2_call,
|
|
||||||
};
|
|
||||||
|
|
||||||
static int cnmips_cu2_setup(void)
|
static int cnmips_cu2_setup(void)
|
||||||
{
|
{
|
||||||
return register_cu2_notifier(&cnmips_cu2_notifier);
|
return cu2_notifier(cnmips_cu2_call, 0);
|
||||||
}
|
}
|
||||||
early_initcall(cnmips_cu2_setup);
|
early_initcall(cnmips_cu2_setup);
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#ifndef __ASM_COP2_H
|
#ifndef __ASM_COP2_H
|
||||||
#define __ASM_COP2_H
|
#define __ASM_COP2_H
|
||||||
|
|
||||||
|
#include <linux/notifier.h>
|
||||||
|
|
||||||
enum cu2_ops {
|
enum cu2_ops {
|
||||||
CU2_EXCEPTION,
|
CU2_EXCEPTION,
|
||||||
CU2_LWC2_OP,
|
CU2_LWC2_OP,
|
||||||
|
@ -20,4 +22,14 @@ enum cu2_ops {
|
||||||
extern int register_cu2_notifier(struct notifier_block *nb);
|
extern int register_cu2_notifier(struct notifier_block *nb);
|
||||||
extern int cu2_notifier_call_chain(unsigned long val, void *v);
|
extern int cu2_notifier_call_chain(unsigned long val, void *v);
|
||||||
|
|
||||||
|
#define cu2_notifier(fn, pri) \
|
||||||
|
({ \
|
||||||
|
static struct notifier_block fn##_nb __cpuinitdata = { \
|
||||||
|
.notifier_call = fn, \
|
||||||
|
.priority = pri \
|
||||||
|
}; \
|
||||||
|
\
|
||||||
|
register_cu2_notifier(&fn##_nb); \
|
||||||
|
})
|
||||||
|
|
||||||
#endif /* __ASM_COP2_H */
|
#endif /* __ASM_COP2_H */
|
||||||
|
|
|
@ -907,11 +907,6 @@ static int default_cu2_call(struct notifier_block *nfb, unsigned long action,
|
||||||
return NOTIFY_OK;
|
return NOTIFY_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct notifier_block default_cu2_notifier = {
|
|
||||||
.notifier_call = default_cu2_call,
|
|
||||||
.priority = 0x80000000, /* Run last */
|
|
||||||
};
|
|
||||||
|
|
||||||
asmlinkage void do_cpu(struct pt_regs *regs)
|
asmlinkage void do_cpu(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
unsigned int __user *epc;
|
unsigned int __user *epc;
|
||||||
|
@ -1734,5 +1729,5 @@ void __init trap_init(void)
|
||||||
|
|
||||||
sort_extable(__start___dbe_table, __stop___dbe_table);
|
sort_extable(__start___dbe_table, __stop___dbe_table);
|
||||||
|
|
||||||
register_cu2_notifier(&default_cu2_notifier);
|
cu2_notifier(default_cu2_call, 0x80000000); /* Run last */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue