Nugget
Loading...
Searching...
No Matches
Macros | Functions | Variables
cop0.c File Reference
#include "common/hardware/dma.h"
#include "common/hardware/hwregs.h"
#include "common/syscalls/syscalls.h"
#include "exotic/cester.h"
#include "cester-cop0.c"
Include dependency graph for 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_cop0_basic_write_bp, cpu_tests, uint32_t expectedEPC;uint32_t t;volatile uint32_t *ptr=(volatile uint32_t *) 0x58; *ptr=1;__asm__ volatile("" " lui %0, 0b1100101010000000\n" " mtc0 %0, $7\n" " li %0, 0x58\n" " mtc0 %0, $5\n" " li %0, 0xfffffff0\n" " mtc0 %0, $9\n" :"=r"(t));cester_assert_uint_eq(1, *ptr);__asm__ volatile("la %0, 1f\n1:\nsw $0, 0x58($0)" :"=r"(expectedEPC));__asm__ volatile("mtc0 $0, $7\n");cester_assert_uint_eq(0, *ptr);cester_assert_uint_eq(1, s_got40);cester_assert_uint_eq(0, s_got80);cester_assert_uint_eq(0x40, s_from);cester_assert_uint_eq(expectedEPC, s_epc);) CESTER_TEST(cpu_cop0_kseg_write_bp
 
__asm__ volatile ("" " lui %0, 0b1100101010000000\n" " mtc0 %0, $7\n" " li %0, 0x58\n" " mtc0 %0, $5\n" " li %0, 0xfffffff0\n" " mtc0 %0, $9\n" :"=r"(t))
 
 cester_assert_uint_eq (1, *ptr)
 
__asm__ volatile ("lui $at, 0x8000\nsw $0, 0x58($at)")
 
__asm__ volatile ("mtc0 $0, $7\n")
 
 cester_assert_uint_eq (0, *ptr)
 
 cester_assert_uint_eq (0, s_got40)
 
 cester_assert_uint_eq (0, s_got80)
 
 cester_assert_uint_eq (0, s_from)
 
 cester_assert_uint_eq (0, s_epc)
 
 CESTER_TEST (cpu_cop0_upper_memory_write_bp, cpu_tests, uint32_t t;volatile uint32_t *ptr=(volatile uint32_t *) 0x00200058; *ptr=1;__asm__ volatile("" " lui %0, 0b1100101010000000\n" " mtc0 %0, $7\n" " li %0, 0x58\n" " mtc0 %0, $5\n" " li %0, 0xfffffff0\n" " mtc0 %0, $9\n" :"=r"(t));cester_assert_uint_eq(1, *ptr);__asm__ volatile("lui $at, 0x0020\nsw $0, 0x58($at)");__asm__ volatile("mtc0 $0, $7\n");cester_assert_uint_eq(0, *ptr);cester_assert_uint_eq(0, s_got40);cester_assert_uint_eq(0, s_got80);cester_assert_uint_eq(0, s_from);cester_assert_uint_eq(0, s_epc);) CESTER_TEST(cpu_cop0_unaligned_write_bp
 
 cester_assert_uint_eq (0x01020304, *ptr)
 
__asm__ volatile ("la %0, 1f\n1:\nsb $0, 0x59($0)" :"=r"(expectedEPC))
 
 cester_assert_uint_eq (0x01020004, *ptr)
 
 cester_assert_uint_eq (1, s_got40)
 
 cester_assert_uint_eq (0x40, s_from)
 
 cester_assert_uint_eq (expectedEPC, s_epc)
 

Variables

 cpu_tests
 
uint32_t t
 
volatile uint32_tptr = (volatile uint32_t *) 0x80000058
 
uint32_t expectedEPC
 

Macro Definition Documentation

◆ CESTER_MAYBE_TEST

#define CESTER_MAYBE_TEST   CESTER_TEST

◆ CESTER_NO_SIGNAL

#define CESTER_NO_SIGNAL

◆ CESTER_NO_TIME

#define CESTER_NO_TIME

◆ EXIT_FAILURE

#define EXIT_FAILURE   1

◆ EXIT_SUCCESS

#define EXIT_SUCCESS   0

◆ PCSX_TESTS

#define PCSX_TESTS   0

Function Documentation

◆ cester_assert_uint_eq() [1/11]

cester_assert_uint_eq ( ,
ptr 
)

◆ cester_assert_uint_eq() [2/11]

cester_assert_uint_eq ( ,
s_epc   
)

◆ cester_assert_uint_eq() [3/11]

cester_assert_uint_eq ( ,
s_from   
)

◆ cester_assert_uint_eq() [4/11]

cester_assert_uint_eq ( ,
s_got40   
)

◆ cester_assert_uint_eq() [5/11]

cester_assert_uint_eq ( ,
s_got80   
)

◆ cester_assert_uint_eq() [6/11]

cester_assert_uint_eq ( 0x01020004  ,
ptr 
)

◆ cester_assert_uint_eq() [7/11]

cester_assert_uint_eq ( 0x01020304  ,
ptr 
)

◆ cester_assert_uint_eq() [8/11]

cester_assert_uint_eq ( 0x40  ,
s_from   
)

◆ cester_assert_uint_eq() [9/11]

cester_assert_uint_eq ( ,
ptr 
)

◆ cester_assert_uint_eq() [10/11]

cester_assert_uint_eq ( ,
s_got40   
)

◆ cester_assert_uint_eq() [11/11]

cester_assert_uint_eq ( expectedEPC  ,
s_epc   
)

◆ CESTER_TEST() [1/2]

CESTER_TEST ( cpu_cop0_basic_write_bp  ,
cpu_tests  ,
uint32_t expectedEPC;uint32_t t;volatile uint32_t ptr = (volatile uint32_t *) 0x58; *ptr = 1; __asm__ volatile("""    lui   %0, 0b1100101010000000\n""    mtc0  %0, $7\n""    li    %0, 0x58\n""    mtc0  %0, $5\n""    li    %0, 0xfffffff0\n""    mtc0  %0, $9\n" : "=r"(t)); cester_assert_uint_eq(1, *ptr); __asm__ volatile("la %0, 1f\n1:\nsw $0, 0x58($0)" : "=r"(expectedEPC)); __asm__ volatile("mtc0 $0, $7\n"); cester_assert_uint_eq(0, *ptr); cester_assert_uint_eq(1, s_got40); cester_assert_uint_eq(0, s_got80); cester_assert_uint_eq(0x40, s_from); cester_assert_uint_eq(expectedEPCs_epc); 
)

◆ CESTER_TEST() [2/2]

CESTER_TEST ( cpu_cop0_upper_memory_write_bp  ,
cpu_tests  ,
uint32_t t;volatile uint32_t ptr = (volatile uint32_t *) 0x00200058; *ptr = 1; __asm__ volatile("""    lui   %0, 0b1100101010000000\n""    mtc0  %0, $7\n""    li    %0, 0x58\n""    mtc0  %0, $5\n""    li    %0, 0xfffffff0\n""    mtc0  %0, $9\n" : "=r"(t)); cester_assert_uint_eq(1, *ptr); __asm__ volatile("lui $at, 0x0020\nsw $0, 0x58($at)"); __asm__ volatile("mtc0 $0, $7\n"); cester_assert_uint_eq(0, *ptr); cester_assert_uint_eq(0, s_got40); cester_assert_uint_eq(0, s_got80); cester_assert_uint_eq(0, s_from); cester_assert_uint_eq(0, s_epc); 
)

◆ volatile() [1/4]

__asm__ volatile ( "" " lui %  0,
0b1100101010000000\n" " mtc0 %  0,
  $7\n" " li %,
0x58\n" " mtc0 %  0,
  $5\n" " li %,
0xfffffff0\n" " mtc0 %  0 
)

◆ volatile() [2/4]

__asm__ volatile ( "la %  0,
1f\n1:\nsb  $0 
)

◆ volatile() [3/4]

__asm__ volatile ( "lui  $at,
0x8000\nsw  $0,
0x58($at)"   
)

◆ volatile() [4/4]

__asm__ volatile ( "mtc0  $0,
  $7\n" 
)

Variable Documentation

◆ cpu_tests

cpu_tests

◆ expectedEPC

uint32_t expectedEPC

◆ ptr

* ptr = (volatile uint32_t *) 0x80000058

◆ t