mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-17 01:34:00 +08:00
sh: Make kgdb i-cache flushing less inept.
kgdb had its own ranged I-cache flushing routine that attempted to duplicate the flush_icache_range() functionality, but managed to do an explicit D-cache writeback & invalidate twice on SH-4. This is a no-op for SH-3, and the flush_icache_range() semantics already do what kgdb was feebly attempting to do already, so just move over to that and kill off the wrapper. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
a90f354709
commit
01bd5e9ef2
@ -609,7 +609,7 @@ static short *get_step_address(void)
|
||||
else
|
||||
addr = trap_registers.pc + 2;
|
||||
|
||||
kgdb_flush_icache_range(addr, addr + 2);
|
||||
flush_icache_range(addr, addr + 2);
|
||||
return (short *) addr;
|
||||
}
|
||||
|
||||
@ -632,7 +632,7 @@ static void do_single_step(void)
|
||||
*addr = STEP_OPCODE;
|
||||
|
||||
/* Flush and return */
|
||||
kgdb_flush_icache_range((long) addr, (long) addr + 2);
|
||||
flush_icache_range((long) addr, (long) addr + 2);
|
||||
}
|
||||
|
||||
/* Undo a single step */
|
||||
@ -642,7 +642,7 @@ static void undo_single_step(void)
|
||||
/* Use stepped_address in case we stopped elsewhere */
|
||||
if (stepped_opcode != 0) {
|
||||
*(short*)stepped_address = stepped_opcode;
|
||||
kgdb_flush_icache_range(stepped_address, stepped_address + 2);
|
||||
flush_icache_range(stepped_address, stepped_address + 2);
|
||||
}
|
||||
stepped_opcode = 0;
|
||||
}
|
||||
@ -728,7 +728,7 @@ static void write_mem_msg(int binary)
|
||||
ebin_to_mem(ptr, (char*)addr, length);
|
||||
else
|
||||
hex_to_mem(ptr, (char*)addr, length);
|
||||
kgdb_flush_icache_range(addr, addr + length);
|
||||
flush_icache_range(addr, addr + length);
|
||||
ptr = 0;
|
||||
send_ok_msg();
|
||||
}
|
||||
|
@ -17,7 +17,6 @@
|
||||
#define __KGDB_H
|
||||
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
/* Same as pt_regs but has vbr in place of syscall_nr */
|
||||
struct kgdb_regs {
|
||||
@ -67,17 +66,6 @@ extern int setjmp(jmp_buf __jmpb);
|
||||
/* Forced breakpoint */
|
||||
#define breakpoint() __asm__ __volatile__("trapa #0x3c")
|
||||
|
||||
/* KGDB should be able to flush all kernel text space */
|
||||
#if defined(CONFIG_CPU_SH4)
|
||||
#define kgdb_flush_icache_range(start, end) \
|
||||
{ \
|
||||
__flush_purge_region((void*)(start), (int)(end) - (int)(start));\
|
||||
flush_icache_range((start), (end)); \
|
||||
}
|
||||
#else
|
||||
#define kgdb_flush_icache_range(start, end) do { } while (0)
|
||||
#endif
|
||||
|
||||
/* Taken from sh-stub.c of GDB 4.18 */
|
||||
static const char hexchars[] = "0123456789abcdef";
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user