Nugget
|
#include "common/hardware/dma.h"
#include "common/hardware/hwregs.h"
#include "common/syscalls/syscalls.h"
#include "exotic/cester.h"
#include "../cop0/cester-cop0.c"
Macros | |
#define | PCSX_TESTS 0 |
#define | CESTER_MAYBE_TEST CESTER_TEST |
#define | CESTER_NO_SIGNAL |
#define | CESTER_NO_TIME |
#define | EXIT_SUCCESS 0 |
#define | EXIT_FAILURE 1 |
Functions | |
CESTER_TEST (cpu_quiet, CESTER_TEST(cpu_tests, for(unsigned i=0;i< 200000;i++) __asm__ volatile("");cester_assert_uint_eq(0, s_got40);cester_assert_uint_eq(0, s_got80);) | |
cester_assert_uint_eq (0x88bbccdd, out) | |
CESTER_MAYBE_TEST (cpu_LWR_LWL_nodelay, cpu_tests, uint32_t buff[2]={0x11223344, 0x55667788};uint32_t out=cpu_LWR_LWL_nodelay(buff, 0xaabbccdd);cester_assert_uint_eq(0xaabbccdd, out);) CESTER_TEST(cpu_LWR_LWL_delayed | |
cester_assert_uint_eq (0x88112233, out) | |
CESTER_TEST (cpu_LWR_LWL_load_different, cpu_tests, uint32_t buff[3]={0x11223344, 0x55667788, 0xaabbccdd};uint32_t out=cpu_LWR_LWL_load_different(buff, 0xeeffeffe);cester_assert_uint_eq(0x88556677, out);) CESTER_TEST(cpu_LW_LWR | |
cester_assert_uint_eq (0xaa112233, out) | |
CESTER_TEST (cpu_delayed_load, cpu_tests, uint32_t buff[1]={1};uint32_t out=cpu_delayed_load(buff, 0);cester_assert_uint_eq(0, out);) CESTER_TEST(cpu_delayed_load_cancelled | |
cester_assert_uint_eq (0, out) | |
CESTER_MAYBE_TEST (cpu_delayed_load_load, cpu_tests, uint32_t buff[2]={1, 2};uint64_t out=cpu_delayed_load_load(buff, 4);out=((out > > 16)|out) &0xffffffff;cester_assert_uint_eq(0x00020004, out);) CESTER_MAYBE_TEST(cpu_BRANCH_BRANCH_slot | |
cester_assert_uint_eq (0x189, out) | |
cester_assert_uint_eq (9, out) | |
CESTER_MAYBE_TEST (cpu_JUMP_JUMP_slot, cpu_tests, uint32_t out=jumpjump1();cester_assert_uint_eq(0x69, out);out=jumpjump2();cester_assert_uint_eq(21, out);) CESTER_TEST(cpu_DIV_by_zero | |
__asm__ | __volatile__ ("li $v0, 0x55555555\n" "mthi $v0\n" "mtlo $v0\n" "nop\n" "div $0, $0\n" "mfhi %0\n" "mflo %1\n" "nop\n" :"=r"(hi), "=r"(lo) ::"v0") |
cester_assert_int_eq (0, hi) | |
cester_assert_int_eq (-1, lo) | |
__asm__ | __volatile__ ("li $v0, 0x55555555\n" "mthi $v0\n" "mtlo $v0\n" "li $v0, 42\n" ".word 0x0040001a\n" "mfhi %0\n" "mflo %1\n" "nop\n" :"=r"(hi), "=r"(lo) ::"v0") |
cester_assert_int_eq (42, hi) | |
CESTER_TEST (cpu_DIVU_by_zero, cpu_tests, int32_t hi, lo;__asm__ __volatile__("li $v0, 0x55555555\n" "mthi $v0\n" "mtlo $v0\n" "nop\n" "divu $0, $0\n" "mfhi %0\n" "mflo %1\n" "nop\n" :"=r"(hi), "=r"(lo) ::"v0");cester_assert_int_eq(0, hi);cester_assert_int_eq(-1, lo);__asm__ __volatile__("li $v0, 0x55555555\n" "mthi $v0\n" "mtlo $v0\n" "li $v0, 42\n" ".word 0x0040001b\n" "mfhi %0\n" "mflo %1\n" "nop\n" :"=r"(hi), "=r"(lo) ::"v0");cester_assert_int_eq(42, hi);cester_assert_int_eq(-1, lo);) CESTER_TEST(links | |
cester_assert_uint_eq (0, r) | |
cester_assert_uint_ne (0, r) | |
Variables | |
uint32_t | out = cpu_LWR_LWL_half(buff, 0xaabbccdd) |
cpu_tests | |
uint32_t | buff [2] = {0x11223344, 0x55667788} |
int32_t | hi |
int32_t | lo |
uint32_t | r = linkandload() |
#define CESTER_MAYBE_TEST CESTER_TEST |
#define CESTER_NO_SIGNAL |
#define CESTER_NO_TIME |
#define EXIT_FAILURE 1 |
#define EXIT_SUCCESS 0 |
#define PCSX_TESTS 0 |
__asm__ __volatile__ | ( | "li | $v0, |
0x55555555\n" "mthi $v0\n" "mtlo $v0\n" "li | $v0 | ||
) |
__asm__ __volatile__ | ( | "li | $v0, |
0x55555555\n" "mthi $v0\n" "mtlo $v0\n" "nop\n" "div | $0 | ||
) |
cester_assert_int_eq | ( | - | 1, |
lo | |||
) |
cester_assert_int_eq | ( | 0 | , |
hi | |||
) |
cester_assert_int_eq | ( | 42 | , |
hi | |||
) |
cester_assert_uint_eq | ( | 0 | , |
out | |||
) |
cester_assert_uint_eq | ( | 0 | , |
r | |||
) |
cester_assert_uint_eq | ( | 0x189 | , |
out | |||
) |
cester_assert_uint_eq | ( | 0x88112233 | , |
out | |||
) |
cester_assert_uint_eq | ( | 0x88bbccdd | , |
out | |||
) |
cester_assert_uint_eq | ( | 0xaa112233 | , |
out | |||
) |
cester_assert_uint_eq | ( | 9 | , |
out | |||
) |
cester_assert_uint_ne | ( | 0 | , |
r | |||
) |
CESTER_MAYBE_TEST | ( | cpu_delayed_load_load | , |
cpu_tests | , | ||
uint32_t | buff[2] = {1, 2}; uint64_t out = cpu_delayed_load_load(buff, 4); out = ((out >> 16) | out) & 0xffffffff; cester_assert_uint_eq(0x00020004, out); |
||
) |
CESTER_MAYBE_TEST | ( | cpu_JUMP_JUMP_slot | , |
cpu_tests | , | ||
uint32_t | out = jumpjump1(); cester_assert_uint_eq(0x69, out); out = jumpjump2(); cester_assert_uint_eq(21, out); |
||
) |
CESTER_MAYBE_TEST | ( | cpu_LWR_LWL_nodelay | , |
cpu_tests | , | ||
uint32_t | buff[2] = {0x11223344, 0x55667788}; uint32_t out = cpu_LWR_LWL_nodelay(buff, 0xaabbccdd); cester_assert_uint_eq(0xaabbccdd, out); |
||
) |
CESTER_TEST | ( | cpu_delayed_load | , |
cpu_tests | , | ||
uint32_t | buff[1] = {1}; uint32_t out = cpu_delayed_load(buff, 0); cester_assert_uint_eq(0, out); |
||
) |
CESTER_TEST | ( | cpu_DIVU_by_zero | , |
cpu_tests | , | ||
int32_t | hi, | ||
lo;__asm__ __volatile__("li $v0, 0x55555555\n" "mthi $v0\n" "mtlo $v0\n" "nop\n" "divu $0, $0\n" "mfhi %0\n" "mflo %1\n" "nop\n" :"=r"(hi), "=r"(lo) ::"v0");cester_assert_int_eq(0, hi);cester_assert_int_eq(-1, lo);__asm__ __volatile__("li $v0, 0x55555555\n" "mthi $v0\n" "mtlo $v0\n" "li $v0, 42\n" ".word 0x0040001b\n" "mfhi %0\n" "mflo %1\n" "nop\n" :"=r"(hi), "=r"(lo) ::"v0");cester_assert_int_eq(42, hi);cester_assert_int_eq(-1, lo); | |||
) |
CESTER_TEST | ( | cpu_LWR_LWL_load_different | , |
cpu_tests | , | ||
uint32_t | buff[3] = {0x11223344, 0x55667788, 0xaabbccdd}; uint32_t out = cpu_LWR_LWL_load_different(buff, 0xeeffeffe); cester_assert_uint_eq(0x88556677, out); |
||
) |
CESTER_TEST | ( | cpu_quiet | , |
CESTER_TEST( | cpu_tests, | ||
for(unsigned i=0;i< 200000;i++) __asm__ volatile("");cester_assert_uint_eq(0, s_got40);cester_assert_uint_eq(0, s_got80); | |||
) |
uint32_t buff = {0x11223344, 0x55667788} |
cpu_tests |
int32_t hi |
int32_t lo |
char out = cpu_LWR_LWL_half(buff, 0xaabbccdd) |
r = linkandload() |