OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gdb-7.2/] [sim/] [ppc/] [idecode_fields.h] - Diff between revs 816 and 835

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 816 Rev 835
/*  This file is part of the program psim.
/*  This file is part of the program psim.
 
 
    Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au>
    Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au>
 
 
    This program is free software; you can redistribute it and/or modify
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
    (at your option) any later version.
 
 
    This program is distributed in the hope that it will be useful,
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    GNU General Public License for more details.
 
 
    You should have received a copy of the GNU General Public License
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 
    */
    */
 
 
 
 
/* Instruction field macros:
/* Instruction field macros:
 
 
   The macro's below greatly simplify the process of translating the
   The macro's below greatly simplify the process of translating the
   pseudo code found in the PowerPC manual into C.
   pseudo code found in the PowerPC manual into C.
 
 
   In addition to the below, more will be found in the gen program's
   In addition to the below, more will be found in the gen program's
   cache table */
   cache table */
 
 
 
 
/* map some statements and variables directly across */
/* map some statements and variables directly across */
 
 
#define is_64bit_implementation (WITH_TARGET_WORD_BITSIZE == 64)
#define is_64bit_implementation (WITH_TARGET_WORD_BITSIZE == 64)
#define is_64bit_mode           IS_64BIT_MODE(processor)
#define is_64bit_mode           IS_64BIT_MODE(processor)
 
 
#define NIA nia
#define NIA nia
#define CIA cia
#define CIA cia
 
 
 
 
/* reservation */
/* reservation */
 
 
#define RESERVE        cpu_reservation(processor)->valid
#define RESERVE        cpu_reservation(processor)->valid
#define RESERVE_ADDR   cpu_reservation(processor)->addr
#define RESERVE_ADDR   cpu_reservation(processor)->addr
#define RESERVE_DATA   cpu_reservation(processor)->data
#define RESERVE_DATA   cpu_reservation(processor)->data
 
 
#define real_addr(EA, IS_READ)  vm_real_data_addr(cpu_data_map(processor), \
#define real_addr(EA, IS_READ)  vm_real_data_addr(cpu_data_map(processor), \
                                                  EA, \
                                                  EA, \
                                                  IS_READ, \
                                                  IS_READ, \
                                                  processor, \
                                                  processor, \
                                                  cia)
                                                  cia)
 
 
 
 
/* depending on mode return a 32 or 64bit number */
/* depending on mode return a 32 or 64bit number */
 
 
#define IEA(X)       (is_64bit_mode \
#define IEA(X)       (is_64bit_mode \
                      ? (X) \
                      ? (X) \
                      : MASKED((X), 32, 63))
                      : MASKED((X), 32, 63))
 
 
/* Expand argument to current architecture size */
/* Expand argument to current architecture size */
 
 
#define EXTS(X)         EXTS_##X
#define EXTS(X)         EXTS_##X
 
 
 
 
/* Gen translates text of the form A{XX:YY} into A_XX_YY_ the macro's
/* Gen translates text of the form A{XX:YY} into A_XX_YY_ the macro's
   below define such translated text into real expressions */
   below define such translated text into real expressions */
 
 
/* the spr field as it normally is used */
/* the spr field as it normally is used */
 
 
#define SPR_5_9_ (SPR & 0x1f)
#define SPR_5_9_ (SPR & 0x1f)
#define SPR_0_4_ (SPR >> 5)
#define SPR_0_4_ (SPR >> 5)
#define SPR_0_ ((SPR & BIT10(0)) != 0)
#define SPR_0_ ((SPR & BIT10(0)) != 0)
 
 
#define tbr_5_9_ (tbr & 0x1f)
#define tbr_5_9_ (tbr & 0x1f)
#define tbr_0_4_ (tbr >> 5)
#define tbr_0_4_ (tbr >> 5)
 
 
 
 
#define TB cpu_get_time_base(processor)
#define TB cpu_get_time_base(processor)
 
 
 
 
/* various registers with important masks */
/* various registers with important masks */
 
 
#define LR_0b00         (LR & ~3)
#define LR_0b00         (LR & ~3)
#define CTR_0b00        (CTR & ~3)
#define CTR_0b00        (CTR & ~3)
 
 
#define CR_BI_  ((CR & BIT32_BI) != 0)
#define CR_BI_  ((CR & BIT32_BI) != 0)
#define CR_BA_  ((CR & BIT32_BA) != 0)
#define CR_BA_  ((CR & BIT32_BA) != 0)
#define CR_BB_  ((CR & BIT32_BB) != 0)
#define CR_BB_  ((CR & BIT32_BB) != 0)
 
 
 
 
/* extended extracted fields */
/* extended extracted fields */
 
 
#define TO_0_ ((TO & BIT5(0)) != 0)
#define TO_0_ ((TO & BIT5(0)) != 0)
#define TO_1_ ((TO & BIT5(1)) != 0)
#define TO_1_ ((TO & BIT5(1)) != 0)
#define TO_2_ ((TO & BIT5(2)) != 0)
#define TO_2_ ((TO & BIT5(2)) != 0)
#define TO_3_ ((TO & BIT5(3)) != 0)
#define TO_3_ ((TO & BIT5(3)) != 0)
#define TO_4_ ((TO & BIT5(4)) != 0)
#define TO_4_ ((TO & BIT5(4)) != 0)
 
 
#define BO_0_ ((BO & BIT5(0)) != 0)
#define BO_0_ ((BO & BIT5(0)) != 0)
#define BO_1_ ((BO & BIT5(1)) != 0)
#define BO_1_ ((BO & BIT5(1)) != 0)
#define BO_2_ ((BO & BIT5(2)) != 0)
#define BO_2_ ((BO & BIT5(2)) != 0)
#define BO_3_ ((BO & BIT5(3)) != 0)
#define BO_3_ ((BO & BIT5(3)) != 0)
#define BO_4_ ((BO & BIT5(4)) != 0)
#define BO_4_ ((BO & BIT5(4)) != 0)
 
 
#define GOTO(dest)   goto XCONCAT4(label__,dest,__,MY_PREFIX)
#define GOTO(dest)   goto XCONCAT4(label__,dest,__,MY_PREFIX)
#define LABEL(dest)  XCONCAT4(label__,dest,__,MY_PREFIX)
#define LABEL(dest)  XCONCAT4(label__,dest,__,MY_PREFIX)
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.