60 lines
1.2 KiB
C#
60 lines
1.2 KiB
C#
using System;
|
|
|
|
namespace BizHawk.Emulation.CPUs.ARM
|
|
{
|
|
|
|
partial class ARM
|
|
{
|
|
public ARM.CP15 cp15;
|
|
|
|
public uint cp15_MRC(uint opc1, uint t, uint crn, uint crm, uint opc2)
|
|
{
|
|
if (t == 15) unpredictable = true;
|
|
switch (crn)
|
|
{
|
|
case 13:
|
|
switch (opc2)
|
|
{
|
|
case 0: return cp15.FCSEIDR;
|
|
case 1: return cp15.CONTEXTIDR;
|
|
case 2: return cp15.TPIDRURW;
|
|
case 3: return cp15.TPIDRURO;
|
|
case 4: return cp15.TPIDRPRW;
|
|
}
|
|
break;
|
|
}
|
|
|
|
//unhandled...
|
|
unpredictable = true;
|
|
return 0;
|
|
}
|
|
|
|
public string cp15_Describe(uint opc1, uint t, uint crn, uint crm, uint opc2)
|
|
{
|
|
switch (crn)
|
|
{
|
|
case 13:
|
|
switch (opc2)
|
|
{
|
|
case 0: return "CP15.FCSEIDR: FCSE PID";
|
|
case 1: return "CP15.CONTEXTIDR: Context ID";
|
|
case 2: return "CP15.TPIDRURW: User RW Thread ID";
|
|
case 3: return "CP15.TPIDRURW: User RO Thread ID";
|
|
case 4: return "CP15.TPIDRURW: Priv. Only Thread ID";
|
|
}
|
|
break;
|
|
}
|
|
|
|
return "unknown";
|
|
}
|
|
|
|
public class CP15
|
|
{
|
|
//c13
|
|
public uint FCSEIDR;
|
|
public uint CONTEXTIDR;
|
|
public uint TPIDRURW, TPIDRURO, TPIDRPRW;
|
|
}
|
|
}
|
|
|
|
} |