Nice and neighborly, for quickly patching in new code.
git-svn-id: https://svn.code.sf.net/p/goodfet/code/trunk@260
12e2690d-a6be-4b82-a7b7-
67c4a43b65c8
#include "platform.h"
#include "monitor.h"
#include "platform.h"
#include "monitor.h"
+//! Call a function by address.
+int fncall(unsigned int adr){
+ //TODO replace this with portable C.
+ //Preprocessor definition might help.
+ __asm__("call r15"); //r12 on IAR
+}
+
//! Handles a monitor command.
void monitorhandle(unsigned char app,
unsigned char verb,
//! Handles a monitor command.
void monitorhandle(unsigned char app,
unsigned char verb,
cmddata[0]=memorybyte[cmddataword[0]];
txdata(app,verb,1);
break;
cmddata[0]=memorybyte[cmddataword[0]];
txdata(app,verb,1);
break;
+ case CALL:
+ //Set the program counter to cmdword[0];
+ cmddataword[0]=fncall(cmddataword[0]);
+ txdata(app,verb,2);
+ break;
+ case EXEC:
+ //Execute the argument as code from RAM.
+ cmddataword[0]=fncall((u16) cmddataword);
+ txdata(app,verb,2);
+ break;
case MONITOR_SIZEBUF:
//TODO make the data length target-specific, varying by ram.
cmddataword[0]=0x100;
case MONITOR_SIZEBUF:
//TODO make the data length target-specific, varying by ram.
cmddataword[0]=0x100;
#define SETUP 0x10
#define START 0x20
#define STOP 0x21
#define SETUP 0x10
#define START 0x20
#define STOP 0x21
+#define CALL 0x30
+#define EXEC 0x31
#define NOK 0x7E
#define OK 0x7F
#define NOK 0x7E
#define OK 0x7F