home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gdb-4.16-base.tgz / gdb-4.16-base.tar / fsf / gdb / sim / arm / gdbhost.c < prev    next >
C/C++ Source or Header  |  1995-08-01  |  3KB  |  108 lines

  1. /*  gdbhost.c -- ARMulator RDP to gdb comms code:  ARM6 Instruction Emulator.
  2.     Copyright (C) 1994 Advanced RISC Machines Ltd.
  3.  
  4.     This program is free software; you can redistribute it and/or modify
  5.     it under the terms of the GNU General Public License as published by
  6.     the Free Software Foundation; either version 2 of the License, or
  7.     (at your option) any later version.
  8.  
  9.     This program is distributed in the hope that it will be useful,
  10.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.     GNU General Public License for more details.
  13.  
  14.     You should have received a copy of the GNU General Public License
  15.     along with this program; if not, write to the Free Software
  16.     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
  17.  
  18. /***********************************************************/
  19. /* Functions that communicate info back to the debugger... */
  20. /***********************************************************/
  21.  
  22. #include <stdio.h>
  23. #include <stdarg.h>
  24. #include "armdefs.h"
  25. #include "communicate.h"
  26. #include "dbg_rdi.h"
  27. #include "armos.h"
  28.  
  29. #define OS_SendNothing 0x0
  30. #define OS_SendChar 0x1
  31. #define OS_SendWord 0x2
  32. #define OS_SendString 0x3
  33.  
  34. /* Defined in kid.c */
  35. extern int wait_for_osreply(ARMword *reply);
  36.  
  37. /* A pipe for handling SWI return values that goes straight from the */
  38. /* parent to the ARMulator host interface, bypassing the childs RDP */
  39. /* to RDI interpreter */
  40. int DebuggerARMul[2];
  41.  
  42. /* The pipes between the two processes */
  43. int mumkid[2];
  44. int kidmum[2];
  45.  
  46. void myprint (void *arg, const char *format, va_list ap)
  47. {
  48. #ifdef DEBUG
  49.   fprintf (stderr, "Host: myprint\n");
  50. #endif
  51.   vfprintf (stderr, format, ap);
  52. }
  53.  
  54.  
  55. /* Waits for a keypress on the debuggers' keyboard */
  56. void mypause (void *arg)
  57. {
  58. #ifdef DEBUG
  59.   fprintf (stderr, "Host: mypause\n");
  60. #endif
  61. }  /* I do love exciting functions */
  62.  
  63. void mywritec(void *arg, int c)
  64. {
  65. #ifdef DEBUG
  66.   fprintf(stderr, "Mywrite : %c\n", c);
  67. #endif
  68.   MYwrite_char(kidmum[1], RDP_OSOp);     /* OS Operation Request Message */
  69.   MYwrite_word(kidmum[1], SWI_WriteC);   /* Print... */
  70.   MYwrite_char(kidmum[1], OS_SendChar);  /*  ...a single character */ 
  71.   MYwrite_char(kidmum[1], (unsigned char) c);
  72.   
  73.   wait_for_osreply((ARMword *) 0);
  74. }
  75.  
  76. int myreadc(void *arg)
  77. {
  78.   char c;
  79.   ARMword x;
  80.   
  81. #ifdef DEBUG
  82.   fprintf(stderr, "Host: myreadc\n");
  83. #endif
  84.   MYwrite_char(kidmum[1], RDP_OSOp);  /* OS Operation Request Message */
  85.   MYwrite_word(kidmum[1], SWI_ReadC); /* Read... */
  86.   MYwrite_char(kidmum[1], OS_SendNothing);
  87.   
  88.   c = wait_for_osreply(&x);
  89.   return (x);
  90. }
  91.  
  92.  
  93. int mywrite(void *arg, char const *buffer, int len)
  94. {
  95. #ifdef DEBUG
  96.   fprintf(stderr, "Host: mywrite\n");
  97. #endif
  98.   return 0;
  99. }
  100.  
  101. char *mygets(void *arg, char *buffer, int len)
  102. {
  103. #ifdef DEBUG
  104.   fprintf(stderr, "Host: mygets\n");
  105. #endif
  106.   return buffer;
  107. }
  108.