swar.c 1.51 KB
/* -----------------------------------------------------------------------------
 *  Copyright (C) 2019 daiteq s.r.o.                     http://www.daiteq.com
 *
 *  This program is distributed WITHOUT ANY WARRANTY; without even
 *  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 *  PURPOSE.
 *
 * -----------------------------------------------------------------------------
 *  Filename    : swar.c
 *  Authors     : Martin Danek
 *  Description : configuration of SWAR instructions
 *  Release     :
 *  Version     : 1.0
 *  Date        : 9.4.2019
 * -----------------------------------------------------------------------------
 */


#include "swar.h"

#include <asm.h>
#include <asi.h>


#include <leon-myuart.h>



void swar_config(unsigned config) {
//   pm_print("SWAR CONFIG config: "); i_print(config); m_print("\n");
  wr_asr(SWAR_CTL_ASR, config);
}

unsigned swar_readconfig(void) {
  unsigned config;
//   pm_print("SWAR CONFIG config: "); i_print(config); m_print("\n");
  rd_asr(SWAR_CTL_ASR, config);
  return config;
}

void swar_selacc(unsigned accid) {
//   pm_print("SWAR SELACC accid: "); i_print(accid); m_print("\n");
  wr_asr(SWAR_ACC_ASR, accid);
}

int swar_readacc(void) {
  int acc;
//   pm_print("SWAR READACC accid: "); i_print(accid); m_print("\n");
  rd_asr(SWAR_ACC_ASR, acc);
  return acc;
}


unsigned exec_swar(unsigned a, unsigned b) {
  unsigned out;
  swar(a, b, out);
  return out;
}

unsigned exec_swarcc(unsigned a, unsigned b) {
  unsigned out;
  swarcc(a, b, out);
  return out;
}