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

Subversion Repositories 1664

[/] [1664/] [trunk/] [c/] [cpu_1664/] [cpu_1664__pasi.c] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 mrdmkg
#include "cpu_1664.h"
2
 
3
void cpu_1664__pasi(struct cpu_1664 *cpu, n8 pasi)
4
{
5
 
6
 n8 i;
7
 cpu_1664_opera_t parola;
8
 
9
 for(i=0;i<pasi;i++)
10
 {
11
 
12
  if(cpu->umm_memoria[cpu_1664_umm_desloca_interompe_capasi]!=0)
13
  {
14
   cpu_1664_sinia_t masca=cpu->umm_memoria[cpu_1664_umm_desloca_interompe_masca];
15
   cpu_1664_sinia_t ativa=cpu->umm_memoria[cpu_1664_umm_desloca_interompe_ativa];
16
 
17
   if((ativa&masca)!=0)
18
   {
19
    cpu->umm_memoria[cpu_1664_umm_desloca_interompe_capasi]=0;
20
    cpu_1664_eseta(cpu, cpu_1664_eseta_umm_interompe);
21
   }
22
  }
23
 
24
  parola=cpu_1664_umm(cpu, cpu->sinia[cpu_1664_sinia_IP], (1<<cpu_1664_umm_usor_mapa_permete_esecuta), sizeof(cpu_1664_opera_t), 0);
25
  cpu->sinia[cpu_1664_sinia_IP]+=sizeof(cpu_1664_opera_t);
26
  cpu->opera_sicle=1;
27
  cpu_1664__desifri(cpu, parola);
28
 
29
  cpu_1664_sinia_t sicle=cpu->opera_sicle;
30
 
31
  if(cpu->vantaje==1)
32
  {
33
   cpu->contador_sicle+=sicle;
34
  }
35
  else
36
  {
37
 
38
   if(cpu->contador_sicle_usor_limite!=cpu_1664_sinia_t_di)
39
   {
40
 
41
    if(cpu->contador_sicle_usor_limite<cpu_1664_sinia_t_di)
42
    {
43
     cpu->contador_sicle_usor+=sicle;
44
     cpu->contador_sicle_usor_limite-=sicle;
45
    }
46
    else
47
    {
48
     cpu_1664_eseta(cpu, cpu_1664_eseta_sicle_usor_limite);
49
    }
50
   }
51
  }
52
 }
53
}

powered by: WebSVN 2.1.0

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