| ############################################################################### |
| # |
| # MN10300 Low-level gdbstub routines |
| # |
| # Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. |
| # Written by David Howells (dhowells@redhat.com) |
| # |
| # This program is free software; you can redistribute it and/or |
| # modify it under the terms of the GNU General Public Licence |
| # as published by the Free Software Foundation; either version |
| # 2 of the Licence, or (at your option) any later version. |
| # |
| ############################################################################### |
| #include <linux/sys.h> |
| #include <linux/linkage.h> |
| #include <asm/smp.h> |
| #include <asm/cache.h> |
| #include <asm/cpu-regs.h> |
| #include <asm/exceptions.h> |
| #include <asm/frame.inc> |
| #include <asm/serial-regs.h> |
| |
| .text |
| |
| ############################################################################### |
| # |
| # GDB stub read memory with guard |
| # - D0 holds the memory address to read |
| # - D1 holds the address to store the byte into |
| # |
| ############################################################################### |
| .globl gdbstub_read_byte_guard |
| .globl gdbstub_read_byte_cont |
| ENTRY(gdbstub_read_byte) |
| mov d0,a0 |
| mov d1,a1 |
| clr d0 |
| gdbstub_read_byte_guard: |
| movbu (a0),d1 |
| gdbstub_read_byte_cont: |
| movbu d1,(a1) |
| ret [],0 |
| |
| .globl gdbstub_read_word_guard |
| .globl gdbstub_read_word_cont |
| ENTRY(gdbstub_read_word) |
| mov d0,a0 |
| mov d1,a1 |
| clr d0 |
| gdbstub_read_word_guard: |
| movhu (a0),d1 |
| gdbstub_read_word_cont: |
| movhu d1,(a1) |
| ret [],0 |
| |
| .globl gdbstub_read_dword_guard |
| .globl gdbstub_read_dword_cont |
| ENTRY(gdbstub_read_dword) |
| mov d0,a0 |
| mov d1,a1 |
| clr d0 |
| gdbstub_read_dword_guard: |
| mov (a0),d1 |
| gdbstub_read_dword_cont: |
| mov d1,(a1) |
| ret [],0 |
| |
| ############################################################################### |
| # |
| # GDB stub write memory with guard |
| # - D0 holds the byte to store |
| # - D1 holds the memory address to write |
| # |
| ############################################################################### |
| .globl gdbstub_write_byte_guard |
| .globl gdbstub_write_byte_cont |
| ENTRY(gdbstub_write_byte) |
| mov d0,a0 |
| mov d1,a1 |
| clr d0 |
| gdbstub_write_byte_guard: |
| movbu a0,(a1) |
| gdbstub_write_byte_cont: |
| ret [],0 |
| |
| .globl gdbstub_write_word_guard |
| .globl gdbstub_write_word_cont |
| ENTRY(gdbstub_write_word) |
| mov d0,a0 |
| mov d1,a1 |
| clr d0 |
| gdbstub_write_word_guard: |
| movhu a0,(a1) |
| gdbstub_write_word_cont: |
| ret [],0 |
| |
| .globl gdbstub_write_dword_guard |
| .globl gdbstub_write_dword_cont |
| ENTRY(gdbstub_write_dword) |
| mov d0,a0 |
| mov d1,a1 |
| clr d0 |
| gdbstub_write_dword_guard: |
| mov a0,(a1) |
| gdbstub_write_dword_cont: |
| ret [],0 |
| |
| ############################################################################### |
| # |
| # GDB stub BUG() trap |
| # |
| ############################################################################### |
| ENTRY(__gdbstub_bug_trap) |
| .byte 0xF7,0xF7 # don't use 0xFF as the JTAG unit preempts that |
| ret [],0 |