Exemplo n.º 1
0
/* Writes to ut_os_version_index a zero-based index identifying the OS version and HW model.
 * Also sets up the syscalls table.
 * Should be called only once.
 * May be used for OS-specific arrays of constants (marked with "// OS-specific"). */
void ut_read_os_version_index(void) {
	switch (*(unsigned*)(0x10000020)) {
#ifndef NDLESS_39
		// OS-specific
#ifndef NDLESS_36
		case 0x102F0FA0: // 3.1.0 non-CAS
			ut_os_version_index = 0;
			break;
		case 0x102F16D0: // 3.1.0 CAS
			ut_os_version_index = 1;
			break;
		case 0x102F0A10: // 3.1.0 non-CAS CX
			ut_os_version_index = 2;
			break;
		case 0x102F11A0: // 3.1.0 CAS CX
			ut_os_version_index = 3;
			break;
		case 0x102DBF20: // 3.1.0 CM-C
			ut_os_version_index = 4;
			break;
		case 0x102DC6B0: // 3.1.0 CAS CM-C
			ut_os_version_index = 5;
			break;
#endif
		case 0x10375BB0: // 3.6.0 non-CAS
			ut_os_version_index = 6;
			break;
		case 0x103765F0: // 3.6.0 CAS
			ut_os_version_index = 7;
			break;
		case 0x10375620: // 3.6.0 non-CAS CX
			ut_os_version_index = 8;
			break;
		case 0x10376090: // 3.6.0 CAS CX
			ut_os_version_index = 9;
			break;
#endif
#if !defined(STAGE1) || NDLESS_39 == 39
		case 0x1037CDE0: // 3.9.0 non-CAS
			ut_os_version_index = 10;
			break;
		case 0x1037D320: // 3.9.0 CAS
			ut_os_version_index = 11;
			break;
		case 0x1037C760: // 3.9.0 non-CAS CX
			ut_os_version_index = 12;
			break;
		case 0x1037CCC0: // 3.9.0 CAS CX
			ut_os_version_index = 13;
			break;
#endif
#if !defined(STAGE1) || NDLESS_39 == 391
		case 0x1037D160: // 3.9.1 non-CAS CX
			ut_os_version_index = 16;
			break;
		case 0x1037D6C0: // 3.9.1 CAS CX
			ut_os_version_index = 17;
			break;
#endif
#ifndef STAGE1
		case 0x10386E70: // 4.0.0.235 non-CAS CX
			ut_os_version_index = 18;
			break;
		case 0x103873B0: // 4.0.0.235 CAS CX
			ut_os_version_index = 19;
			break;
#endif
#if !defined(STAGE1) || NDLESS_403
		case 0x1038C290: // 4.0.3.93 non-CAS CX
			ut_os_version_index = 20;
			break;
		case 0x1038C7D0: // 4.0.3.93 CAS CX
			ut_os_version_index = 21;
			break;
#endif
#if !defined(STAGE1) || NDLESS_420
		case 0x1039C7A0: // 4.2.0.532 non-CAS CX
			ut_os_version_index = 22;
			break;
		case 0x1039CD20: // 4.2.0.532 CAS CX
			ut_os_version_index = 23;
			break;
#endif
#if !defined(STAGE1) // No installer for this yet :-/
		case 0x103A3100: // 4.3.0.702 non-CAS CX
			ut_os_version_index = 24;
			break;
		case 0x103A3690: // 4.3.0.702 CAS CX
			ut_os_version_index = 25;
			break;
#endif
		default:
			ut_calc_reboot();
	}

#ifndef STAGE1
	sc_addrs_ptr = syscall_addrs[ut_os_version_index];
#endif
}
Exemplo n.º 2
0
void __attribute__ ((noreturn)) ut_panic(const char *msg) {
	puts(msg);
	ut_calc_reboot();
}