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

Subversion Repositories plasma

[/] [plasma/] [trunk/] [tools/] [mlite.c] - Diff between revs 194 and 241

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 194 Rev 241
Line 632... Line 632...
      case 0x16:/*BLEZL*/  lbranch=r[rs]<=0;        break;
      case 0x16:/*BLEZL*/  lbranch=r[rs]<=0;        break;
      case 0x17:/*BGTZL*/  lbranch=r[rs]>0;         break;
      case 0x17:/*BGTZL*/  lbranch=r[rs]>0;         break;
//      case 0x1c:/*MAD*/  break;   /*IV*/
//      case 0x1c:/*MAD*/  break;   /*IV*/
      case 0x20:/*LB*/   r[rt]=(signed char)mem_read(s,1,ptr);  break;
      case 0x20:/*LB*/   r[rt]=(signed char)mem_read(s,1,ptr);  break;
      case 0x21:/*LH*/   r[rt]=(signed short)mem_read(s,2,ptr); break;
      case 0x21:/*LH*/   r[rt]=(signed short)mem_read(s,2,ptr); break;
      case 0x22:/*LWL*/  rt=rt; //fixme fall through
      case 0x22:/*LWL*/
 
                         //target=8*(ptr&3);
 
                         //r[rt]=(r[rt]&~(0xffffffff<<target))|
 
                         //      (mem_read(s,4,ptr&~3)<<target); break;
      case 0x23:/*LW*/   r[rt]=mem_read(s,4,ptr);   break;
      case 0x23:/*LW*/   r[rt]=mem_read(s,4,ptr);   break;
      case 0x24:/*LBU*/  r[rt]=(unsigned char)mem_read(s,1,ptr); break;
      case 0x24:/*LBU*/  r[rt]=(unsigned char)mem_read(s,1,ptr); break;
      case 0x25:/*LHU*/  r[rt]=(unsigned short)mem_read(s,2,ptr); break;
      case 0x25:/*LHU*/  r[rt]=(unsigned short)mem_read(s,2,ptr); break;
      case 0x26:/*LWR*/  break; //fixme
      case 0x26:/*LWR*/
 
                         //target=32-8*(ptr&3);
 
                         //r[rt]=(r[rt]&~((unsigned long)0xffffffff>>target))|
 
                         //((unsigned long)mem_read(s,4,ptr&~3)>>target); 
 
                         break;
      case 0x28:/*SB*/   mem_write(s,1,ptr,r[rt]);  break;
      case 0x28:/*SB*/   mem_write(s,1,ptr,r[rt]);  break;
      case 0x29:/*SH*/   mem_write(s,2,ptr,r[rt]);  break;
      case 0x29:/*SH*/   mem_write(s,2,ptr,r[rt]);  break;
      case 0x2a:/*SWL*/  rt=rt; //fixme fall through
      case 0x2a:/*SWL*/
 
                         //mem_write(s,1,ptr,r[rt]>>24);  
 
                         //mem_write(s,1,ptr+1,r[rt]>>16);
 
                         //mem_write(s,1,ptr+2,r[rt]>>8);
 
                         //mem_write(s,1,ptr+3,r[rt]); break;
      case 0x2b:/*SW*/   mem_write(s,4,ptr,r[rt]);  break;
      case 0x2b:/*SW*/   mem_write(s,4,ptr,r[rt]);  break;
      case 0x2e:/*SWR*/  break; //fixme
      case 0x2e:/*SWR*/  break; //fixme
      case 0x2f:/*CACHE*/break;
      case 0x2f:/*CACHE*/break;
      case 0x30:/*LL*/   r[rt]=mem_read(s,4,ptr);   break;
      case 0x30:/*LL*/   r[rt]=mem_read(s,4,ptr);   break;
//      case 0x31:/*LWC1*/ break;
//      case 0x31:/*LWC1*/ break;
Line 821... Line 832...
      getch();
      getch();
      return(0);
      return(0);
   }
   }
   bytes = fread(s->mem, 1, MEM_SIZE, in);
   bytes = fread(s->mem, 1, MEM_SIZE, in);
   fclose(in);
   fclose(in);
 
   memcpy(s->mem + 1024*1024, s->mem, 1024*8);  //internal 8KB SRAM
   printf("Read %ld bytes.\n", bytes);
   printf("Read %ld bytes.\n", bytes);
   cache_init();
   cache_init();
   if(argc == 3 && argv[2][0] == 'B')
   if(argc == 3 && argv[2][0] == 'B')
   {
   {
      printf("Big Endian\n");
      printf("Big Endian\n");
Line 855... Line 867...
         cycle(s, 10);
         cycle(s, 10);
      }
      }
      free(s->mem);
      free(s->mem);
      return(0);
      return(0);
   }
   }
   memcpy(s->mem + 1024*1024, s->mem, 1024*8);  //internal 8KB SRAM
 
   s->pc = 0x0;
   s->pc = 0x0;
   index = mem_read(s, 4, 0);
   index = mem_read(s, 4, 0);
   if(index == 0x3c1c1000)
   if(index == 0x3c1c1000)
      s->pc = 0x10000000;
      s->pc = 0x10000000;
   do_debug(s);
   do_debug(s);

powered by: WebSVN 2.1.0

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