Commit 7e3d7613 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm

Pull ARM fixes from Russell King:

 - Fix kgdb breakpoint for Thumb2

 - Fix dependency for BITREVERSE kconfig

 - Fix nommu early_params and __setup returns

* tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm:
  ARM: 9182/1: mmu: fix returns from early_param() and __setup() functions
  ARM: 9178/1: fix unmet dependency on BITREVERSE for HAVE_ARCH_BITREVERSE
  ARM: Fix kgdb breakpoint for Thumb2
parents 92ebf5f9 7b83299e
Loading
Loading
Loading
Loading
+28 −8
Original line number Diff line number Diff line
@@ -154,22 +154,38 @@ static int kgdb_compiled_brk_fn(struct pt_regs *regs, unsigned int instr)
	return 0;
}

static struct undef_hook kgdb_brkpt_hook = {
static struct undef_hook kgdb_brkpt_arm_hook = {
	.instr_mask		= 0xffffffff,
	.instr_val		= KGDB_BREAKINST,
	.cpsr_mask		= MODE_MASK,
	.cpsr_mask		= PSR_T_BIT | MODE_MASK,
	.cpsr_val		= SVC_MODE,
	.fn			= kgdb_brk_fn
};

static struct undef_hook kgdb_compiled_brkpt_hook = {
static struct undef_hook kgdb_brkpt_thumb_hook = {
	.instr_mask		= 0xffff,
	.instr_val		= KGDB_BREAKINST & 0xffff,
	.cpsr_mask		= PSR_T_BIT | MODE_MASK,
	.cpsr_val		= PSR_T_BIT | SVC_MODE,
	.fn			= kgdb_brk_fn
};

static struct undef_hook kgdb_compiled_brkpt_arm_hook = {
	.instr_mask		= 0xffffffff,
	.instr_val		= KGDB_COMPILED_BREAK,
	.cpsr_mask		= MODE_MASK,
	.cpsr_mask		= PSR_T_BIT | MODE_MASK,
	.cpsr_val		= SVC_MODE,
	.fn			= kgdb_compiled_brk_fn
};

static struct undef_hook kgdb_compiled_brkpt_thumb_hook = {
	.instr_mask		= 0xffff,
	.instr_val		= KGDB_COMPILED_BREAK & 0xffff,
	.cpsr_mask		= PSR_T_BIT | MODE_MASK,
	.cpsr_val		= PSR_T_BIT | SVC_MODE,
	.fn			= kgdb_compiled_brk_fn
};

static int __kgdb_notify(struct die_args *args, unsigned long cmd)
{
	struct pt_regs *regs = args->regs;
@@ -210,8 +226,10 @@ int kgdb_arch_init(void)
	if (ret != 0)
		return ret;

	register_undef_hook(&kgdb_brkpt_hook);
	register_undef_hook(&kgdb_compiled_brkpt_hook);
	register_undef_hook(&kgdb_brkpt_arm_hook);
	register_undef_hook(&kgdb_brkpt_thumb_hook);
	register_undef_hook(&kgdb_compiled_brkpt_arm_hook);
	register_undef_hook(&kgdb_compiled_brkpt_thumb_hook);

	return 0;
}
@@ -224,8 +242,10 @@ int kgdb_arch_init(void)
 */
void kgdb_arch_exit(void)
{
	unregister_undef_hook(&kgdb_brkpt_hook);
	unregister_undef_hook(&kgdb_compiled_brkpt_hook);
	unregister_undef_hook(&kgdb_brkpt_arm_hook);
	unregister_undef_hook(&kgdb_brkpt_thumb_hook);
	unregister_undef_hook(&kgdb_compiled_brkpt_arm_hook);
	unregister_undef_hook(&kgdb_compiled_brkpt_thumb_hook);
	unregister_die_notifier(&kgdb_notifier);
}

+2 −0
Original line number Diff line number Diff line
@@ -212,12 +212,14 @@ early_param("ecc", early_ecc);
static int __init early_cachepolicy(char *p)
{
	pr_warn("cachepolicy kernel parameter not supported without cp15\n");
	return 0;
}
early_param("cachepolicy", early_cachepolicy);

static int __init noalign_setup(char *__unused)
{
	pr_warn("noalign kernel parameter not supported without cp15\n");
	return 1;
}
__setup("noalign", noalign_setup);

+0 −1
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ config BITREVERSE
config HAVE_ARCH_BITREVERSE
	bool
	default n
	depends on BITREVERSE
	help
	  This option enables the use of hardware bit-reversal instructions on
	  architectures which support such operations.