ARM: kdgb: use <asm/opcodes.h> for data to be assembled as intruction
The arch_kgdb_breakpoint() function uses an inline assembly directive to assemble a specific instruction using .word. This means the linker will not treat is as an instruction, and therefore incorrectly swap the endian-ness if running BE8. As noted, this code means that kgdb is really only usable on arm32 kernels, and should be made dependant on not being a thumb2 kernel until fixed. However this is not something to be added to this patch. Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk> Reviewed-by: Dave Martin <Dave.Martin@arm.com>
This commit is contained in:
parent
63328070ef
commit
5a8b93fc94
|
@ -11,6 +11,7 @@
|
||||||
#define __ARM_KGDB_H__
|
#define __ARM_KGDB_H__
|
||||||
|
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
|
#include <asm/opcodes.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GDB assumes that we're a user process being debugged, so
|
* GDB assumes that we're a user process being debugged, so
|
||||||
|
@ -41,7 +42,7 @@
|
||||||
|
|
||||||
static inline void arch_kgdb_breakpoint(void)
|
static inline void arch_kgdb_breakpoint(void)
|
||||||
{
|
{
|
||||||
asm(".word 0xe7ffdeff");
|
asm(__inst_arm(0xe7ffdeff));
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void kgdb_handle_bus_error(void);
|
extern void kgdb_handle_bus_error(void);
|
||||||
|
|
Loading…
Reference in New Issue