URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 57 |
Rev 1765 |
/*
|
/*
|
* Mon2000 Trap handler (syscall interface).
|
* Mon2000 Trap handler (syscall interface).
|
*
|
*
|
* This trap handler is linked into the mon2000 libgloss (libmon).
|
* This trap handler is linked into the mon2000 libgloss (libmon).
|
*/
|
*/
|
#include <reent.h>
|
#include <reent.h>
|
#include "syscall.h"
|
#include "syscall.h"
|
|
|
int __trap0 (int function, int p1, int p2, int p3, struct _reent *r)
|
int __trap0 (int function, int p1, int p2, int p3, struct _reent *r)
|
{
|
{
|
int rc = 0;
|
int rc = 0;
|
|
|
switch (function) {
|
switch (function) {
|
case SYS_exit:
|
case SYS_exit:
|
/* loop so GDB can't go past system exit call */
|
/* loop so GDB can't go past system exit call */
|
while (1) {
|
while (1) {
|
asm volatile ("
|
asm volatile ("
|
ldi r0, #0
|
ldi r0, #0
|
trap #15 ; return control to Mon2000");
|
trap #15 ; return control to Mon2000");
|
}
|
}
|
break;
|
break;
|
|
|
case SYS_write:
|
case SYS_write:
|
{
|
{
|
int i;
|
int i;
|
|
|
for( i=0; i<p3; i++ ) {
|
for( i=0; i<p3; i++ ) {
|
asm volatile ("
|
asm volatile ("
|
ldi r0, #2
|
ldi r0, #2
|
ldi r1, #15 ; load Ctrl-O (ASCII 15)
|
ldi r1, #15 ; load Ctrl-O (ASCII 15)
|
trap #15 ; write Ctrl-O for quoting purposes" );
|
trap #15 ; write Ctrl-O for quoting purposes" );
|
|
|
asm volatile ("
|
asm volatile ("
|
ldi r0, #2
|
ldi r0, #2
|
ldb r1, %0
|
ldb r1, %0
|
trap #15 ; write character to console"
|
trap #15 ; write character to console"
|
: /* no outputs */
|
: /* no outputs */
|
: "m" (((char*)p2)[i]));
|
: "m" (((char*)p2)[i]));
|
}
|
}
|
|
|
rc = p3; /* return number of chars written */
|
rc = p3; /* return number of chars written */
|
break;
|
break;
|
}
|
}
|
|
|
default:
|
default:
|
rc = 0;
|
rc = 0;
|
break;
|
break;
|
}
|
}
|
|
|
return rc;
|
return rc;
|
}
|
}
|
|
|
|
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.