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
|
@ -22,6 +22,9 @@
|
|||
#include <stdarg.h>
|
||||
#include "config.h"
|
||||
#include "cpu.h"
|
||||
#ifdef HAVE_GDB_API
|
||||
#include "gdb_api.h"
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
static char debugmembuf[200];
|
||||
|
@ -196,6 +199,34 @@ static void debug(const char *msg)
|
|||
putpacket(debugbuf);
|
||||
}
|
||||
#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 */
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
|
|
@ -84,6 +84,8 @@
|
|||
|
||||
#define USB_ISP1582
|
||||
|
||||
#define HAVE_GDB_API
|
||||
|
||||
/* Virtual LED (icon) */
|
||||
#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__)
|
||||
#else
|
||||
#if defined(DEBUG)
|
||||
|
||||
#ifdef HAVE_GDB_API
|
||||
void breakpoint(void);
|
||||
#endif
|
||||
|
||||
#define DEBUGF debugf
|
||||
#define LDEBUGF debugf
|
||||
#else
|
||||
|
|
|
@ -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
|
||||
{
|
||||
IRAM : ORIGIN = 0, LENGTH = 0x10000
|
||||
DRAM : ORIGIN = 0x24000000, LENGTH = 0x8000
|
||||
DRAM : ORIGIN = 0x24000000, LENGTH = 0x6000
|
||||
DRAM_API : ORIGIN = 0x24006000, LENGTH = 0x100
|
||||
}
|
||||
|
||||
SECTIONS
|
||||
|
@ -29,6 +30,11 @@ SECTIONS
|
|||
*(.glue_7t)
|
||||
} >DRAM
|
||||
|
||||
.gdbapi :
|
||||
{
|
||||
*(.gdbapi)
|
||||
} >DRAM_API
|
||||
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
|
|
Loading…
Reference in New Issue