URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-stable/] [newlib-1.18.0/] [libgloss/] [rs6000/] [mbx-outbyte.c] - Rev 829
Compare with Previous | Blame | View Log
/* * mbx-outbyte.c -- outbyte function for targets using the eppcbug monitor * * Copyright (c) 1998 Cygnus Support * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */ #include "ppc-asm.h" static int sendbyte(char c) { struct { unsigned clun; unsigned dlun; char *data; unsigned len; unsigned rsrvd; char buf[4]; } ipb, *inpb; struct { int status; int cnt; } opb, *outpb; inpb = &ipb; outpb = &opb; inpb->clun = 0; inpb->dlun = 0; inpb->data = ipb.buf; inpb->len = 1; inpb->rsrvd = 0; inpb->buf[0] = c; asm volatile ( "mr 3,%0\n" "mr 4,%1\n" "li 10,0x201\n" "sc" : /* no outputs */ : "r" (inpb), "r" (outpb) : "3", "4", "10" ); return (outpb->status == 0 && outpb->cnt == 1); } #define GDB_QUOTE_OUTBYTES 1 void outbyte(char c) { #ifdef GDB_QUOTE_OUTBYTES /* * GDB monitor.c will echo characters quoted with ^O */ while (!sendbyte('\017')) ; #endif while (!sendbyte(c)) ; }