Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* This file defines the interface between the cr16 simulator and gdb.
  2.  
  3.    Copyright 2008-2013 Free Software Foundation, Inc.
  4.  
  5.    This file is part of GDB.
  6.  
  7.    This program is free software; you can redistribute it and/or modify
  8.    it under the terms of the GNU General Public License as published by
  9.    the Free Software Foundation; either version 3 of the License, or
  10.    (at your option) any later version.
  11.  
  12.    This program is distributed in the hope that it will be useful,
  13.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.    GNU General Public License for more details.
  16.  
  17.    You should have received a copy of the GNU General Public License
  18.    along with this program; if not, see <http://www.gnu.org/licenses/>.  */
  19.  
  20. #if !defined (SIM_CR16_H)
  21. #define SIM_CR16_H
  22.  
  23. #ifdef __cplusplus
  24. extern "C" { // }
  25. #endif
  26.  
  27. enum
  28.   {
  29.     SIM_CR16_MEMORY_UNIFIED = 0x00000000,
  30.     SIM_CR16_MEMORY_INSN    = 0x10000000,
  31.     SIM_CR16_MEMORY_DATA    = 0x10000000,
  32.     SIM_CR16_MEMORY_DMAP    = 0x10000000,
  33.     SIM_CR16_MEMORY_IMAP    = 0x10000000
  34.   };
  35.  
  36. extern unsigned long sim_cr16_translate_dmap_addr
  37.   (unsigned long offset,
  38.    int nr_bytes,
  39.    unsigned long *phys,
  40.    void *regcache,
  41.    unsigned long (*dmap_register) (void *regcache, int reg_nr));
  42.  
  43. extern unsigned long sim_cr16_translate_imap_addr
  44.   (unsigned long offset,
  45.    int nr_bytes,
  46.    unsigned long *phys,
  47.    void *regcache,
  48.    unsigned long (*imap_register) (void *regcache, int reg_nr));
  49.  
  50. extern unsigned long sim_cr16_translate_addr
  51.   (unsigned long vaddr,
  52.    int nr_bytes,
  53.    unsigned long *phys,
  54.    void *regcache,
  55.    unsigned long (*dmap_register) (void *regcache, int reg_nr),
  56.    unsigned long (*imap_register) (void *regcache, int reg_nr));
  57.  
  58.  
  59. /* The simulator makes use of the following register information. */
  60.  
  61. enum sim_cr16_regs
  62. {
  63.   SIM_CR16_R0_REGNUM,
  64.   SIM_CR16_R1_REGNUM,
  65.   SIM_CR16_R2_REGNUM,
  66.   SIM_CR16_R3_REGNUM,
  67.   SIM_CR16_R4_REGNUM,
  68.   SIM_CR16_R5_REGNUM,
  69.   SIM_CR16_R6_REGNUM,
  70.   SIM_CR16_R7_REGNUM,
  71.   SIM_CR16_R8_REGNUM,
  72.   SIM_CR16_R9_REGNUM,
  73.   SIM_CR16_R10_REGNUM,
  74.   SIM_CR16_R11_REGNUM,
  75.   SIM_CR16_R12_REGNUM,
  76.   SIM_CR16_R13_REGNUM,
  77.   SIM_CR16_R14_REGNUM,
  78.   SIM_CR16_R15_REGNUM,
  79.  
  80.   SIM_CR16_PC_REGNUM,
  81.   SIM_CR16_ISP_REGNUM,
  82.   SIM_CR16_USP_REGNUM,
  83.   SIM_CR16_INTBASE_REGNUM,
  84.   SIM_CR16_PSR_REGNUM,
  85.   SIM_CR16_CFG_REGNUM,
  86.   SIM_CR16_DBS_REGNUM,
  87.   SIM_CR16_DCR_REGNUM,
  88.   SIM_CR16_DSR_REGNUM,
  89.   SIM_CR16_CAR0_REGNUM,
  90.   SIM_CR16_CAR1_REGNUM
  91. };
  92.  
  93. enum
  94. {
  95.   SIM_CR16_NR_R_REGS = 16,
  96.   SIM_CR16_NR_A_REGS = 2,
  97.   SIM_CR16_NR_IMAP_REGS = 2,
  98.   SIM_CR16_NR_DMAP_REGS = 4,
  99.   SIM_CR16_NR_CR_REGS = 11
  100. };
  101.  
  102. #ifdef __cplusplus
  103. }
  104. #endif
  105.  
  106. #endif
  107.