/* *********************************************************************** * * CUSTOM API Implementation * * $Id: t32custom.c 67663 2015-11-06 09:54:08Z fsirl $ * $Revision: 67663 $ * * * * (c) Lauterbach GmbH * http://www.lauterbach.com/ * *********************************************************************** */ #include "t32custom.h" /************************************************************************** CUSTOM entry **************************************************************************/ int CUSTOMAPI CUSTOM_ApiVersion(void) { return CUSTOM_VERSION; } int CUSTOMAPI CUSTOM_Interface(customContext context, customCallbackStruct *cbs, char **api_info, char **lib_date) { *api_info = "$Date: 2015-11-06 10:54:08 +0100 (Fri, 06 Nov 2015) $ $Revision: 67663 $"; *lib_date = __DATE__; return CUSTOM_Init(context, cbs); } /************************************************************************** TRACE32 functions **************************************************************************/ void CUSTOMAPI CUSTOM_Printf(customContext context, const char *format, ...) { va_list ap; va_start(ap, format); (*((customInfo *) context)->printf) (context, format, ap); va_end(ap); } void CUSTOMAPI CUSTOM_Warning(customContext context, const char *format, ...) { va_list ap; va_start(ap, format); (*((customInfo *) context)->warning) (context, format, ap); va_end(ap); } int CUSTOMAPI CUSTOM_ExecuteCommand(customContext context, char * cmdline) { return (*((customInfo *) context)->executeCommand) (context, cmdline); } int CUSTOMAPI CUSTOM_EvalutateFunction(customContext context, char *function, uint64_t *result_int, char *result_str, int size_str) { /* TRACE32 build 24727. or higher required */ if (*((customInfo *) context)->evaluateFunction == 0) return CUSTOM_FAIL; return (*((customInfo *) context)->evaluateFunction) (context, function, result_int, result_str, size_str); } /************************************************************************** Generic configuration functions **************************************************************************/ extern void CUSTOM_DefineLibName(customContext context, const char * name, int version) { (*((customInfo *) context)->defineLibName) (context, name, version); } void CUSTOMAPI CUSTOM_DefineEndianess(customContext context, int endianess) { (*((customInfo *) context)->defineEndianess) (context, endianess); } void CUSTOMAPI CUSTOM_DefineCores(customContext context, int cores) { (*((customInfo *) context)->defineCores) (context, cores); } void CUSTOMAPI CUSTOM_DefineMemory(customContext context, int id, const char * name, int width, int flags) { (*((customInfo *) context)->defineMemory) (context, id, name, width, flags); } void CUSTOMAPI CUSTOM_DefineRegister(customContext context, int id, const char * name, int width, int flags, customWord resetvalue) { (*((customInfo *) context)->defineRegister) (context, id, name, width, flags, resetvalue); } void CUSTOMAPI CUSTOM_DefinePerfile(customContext context, int id, const char * filename) { (*((customInfo *) context)->definePerfile) (context, id, filename); } void CUSTOMAPI CUSTOM_DefineSoftbreak(customContext context, int width, const unsigned char * data) { (*((customInfo *) context)->defineSoftbreak) (context, width, data); } /************************************************************************** Callback register functions **************************************************************************/ void * CUSTOMAPI CUSTOM_RegisterCommandCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary) { return (*((customInfo *) context)->registerCommandCallback) (context, func, proprietary); } void * CUSTOMAPI CUSTOM_RegisterGetStateCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary) { return (*((customInfo *) context)->registerGetStateCallback)(context, func, proprietary); } void * CUSTOMAPI CUSTOM_RegisterSystemModeCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary, int modes) { return (*((customInfo *) context)->registerSystemModeCallback)(context, func, proprietary, modes); } void * CUSTOMAPI CUSTOM_RegisterExitCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary) { return (*((customInfo *) context)->registerExitCallback)(context, func, proprietary); } void * CUSTOMAPI CUSTOM_RegisterStepCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary) { return (*((customInfo *) context)->registerStepCallback)(context, func, proprietary); } void * CUSTOMAPI CUSTOM_RegisterGoCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary) { return (*((customInfo *) context)->registerGoCallback)(context, func, proprietary); } void * CUSTOMAPI CUSTOM_RegisterBreakCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary) { return (*((customInfo *) context)->registerBreakCallback)(context, func, proprietary); } void * CUSTOMAPI CUSTOM_RegisterMemoryReadCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary) { return (*((customInfo *) context)->registerReadMemoryCallback)(context, func, proprietary); } void * CUSTOMAPI CUSTOM_RegisterMemoryWriteCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary) { return (*((customInfo *) context)->registerWriteMemoryCallback)(context, func, proprietary); } void * CUSTOMAPI CUSTOM_RegisterRegisterReadCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary) { return (*((customInfo *) context)->registerReadRegisterCallback)(context, func, proprietary); } void * CUSTOMAPI CUSTOM_RegisterRegisterWriteCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary) { return (*((customInfo *) context)->registerWriteRegisterCallback)(context, func, proprietary); } void * CUSTOMAPI CUSTOM_RegisterDisassemblerCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary, int mininstlen, int maxinstlen) { return (*((customInfo *) context)->registerDisassemblerCallback)(context, func, proprietary, mininstlen, maxinstlen); } void * CUSTOMAPI CUSTOM_RegisterBreakpointCallback(customContext context, customCallbackFunctionPtr func, customPtr proprietary, int bptypes) { return (*((customInfo *) context)->registerBreakpointCallback)(context, func, proprietary, bptypes); }