add missing macros and declarations
[mw/micromonitor-lm32.git] / umon_main / target / common / genlib.h
1 /* genlib.h:
2  *      Header file for functions in genlib.c (and some others).
3  *
4  *      General notice:
5  *      This code is part of a boot-monitor package developed as a generic base
6  *      platform for embedded system designs.  As such, it is likely to be
7  *      distributed to various projects beyond the control of the original
8  *      author.  Please notify the author of any enhancements made or bugs found
9  *      so that all may benefit from the changes.  In addition, notification back
10  *      to the author will allow the new user to pick up changes that may have
11  *      been made by other users after this version of the code was distributed.
12  *
13  *      Note1: the majority of this code was edited with 4-space tabs.
14  *      Note2: as more and more contributions are accepted, the term "author"
15  *                 is becoming a mis-representation of credit.
16  *
17  *      Original author:        Ed Sutter
18  *      Email:                          esutter@lucent.com
19  *      Phone:                          908-582-2351
20  */
21 #ifndef _GENLIB_H_
22 #define _GENLIB_H_
23
24 #include <stdarg.h>
25
26 /* Some compilers consider sizeof() to be unsigned... */
27 #define sizeof (int)sizeof
28
29 #define HUGE_VAL (__builtin_huge_val())
30 #define NULL ((void *)0)
31
32 typedef struct {
33         int quot;
34         int rem;
35 } div_t;
36
37 typedef struct {
38         long int quot;
39         long int rem;
40 } ldiv_t;
41
42 extern int optind;
43 extern char *optarg;
44
45 extern int abs(int);
46 extern int atoi(char *);
47 extern double atof(const char *);
48 extern int memcmp(char *, char *, int);
49 extern int strcmp(char *, char *);
50 extern int strcasecmp(char *, char *);
51 extern int strncmp(char *, char *, int);
52 extern int strlen(char *);
53 extern int strspn(char *, char *);
54 extern int strcspn(char *, char *);
55 extern int getopt(int,char **,char *);
56 extern int s_memcpy(char *, char *, int, int, int);
57 extern int s_memset(unsigned char *,unsigned char,int,int,int);
58 extern char *memccpy(char *, char *, int, int);
59 extern char *memchr(char *, char, int);
60 extern char *memcpy(char *, char *, int);
61 extern void bcopy(char *, char *, int);
62 extern char *memset(char *, char, int);
63 extern char *strcat(char *, char *);
64 extern char *strchr(char *, char);
65 extern char *strstr(char *, char *);
66 extern char *strcpy(char *, char *);
67 extern char *strncat(char *, char *, int);
68 extern char *strncpy(char *, char *, int);
69 extern char *strpbrk(char *, char *);
70 extern char *strrchr(char *, char);
71 extern char *strtok(char *, char *);
72 extern char *strtolower(char *string);
73 extern char *strtoupper(char *string);
74 extern long strtol(char *, char **, int);
75 extern unsigned short swap2(unsigned short);
76 extern unsigned long swap4(unsigned long);
77 extern unsigned long strtoul(char *, char **, int);
78 extern void getoptinit(void);
79 extern void prstring(char *);
80 extern void prlong(long);
81 extern long lceil(long n, long to);
82 extern unsigned long ulceil(unsigned long n, unsigned long to);
83
84 /* Included here, but not in genlib.c: */
85 extern int target_gotachar(void), gotachar(void);
86 extern int target_getchar(void), getchar(void);
87 extern int target_putchar(char), putchar(char);
88 extern int target_console_empty(void);
89 extern int AddrToSym(int,unsigned long,char *,unsigned long *);
90 extern int printf(char *, ...);
91 extern int sprintf(char *, char *, ...);
92 extern int snprintf(char *, int, char *, ...);
93 extern int vsnprintf(char *, int, char *, va_list);
94 extern int cprintf(char *, ...);
95 extern int getbytes(char *,int,int);
96 extern int getbytes_t(char *,int,int);
97 extern int putbytes(char *,int);
98 extern int getUsrLvl(void);
99 extern int setenv(char *,char *);
100 extern int shell_sprintf(char *,char *fmt,...);
101 extern int getline(char *,int,int);
102 extern int getline_t(char *,int,int);
103 extern int getline_p(char *,int,int,char *);
104 extern int getfullline(char *buf,int max,int ledit,int timeout,\
105         char *prefill, int echo);
106 extern int stkchk(char *);
107 extern int inRange(char *,int);
108 extern int More(void);
109 extern int validPassword(char *,int);
110 extern int newPasswordFile(void);
111 extern int extValidPassword(char *,int);
112 extern int setCmdUlvl(char *,int);
113 extern int askuser(char *);
114 extern int hitakey(void);
115 extern int getreg(char *,unsigned long *);
116 extern int putreg(char *,unsigned long);
117 extern int putargv(int,char *);
118 extern int addrtosector(unsigned char *,int *,int *,unsigned char **);
119 extern int AppFlashWrite(unsigned char *,unsigned char *,long);
120 extern int AppFlashErase(int);
121 extern int flushDcache(char *,int);
122 extern int invalidateIcache(char *,int);
123 extern int pollConsole(char *);
124 extern int sectortoaddr(int,int *,unsigned char **);
125 extern int sectorProtect(char *,int);
126 extern int FlashInit(void);
127 extern int cacheInit(void);
128 extern int pioget(char,int);
129 extern int extendHeap(char *,int);
130 extern int decompress(char *,int,char *);
131 extern int RedirectionCheck(char *);
132 extern int docommand(char *, int);
133 extern int SymFileFd(int);
134 extern int ShellVarInit(void);
135 extern int showDate(int);
136 extern int inUmonBssSpace(char *,char *);
137 extern int passwordFileExists(void);
138 extern int Mtrace(char *, ...);
139 extern int monWatchDog(void);
140 extern int ConsoleBaudSet(int);
141 extern int ChangeConsoleBaudrate(int);
142 extern int TextInRam(void);
143 extern int uMonInRam(void);
144 extern long portCmd(int, void *);
145 extern unsigned short xcrc16(unsigned char *buffer,unsigned long nbytes);
146 extern unsigned long crc32(unsigned char *,unsigned long);
147 extern unsigned long intsoff(void);
148 extern unsigned long getAppRamStart(void);
149 extern unsigned long assign_handler(long, unsigned long, unsigned long);
150 extern char *line_edit(char *);
151 #ifndef MALLOC_DEBUG
152 extern char *malloc(int);
153 extern char *realloc(char *,int);
154 #endif
155 extern char *getenvp(void);
156 extern char *getenv(char *);
157 extern char *getpass(char *,char *,int,int);
158 extern char *getsym(char *,char *,int);
159 extern char *monVersion(void);
160 extern char *monBuilt(void);
161 extern char *ExceptionType2String(int);
162 extern char *shellsym_chk(char,char *,int *,char *,int);
163 extern void stkusage(void);
164 extern void target_reset(void);
165 extern void flush_console_out(void);
166 extern void flush_console_in(void);
167 extern void initCPUio(void);
168 extern void historyinit(void);
169 extern void AppWarmStart(unsigned long mask);
170 extern void MtraceInit(char *,int);
171 extern void monrestart(int);
172 extern void historylog(char *);
173 extern void free(void *);
174 extern void puts(char *);
175 extern void putstr(char *);
176 extern void MonitorBuiltEnvSet(void);
177 extern void writeprompt(void);
178 extern void intsrestore(unsigned long);
179 extern void prascii(unsigned char *,int);
180 extern void cacheInitForTarget(void);
181 extern void exceptionAutoRestart(int);
182 extern void clrTmpMaxUsrLvl(int (*)(void));
183 extern void *setTmpMaxUsrLvl(void);
184 extern void rawon(void), rawoff(void);
185 extern void monHeader(int);
186 extern void mstatshowcom(void);
187 extern void CommandLoop(void);
188 extern void flushRegtbl(void);
189
190 extern void showregs(void), reginit(void);
191 extern void initUsrLvl(int);
192 extern void warmstart(int);
193 extern void coldstart(void);
194 extern void InitRemoteIO(void);
195 extern void appexit(int);
196 extern void pioset(char,int);
197 extern void pioclr(char,int);
198 extern void getargv(int *argc, char ***argv);
199 extern void init0(void), init1(void), init2(void), init3(void);
200 extern void EnableBreakInterrupt(void);
201 extern void DisableBreakInterrupt(void);
202 extern void     ctxMON(void), ctxAPP(void);
203 extern void printMem(unsigned char *,int,int);
204 extern void monDelay(int);
205 extern void ticktock(void);
206 extern void atinit(void);
207 extern void umonBssInit(void);
208 extern void ConsoleBaudEnvSet(void);
209 extern void console_echo(int);
210 extern void LowerFlashProtectWindow(void);
211 #if INCLUDE_REDIRECT
212 extern void RedirectCharacter(char);
213 extern void RedirectionCmdDone(void);
214 #else
215 #define RedirectCharacter(c)
216 #define RedirectionCmdDone()
217 #endif
218
219 extern unsigned long MonStack[];
220 extern unsigned long crc32tab[];
221 extern unsigned short xcrc16tab[];
222 extern char *Mtracebuf;
223 extern char ApplicationInfo[];
224 extern unsigned long ExceptionAddr, LoopsPerMillisecond;
225 extern unsigned long APPLICATION_RAMSTART, BOOTROM_BASE;
226 extern int ConsoleDevice;
227 extern int ConsoleBaudRate;
228 extern int StateOfMonitor, AppExitStatus, ExceptionType;
229 extern int      bss_start, bss_end, boot_base;
230 extern int  (*remoterawon)(void), (*remoterawoff)(void);
231 extern int  (*remoteputchar)(int), (*remotegetchar)(void);
232 extern int      (*remotegotachar)(void);
233 extern int  (*dcacheFlush)(char *,int), (*icacheInvalidate)(char *,int);
234 extern int      (*extgetUsrLvl)(void);
235 extern int      (*moncomptr)(int,void *, void *, void *);
236
237 #define STACK_PREINIT_VAL       0x63636363
238
239 /* If the watchdog macro is defined, then we also define the
240  * WATCHDOG_ENABLED macro so that code can use #ifdef WATCHDOG_ENABLED
241  * or simply insert WATCHDOG_MACRO inline...
242  * This eliminates the need for the ifdef wrapper if no other code is
243  * included with the macro. 
244  */
245 #ifdef WATCHDOG_MACRO
246 extern int      (*remoteWatchDog)(void);
247 #define WATCHDOG_ENABLED
248 #else
249 #define WATCHDOG_MACRO
250 #endif
251
252 #endif