URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-stable/] [newlib-1.18.0/] [libgloss/] [m32r/] [trapmon0.c] - Rev 829
Compare with Previous | Blame | View Log
/* * Mon2000 Trap handler (syscall interface). * * This trap handler is linked into the mon2000 libgloss (libmon). */ #include <reent.h> #include "syscall.h" int __trap0 (int function, int p1, int p2, int p3, struct _reent *r) { int rc = 0; switch (function) { case SYS_exit: /* loop so GDB can't go past system exit call */ while (1) { asm volatile ( "ldi r0, #0 \n" "trap #15 ; return control to Mon2000"); } break; case SYS_write: { int i; for( i=0; i<p3; i++ ) { asm volatile ( "ldi r0, #2 \n" "ldi r1, #15 ; load Ctrl-O (ASCII 15) \n" "trap #15 ; write Ctrl-O for quoting purposes" ); asm volatile ( "ldi r0, #2 \n" "ldb r1, %0 \n" "trap #15 ; write character to console" : /* no outputs */ : "m" (((char*)p2)[i])); } rc = p3; /* return number of chars written */ break; } default: rc = 0; break; } return rc; }