From 85a1b2af455157e38a40faa427909f950e9d41d2 Mon Sep 17 00:00:00 2001 From: Sonicadvance1 Date: Mon, 29 Mar 2010 09:26:19 +0000 Subject: This should largely go unnoticed git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5251 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/TestSuite/ASM/source/Helpers.cpp | 59 +++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Source/TestSuite/ASM/source/Helpers.cpp (limited to 'Source/TestSuite/ASM/source/Helpers.cpp') diff --git a/Source/TestSuite/ASM/source/Helpers.cpp b/Source/TestSuite/ASM/source/Helpers.cpp new file mode 100644 index 0000000000..423ba296ee --- /dev/null +++ b/Source/TestSuite/ASM/source/Helpers.cpp @@ -0,0 +1,59 @@ + +#include "Defines.h" + +u32 GetCR0() +{ + u32 var; + asm( + "mfcr %0" + : "=&r"(var) + ); + return var; +} + +u32 GetCR(u32 num) +{ + u32 var; + if(num == 0) // wtf, silly people + return GetCR0(); + else { + // TODO: Ugly switch is ugly, was failing otherwise + switch (num) { + case 1: + asm("mcrf 0, 1"); + break; + case 2: + asm("mcrf 0, 2"); + break; + case 3: + asm("mcrf 0, 3"); + break; + case 4: + asm("mcrf 0, 4"); + break; + case 5: + asm("mcrf 0, 5"); + break; + case 6: + asm("mcrf 0, 6"); + break; + case 7: + asm("mcrf 0, 7"); + break; + default: + printf("Can this be more than 7?\n"); + break; + } + return GetCR0(); + } +} + +u32 GetXER() +{ + u32 var; + asm( + "mfxer %0" + : "=&r"(var) + ); + return var; +} \ No newline at end of file -- cgit v1.2.3