00001
00022 #include "sparcv8.H"
00023
00024 using namespace sparcv8_parms;
00025
00026 int sparcv8::nRegs(void) {
00027 return 72;
00028 }
00029
00030 ac_word sparcv8::reg_read( int reg ) {
00031
00032 if ( ( reg >= 0 ) && ( reg < 32 ) ) {
00033 return REGS[reg];
00034 }
00035
00036
00037 else if ( reg == 64 ) return Y;
00038 else if ( reg == 65 ) return PSR;
00039 else if ( reg == 66 ) return WIM;
00040 else if ( reg == 68 ) return ac_pc;
00041 else if ( reg == 69 ) return npc;
00042
00043
00044 return 0;
00045 }
00046
00047
00048 void sparcv8::reg_write( int reg, ac_word value ) {
00049
00050 if ( ( reg >= 0 ) && ( reg < 32 ) ) {
00051 REGS[reg] = value;
00052 }
00053
00054
00055 else if ( reg == 64 ) Y = value;
00056 else if ( reg == 65 ) PSR = value;
00057 else if ( reg == 66 ) WIM = value;
00058 else if ( reg == 68 ) ac_pc = value;
00059 else if ( reg == 69 ) npc = value;
00060 }
00061
00062
00063 unsigned char sparcv8::mem_read( unsigned int address ) {
00064 return IM->read_byte( address );
00065 }
00066
00067
00068 void sparcv8::mem_write( unsigned int address, unsigned char byte ) {
00069 IM->write_byte( address, byte );
00070 }