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

Subversion Repositories or1k

[/] [or1k/] [tags/] [rel-0-3-0-rc3/] [or1ksim/] [pm/] [pm.c] - Diff between revs 1649 and 1748

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

Rev 1649 Rev 1748
/* pm.c -- Simulation of OpenRISC 1000 power management
/* pm.c -- Simulation of OpenRISC 1000 power management
 
 
   Copyright (C) 1999 Damjan Lampret, lampret@opencores.org
   Copyright (C) 1999 Damjan Lampret, lampret@opencores.org
 
   Copyright (C) 2008 Embecosm Limited
 
 
 
   Contributor Jeremy Bennett <jeremy.bennett@embecosm.com>
 
 
This file is part of OpenRISC 1000 Architectural Simulator.
   This file is part of OpenRISC 1000 Architectural Simulator.
 
 
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
it under the terms of the GNU General Public License as published by
   under the terms of the GNU General Public License as published by the Free
the Free Software Foundation; either version 2 of the License, or
   Software Foundation; either version 3 of the License, or (at your option)
(at your option) any later version.
   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
but WITHOUT ANY WARRANTY; without even the implied warranty of
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
GNU General Public License for more details.
   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
along with this program; if not, write to the Free Software
   with this program.  If not, see <http://www.gnu.org/licenses/>. */
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 
 
/* This is functional simulation of OpenRISC 1000 architectural
 
   power management.
 
*/
 
 
 
#include <stdlib.h>
 
#include <stdio.h>
 
#include <string.h>
 
 
 
 
/* This program is commented throughout in a fashion suitable for processing
 
   with Doxygen. */
 
 
 
 
 
/* Autoconf and/or portability configuration */
#include "config.h"
#include "config.h"
 
 
#ifdef HAVE_INTTYPES_H
/* Package includes */
#include <inttypes.h>
#include "spr-defs.h"
#endif
 
 
 
#include "port.h"
 
#include "arch.h"
 
#include "abstract.h"
 
#include "pm.h"
 
#include "opcode/or32.h"
 
#include "spr_defs.h"
 
#include "execute.h"
#include "execute.h"
#include "sprs.h"
 
#include "sim-config.h"
#include "sim-config.h"
 
 
/* Reset. It initializes PMR register. */
 
void pm_reset(void)
/*---------------------------------------------------------------------------*/
 
/*!Reset power management
 
 
 
   Initializes PMR register by clearing it.                                  */
 
/*---------------------------------------------------------------------------*/
 
void
 
pm_reset ()
{
{
        if (config.sim.verbose) PRINTF("Resetting Power Management.\n");
  if (config.sim.verbose)
        cpu_state.sprs[SPR_PMR] = 0;
    {
 
      PRINTF ("Resetting Power Management.\n");
}
}
 
 
/*-----------------------------------------------------[ PM Configuration ]---*/
  cpu_state.sprs[SPR_PMR] = 0;
static void pm_enabled(union param_val val, void *dat)
 
 
}                               /* pm_reset() */
 
 
 
 
 
/*---------------------------------------------------------------------------*/
 
/*!Enable or disable power management
 
 
 
   Set the corresponding field in the UPR
 
 
 
   @param[in] val  The value to use
 
   @param[in] dat  The config data structure (not used here)                 */
 
/*---------------------------------------------------------------------------*/
 
static void
 
pm_enabled (union param_val val, void *dat)
{
{
  config.pm.enabled = val.int_val;
  if (val.int_val)
 
    {
 
      cpu_state.sprs[SPR_UPR] |= SPR_UPR_PMP;
 
    }
 
  else
 
    {
 
      cpu_state.sprs[SPR_UPR] &= ~SPR_UPR_PMP;
}
}
 
 
void reg_pm_sec(void)
  config.pm.enabled = val.int_val;
 
 
 
}                               /* pm_enabled() */
 
 
 
 
 
/*---------------------------------------------------------------------------*/
 
/*!Set up a new power management configuration section                       */
 
/*---------------------------------------------------------------------------*/
 
void
 
reg_pm_sec ()
{
{
  struct config_section *sec = reg_config_sec("pm", NULL, NULL);
  struct config_section *sec = reg_config_sec ("pm", NULL, NULL);
 
 
  reg_config_param(sec, "enabled", paramt_int, pm_enabled);
  reg_config_param(sec, "enabled", paramt_int, pm_enabled);
}
 
 
}                               /* reg_pm_sec() */
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

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