Files
m68k-bdm/m68k/lib/BDMlib.h
Bernd Mueller adfd70813f initial push
2026-06-17 13:44:30 +02:00

154 lines
4.3 KiB
C

/*
* Motorola Background Debug Mode Remote Library
* Copyright (C) 1998 Chris Johns
*
* Chris Johns
* Cybertec Pty Ltd
*
* cjohns@users.sourceforge.net
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*
* Routines to control a CPU32(+) or Coldfire target
*/
#ifndef _BDM_LIB_H_
#define _BDM_LIB_H_
#if __cplusplus
extern "C"
{
#endif
#include <bdm.h>
/*
* Configuration file name.
*/
#define M68K_BDM_INIT_FILE ".m68kbdminit"
/*
* All (int) routines return -1 on error, >=0 otherwise.
*/
void bdmReadConfiguration();
int bdmCheck (void);
int bdmOpen (const char *name);
int bdmClose (void);
int bdmIsOpen (void);
int bdmSetDelay (int delay);
int bdmSetDriverDebugFlag (int flag);
void bdmSetDebugFlag (int flag);
void bdmLogSyslog (void);
int bdmStatus (void);
const char *bdmErrorString (void);
/*
* Return a value in the host byte order. Useful for printing on
* the host.
*/
unsigned long bdmHostByteOrder (unsigned long value);
/*
* The following routines return, or are passed, data with byte
* order (big-endian or little-endian) of the machine on which
* the routines are running.
*
* Note, the control registers are the values documented in the
* devices data sheet.
*/
int bdmReadControlRegister (int code, unsigned long *lp);
int bdmReadDebugRegister (int code, unsigned long *lp);
int bdmReadSystemRegister (int code, unsigned long *lp);
int bdmReadRegister (int code, unsigned long *lp);
int bdmReadMBAR (unsigned long *lp);
int bdmWriteControlRegister (int code, unsigned long l);
int bdmWriteDebugRegister (int code, unsigned long l);
int bdmWriteSystemRegister (int code, unsigned long l);
int bdmWriteRegister (int code, unsigned long l);
int bdmWriteMBAR (unsigned long l);
int bdmReadLongWord (unsigned long address, unsigned long *lp);
int bdmReadWord (unsigned long address, unsigned short *sp);
int bdmReadByte (unsigned long address, unsigned char *cp);
int bdmWriteLongWord (unsigned long address, unsigned long l);
int bdmWriteWord (unsigned long address, unsigned short s);
int bdmWriteByte (unsigned long address, unsigned char c);
/*
* The following routines report the driver version, processor and
* interface type
*/
int bdmGetDrvVersion (unsigned int *ver);
int bdmGetProcessor (int *processor);
int bdmGetInterface (int *iface);
/*
* Get and set the PST signal state. 1 = enabled, 0 = disabled.
*/
int bdmColdfireGetPST (int *pst);
int bdmColdfireSetPST (int pst);
/*
* The following routines control execution of the target machine
*/
int bdmReset (void);
int bdmRestart (void);
int bdmRelease (void);
int bdmGo (void);
int bdmStop (void);
int bdmStep (void);
/*
* In the bdmReadMemory and bdmWriteMemory routines, cbuf is the address
* of a buffer whose contents are in M68k (i.e. big-endian) byte order.
*/
int bdmReadMemory (unsigned long address, unsigned char *cbuf, unsigned long nbytes);
int bdmWriteMemory (unsigned long address, unsigned char *cbuf, unsigned long nbytes);
/*
* The following routines are low-level and are used to implement a
* client/interface.
*/
int bdmIoctlInt (int code, int *var);
int bdmIoctlCommand (int code);
int bdmIoctlIo (int code, struct BDMioctl *ioc);
int bdmRead (unsigned char *cbuf, unsigned long nbytes);
int bdmWrite (unsigned char *cbuf, unsigned long nbytes);
/*
* BDM Configuration file support.
*/
void bdmReadConfiguration ();
const char* bdmConfigSkipWhiteSpace (const char* text);
const char* bdmConfigGet (const char* label, const char* last);
/*
* BDM debug channel. Applications may use this to have a common
* debug trace environment.
*/
void bdmInfo (const char *format, ...);
void bdmPrint (const char *format, ...);
#if __cplusplus
}
#endif
#endif