Exemple #1
0
static int get_cpuid(void) {
    unsigned long id = nb_Read(0x90);

    switch (id)
	{
		case 0x31504D44L: //"DMP1"
            return CPU_VORTEX86SX;
		case 0x32504D44L: //"DMP2"
		{
            unsigned char nbrv = nb_Read8(0x08);
            unsigned char sbrv = sb_Read8(0x08);
            unsigned long ide  = pci_In32(VX86_pciDev[VX86_IDE], 0x00);
		    if ((nbrv == 1) && (sbrv == 1) && (ide == 0x101017f3L)) return CPU_VORTEX86DX_A;  // Vortex86DX ver. A
		    if ((nbrv == 1) && (sbrv == 2) && (ide != 0x101017f3L)) return CPU_VORTEX86DX_C;  // Vortex86DX ver. C (PBA/PBB)
		    if ((nbrv == 2) && (sbrv == 2) && (ide != 0x101017f3L)) return CPU_VORTEX86DX_D;  // Vortex86DX ver. D

            return CPU_VORTEX86DX_UNKNOWN;
        }
		case 0x33504D44L: //"DMP3"
			return CPU_VORTEX86MX;
		case 0x35504D44L: //"DMP5"
			return CPU_VORTEX86MX_PLUS;
		case 0x34504D44L: //"DMP4"
			return CPU_VORTEX86DX2;
		case 0x36504D44L:
			return CPU_VORTEX86DX3;
		case 0x37504D44L:
			return CPU_VORTEX86EX;
	}

	return CPU_UNSUPPORTED;
}
Exemple #2
0
bool get_mem_size(unsigned long *size)
{
	unsigned char memory_bank_register;

	memory_bank_register = nb_Read8(0x6D);
	memory_bank_register &= 0x0f;

	*size = pow(2, memory_bank_register+1);
	return true;
}