summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/shared/umon/monlib.h
blob: bc87c20815f0787a158a5f49baf90b9f91f53fc8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
/*
 *  monlib.h - Used by both the monitor and the application that
 *             may reside on top of the monitor
 *
 *  Based upon code from MicroMonitor 1.17 from http://www.umonfw.com/
 *  which includes this notice:
 *
 **************************************************************************
 *  General notice:
 *  This code is part of a boot-monitor package developed as a generic base
 *  platform for embedded system designs.  As such, it is likely to be
 *  distributed to various projects beyond the control of the original
 *  author.  Please notify the author of any enhancements made or bugs found
 *  so that all may benefit from the changes.  In addition, notification back
 *  to the author will allow the new user to pick up changes that may have
 *  been made by other users after this version of the code was distributed.
 *
 *  Note1: the majority of this code was edited with 4-space tabs.
 *  Note2: as more and more contributions are accepted, the term "author"
 *         is becoming a mis-representation of credit.
 *
 *  Original author:    Ed Sutter
 *  Email:              esutter@alcatel-lucent.com
 *  Phone:              908-582-2351
 **************************************************************************
 *
 *  Ed Sutter has been informed that this code is being used in RTEMS.
 *
 *  This code was reformatted by Joel Sherrill from OAR Corporation and
 *  Fernando Nicodemos <fgnicodemos@terra.com.br> from NCB - Sistemas
 *  Embarcados Ltda. (Brazil) to be more compliant with RTEMS coding
 *  standards and to eliminate C++ style comments.
 */

#ifndef _MONLIB_H_
#define _MONLIB_H_

#include <umon/tfs.h>
#include <umon/cli.h>

#ifdef __cplusplus
extern "C" {
#endif

extern int monConnect(int (*monptr)(int,void *,void *,void *),
		void (*lock)(void),void (*unlock)(void));
extern void mon_getargv(int *argc,char ***argv);
extern void mon_intsrestore(unsigned long oldval);
extern void mon_appexit(int exit_value);
extern void mon_free(char *buffer);
extern void mon_profiler(void *pdata);
extern void mon_bbc(char *filename, int linenum);
extern void mon_warmstart(unsigned long mask);
extern void mon_delay(long msec);
extern void mon_printpkt(char *buf, int size, int incoming);
extern void mon_printmem(char *mem, int size, int ascii);


extern int mon_com(int cmd,void *arg1,void *arg2,void *arg3);
extern int mon_timer(int cmd, void * arg);
extern int mon_setenv(char *varname,char *value);
extern int mon_putchar(char c);
extern int mon_getchar(void);
extern int mon_gotachar(void);
extern int mon_getbytes(char *buf,int count,int block);
extern int mon_restart(int restart_value);
extern int mon_tfsinit(void);
extern int mon_tfsunlink(char *filename);
extern int mon_tfslink(char *source, char *target);
extern int mon_tfsrun(char **arglist,int verbosity);
extern int mon_tfsfstat(char *filename,struct tfshdr *tfp);
extern int mon_tfseof(int file_descriptor);
extern int mon_tfstruncate(int file_descriptor,long length);
extern int mon_tfsread(int file_descriptor,char *buffer,int size);
extern int mon_tfswrite(int file_descriptor,char *buffer,int size);
extern int mon_tfsopen(char *filename,long mode,char *buffer);
extern int mon_tfsclose(int file_descriptor,char *info);
extern int mon_tfsseek(int file_descriptor,int offset,int whence);
extern int mon_tfsgetline(int file_descriptor,char *buffer,int bufsize);
extern int mon_tfsipmod(char *name,char *buffer,int offset,int size);
extern int mon_addcommand(struct monCommand *command_list,char *);
extern int mon_docommand(char *cmdline,int verbosity);
extern int mon_getline(char *buffer,int max,int ledit);
extern int mon_decompress(char *src,int srcsize,char *dest);
extern int mon_heapextend(char *base,int size);
extern int mon_pcicfgwrite(int interface,int bus,int dev,int func,int reg,
		unsigned long val);
extern int mon_tfsadd(char *filename, char *info, char *flags,
		unsigned char *src, int size);
extern int mon_i2cwrite(int interface, int bigaddr, unsigned char *data,
		int len);
extern int mon_i2cread(int interface, int bigaddr, unsigned char *data,
		int len);
extern int mon_sendenetpkt(char *pkt, int len);
extern int mon_recvenetpkt(char *pkt, int len);
extern int mon_flashoverride(void *flashinfo, int get, int bank);
extern int mon_flasherase(int snum);
extern int mon_flashwrite(char *dest,char *src, int bytecnt);
extern int mon_flashinfo(int snum,int *size, char **base);
extern int mon_watchdog(void);
extern int mon_timeofday(int cmd, void *arg);

extern char *mon_getsym(char *symname, char *buf, int bufsize);
extern char *mon_getenv(char *varname);
extern char *mon_getenvp(void);
extern char *mon_version(void);
#ifdef MALLOC_DEBUG
extern char *mon_malloc(int size,char *file, int line);
extern char *mon_realloc(char *buf,int size,char *file, int line);
#else
extern char *mon_malloc(int size);
extern char *mon_realloc(char *buf,int size);
#endif

extern long mon_tfsctrl(int command,long arg1,long arg2);
extern long mon_tfstell(int file_descriptor);
extern long mon_portcmd(int cmd, void *arg);

extern unsigned short mon_xcrc16(char *buffer,long length);

extern unsigned long mon_intsoff(void);

extern unsigned long mon_pcicfgread(int interface,int bus,int dev,
		int func,int reg);

extern unsigned long mon_pcictrl(int interface, int cmd,
		unsigned long arg1, unsigned long arg2);

extern unsigned long mon_i2cctrl(int interface, int cmd,
		unsigned long arg1, unsigned long arg2);

extern unsigned long mon_assignhandler(long hnum,
		unsigned long arg1,unsigned long arg2);

extern struct tfshdr *mon_tfsnext(struct tfshdr *tfp);
extern struct tfshdr *mon_tfsstat(char *filename);

#if SHOWVARARGS
extern void mon_memtrace(char *fmt, ...);
extern int mon_printf(char *fmt, ...);
extern int mon_cprintf(char *fmt, ...);
extern int mon_sprintf(char *,char *fmt, ...);
#else
extern void mon_memtrace();
extern int mon_printf();
extern int mon_cprintf();
extern int mon_sprintf();
#endif

#ifdef __cplusplus
}
#endif


/* defines used by monConnect():
 */
#define GETMONFUNC_PUTCHAR				1
#define GETMONFUNC_GETCHAR				2
#define GETMONFUNC_GOTACHAR				3
#define GETMONFUNC_GETBYTES				4
#define GETMONFUNC_PRINTF				5
#define GETMONFUNC_CPRINTF				6
#define GETMONFUNC_SPRINTF				7
#define GETMONFUNC_RESTART				8
#define GETMONFUNC_GETENV				9
#define GETMONFUNC_SETENV				10
#define GETMONFUNC_TFSINIT				11
#define GETMONFUNC_TFSADD				12
#define GETMONFUNC_TFSUNLINK			13
#define GETMONFUNC_TFSRUN				14
#define GETMONFUNC_TFSNEXT				15
#define GETMONFUNC_TFSSTAT				16
#define GETMONFUNC_TFSREAD				17
#define GETMONFUNC_TFSWRITE				18
#define GETMONFUNC_TFSOPEN				19
#define GETMONFUNC_TFSCLOSE				20
#define GETMONFUNC_TFSSEEK				21
#define GETMONFUNC_TFSGETLINE			22
#define GETMONFUNC_TFSIPMOD				23
#define GETMONFUNC_TFSCTRL				24
#define GETMONFUNC_ADDCOMMAND			25
#define GETMONFUNC_DOCOMMAND			26
#define GETMONFUNC_GETARGV				27
#define GETMONFUNC_CRC16				28
#define GETMONFUNC_CRC32				29
#define GETMONFUNC_PIOGET				30	/* NA (removed as of 1.0) */
#define GETMONFUNC_PIOSET				31	/* NA (removed as of 1.0) */
#define GETMONFUNC_PIOCLR				32	/* NA (removed as of 1.0) */
#define GETMONFUNC_INTSOFF				33
#define GETMONFUNC_INTSRESTORE			34
#define GETMONFUNC_APPEXIT				35
#define GETMONFUNC_MALLOC				36
#define GETMONFUNC_FREE					37
#define GETMONFUNC_GETLINE				38
#define GETMONFUNC_TFSFSTAT				39
#define GETMONFUNC_TFSEOF				40
#define GETMONFUNC_DECOMPRESS			41
#define GETMONFUNC_TFSTRUNCATE			42
#define GETMONFUNC_HEAPXTEND			43
#define GETMONFUNC_PROFILER				44
#define GETMONFUNC_TFSLINK				45
#define GETMONFUNC_BBC					46
#define GETMONFUNC_MEMTRACE				47
#define GETMONFUNC_TFSTELL				48
#define GETMONFUNC_VERSION				49
#define GETMONFUNC_WARMSTART			50
#define GETMONFUNC_PCICFGREAD			51
#define GETMONFUNC_PCICFGWRITE			52
#define GETMONFUNC_PCICONTROL			53
#define GETMONFUNC_I2CREAD				54
#define GETMONFUNC_I2CWRITE				55
#define GETMONFUNC_I2CCONTROL			56
#define GETMONFUNC_MONDELAY				57
#define GETMONFUNC_GETENVP				58
#define GETMONFUNC_REALLOC				59
#define GETMONFUNC_SENDENETPKT			60
#define GETMONFUNC_RECVENETPKT			61
#define GETMONFUNC_GETSYM				62
#define GETMONFUNC_PRINTPKT				63
#define GETMONFUNC_FLASHWRITE			64
#define GETMONFUNC_FLASHERASE			65
#define GETMONFUNC_FLASHINFO			66
#define GETMONFUNC_ASSIGNHDLR			67
#define GETMONFUNC_WATCHDOG				68
#define GETMONFUNC_PRINTMEM				69
#define GETMONFUNC_PORTCMD				70
#define GETMONFUNC_TIMEOFDAY			71
#define GETMONFUNC_TIMER				72
#define GETMONFUNC_FLASHOVRRD			73

#define CACHEFTYPE_DFLUSH				200
#define CACHEFTYPE_IINVALIDATE			201

#define	CHARFUNC_PUTCHAR				300
#define	CHARFUNC_GETCHAR				301
#define	CHARFUNC_GOTACHAR				302
#define	CHARFUNC_RAWMODEON				303
#define	CHARFUNC_RAWMODEOFF				304

#define ASSIGNFUNC_GETUSERLEVEL			400


/* Defines used by mon_warmstart():
 */
#define WARMSTART_IOINIT			0x00000001
#define WARMSTART_BSSINIT			0x00000002
#define WARMSTART_RUNMONRC			0x00000004
#define WARMSTART_MONHEADER			0x00000008
#define WARMSTART_TFSAUTOBOOT		0x00000010
#define WARMSTART_BOARDINFO			0x00000020
#define WARMSTART_ALL				0xffffffff
#endif