forked from len0rd/rockbox
Added GDB API - a way to call stub procedures from a DEBUG build.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8561 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
760fea9ac7
commit
ec7e976026
5 changed files with 80 additions and 1 deletions
|
@ -22,6 +22,9 @@
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
|
#ifdef HAVE_GDB_API
|
||||||
|
#include "gdb_api.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
static char debugmembuf[200];
|
static char debugmembuf[200];
|
||||||
|
@ -196,6 +199,34 @@ static void debug(const char *msg)
|
||||||
putpacket(debugbuf);
|
putpacket(debugbuf);
|
||||||
}
|
}
|
||||||
#endif /* SH7034 */
|
#endif /* SH7034 */
|
||||||
|
|
||||||
|
#ifdef HAVE_GDB_API
|
||||||
|
static void *get_api_function(int n)
|
||||||
|
{
|
||||||
|
struct gdb_api *api = (struct gdb_api *)GDB_API_ADDRESS;
|
||||||
|
if (api->magic == GDB_API_MAGIC)
|
||||||
|
return api->func[n];
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void breakpoint(void)
|
||||||
|
{
|
||||||
|
void (*f)(void) = get_api_function(0);
|
||||||
|
if (f) (*f)();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void debug(char *msg)
|
||||||
|
{
|
||||||
|
void (*f)(char *) = get_api_function(1);
|
||||||
|
if (f) (*f)(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void debug_init()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* HAVE_GDB_API */
|
||||||
#endif /* end of DEBUG section */
|
#endif /* end of DEBUG section */
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
|
|
|
@ -84,6 +84,8 @@
|
||||||
|
|
||||||
#define USB_ISP1582
|
#define USB_ISP1582
|
||||||
|
|
||||||
|
#define HAVE_GDB_API
|
||||||
|
|
||||||
/* Virtual LED (icon) */
|
/* Virtual LED (icon) */
|
||||||
#define CONFIG_LED LED_VIRTUAL
|
#define CONFIG_LED LED_VIRTUAL
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,11 @@ extern void ldebugf(const char* file, int line, const char *fmt, ...);
|
||||||
#define LDEBUGF(...) ldebugf(__FILE__, __LINE__, __VA_ARGS__)
|
#define LDEBUGF(...) ldebugf(__FILE__, __LINE__, __VA_ARGS__)
|
||||||
#else
|
#else
|
||||||
#if defined(DEBUG)
|
#if defined(DEBUG)
|
||||||
|
|
||||||
|
#ifdef HAVE_GDB_API
|
||||||
|
void breakpoint(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#define DEBUGF debugf
|
#define DEBUGF debugf
|
||||||
#define LDEBUGF debugf
|
#define LDEBUGF debugf
|
||||||
#else
|
#else
|
||||||
|
|
35
firmware/export/gdb_api.h
Normal file
35
firmware/export/gdb_api.h
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* __________ __ ___.
|
||||||
|
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
|
||||||
|
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
|
||||||
|
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
|
||||||
|
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
|
||||||
|
* \/ \/ \/ \/ \/
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006 by Tomasz Malesinski
|
||||||
|
*
|
||||||
|
* All files in this archive are subject to the GNU General Public License.
|
||||||
|
* See the file COPYING in the source tree root for full license agreement.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _GDB_API_H_
|
||||||
|
#define _GDB_API_H_
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#define GDB_API_MAGIC 0x6db570b
|
||||||
|
#ifdef IRIVER_IFP7XX_SERIES
|
||||||
|
#define GDB_API_ADDRESS 0x24006000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct gdb_api
|
||||||
|
{
|
||||||
|
unsigned long magic;
|
||||||
|
void *func[];
|
||||||
|
};
|
||||||
|
#endif
|
|
@ -13,7 +13,8 @@ OUTPUT_FORMAT(elf32-sh)
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
IRAM : ORIGIN = 0, LENGTH = 0x10000
|
IRAM : ORIGIN = 0, LENGTH = 0x10000
|
||||||
DRAM : ORIGIN = 0x24000000, LENGTH = 0x8000
|
DRAM : ORIGIN = 0x24000000, LENGTH = 0x6000
|
||||||
|
DRAM_API : ORIGIN = 0x24006000, LENGTH = 0x100
|
||||||
}
|
}
|
||||||
|
|
||||||
SECTIONS
|
SECTIONS
|
||||||
|
@ -29,6 +30,11 @@ SECTIONS
|
||||||
*(.glue_7t)
|
*(.glue_7t)
|
||||||
} >DRAM
|
} >DRAM
|
||||||
|
|
||||||
|
.gdbapi :
|
||||||
|
{
|
||||||
|
*(.gdbapi)
|
||||||
|
} >DRAM_API
|
||||||
|
|
||||||
.data :
|
.data :
|
||||||
{
|
{
|
||||||
*(.data)
|
*(.data)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue