Nugget
Bare-metal libraries and examples for the original PlayStation
Loading...
Searching...
No Matches
Macros | Functions | Variables
gte-regio.c File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define GTE_CTRL32_EACH(M)    M(5) M(6) M(7) M(13) M(14) M(15) M(21) M(22) M(23) M(24) M(25) M(28)
 
#define GTE_CTRL32_PROBE(r)
 
#define GTE_CTRL32_SET(r)   cop2_putc(r, 0x0bad0000u | (r));
 
#define GTE_CTRL32_CHECK(r)
 
#define GTE_CTRL32_CMDPROBE(NAME, OP)
 

Functions

 CESTER_TEST (regio_mac0_roundtrip, CESTER_TEST(gte_tests, cop2_put(24, 0x12345678);uint32_t out;cop2_get(24, out);cester_assert_uint_eq(0x12345678, out);)
 
 cester_assert_int_eq (1, ok)
 
 CESTER_TEST (regio_flag_bits13_18_set_summary, gte_tests, uint32_t flag;int ok=1;int i;for(i=13;i<=18;i++) { cop2_putc(31,(1u<< i));flag=gte_read_flag();if(flag !=((1u<< i)|(1u<< 31))) ok=0;} cester_assert_int_eq(1, ok);) CESTER_TEST(regio_flag_bits23_30_set_summary
 
 for (i=23;i<=30;i++)
 
 CESTER_TEST (regio_ctrl_r33_sign_extend, CESTER_TEST(gte_tests, cop2_putc(4, 0x00008000);uint32_t out;cop2_getc(4, out);cester_assert_uint_eq(0xffff8000, out);)
 
 for (unsigned p=0;p< sizeof(pats)/sizeof(pats[0]);p++)
 
 cester_assert_int_eq (1, _responds)
 

Variables

 gte_tests
 
uint32_t flag
 
int ok = 1
 
int i
 
int _responds = 1
 

Macro Definition Documentation

◆ GTE_CTRL32_CHECK

#define GTE_CTRL32_CHECK (   r)
Value:
{ \
uint32_t _o; \
cop2_getc(r, _o); \
if (_o != (0x0bad0000u | (r))) { \
_changed++; \
ramsyscall_printf("CTRL32 %s wrote c%d: 0x%08x\n", _nm, (r), _o); \
} \
}
uint32_t r
Definition cpu.c:310

◆ GTE_CTRL32_CMDPROBE

#define GTE_CTRL32_CMDPROBE (   NAME,
  OP 
)
Value:
do { \
const char *_nm = (NAME); \
uint32_t _flag; \
GTE_CTRL32_EACH(GTE_CTRL32_SET) \
cop2_putc(31, 0xffffffffu); \
cop2_cmd(OP); \
cop2_getc(31, _flag); \
if (_flag == 0xfffff000u) { \
_flagkept++; \
ramsyscall_printf("CTRL32 %s left FLAG seeded\n", _nm); \
} \
ramsyscall_printf("CTRL32 %s FLAG=0x%08x\n", _nm, _flag); \
GTE_CTRL32_EACH(GTE_CTRL32_CHECK) \
} while (0)
#define GTE_CTRL32_SET(r)
#define GTE_CTRL32_CHECK(r)

◆ GTE_CTRL32_EACH

#define GTE_CTRL32_EACH (   M)     M(5) M(6) M(7) M(13) M(14) M(15) M(21) M(22) M(23) M(24) M(25) M(28)

◆ GTE_CTRL32_PROBE

#define GTE_CTRL32_PROBE (   r)
Value:
{ \
uint32_t _a; \
cop2_putc(r, _pat); \
cop2_getc(r, _a); \
if (_pat == 0xffffffffu && _a == 0u) _responds = 0; \
ramsyscall_printf(" c%d=0x%08x", (r), _a); \
}
int _responds
Definition gte-regio.c:448

◆ GTE_CTRL32_SET

#define GTE_CTRL32_SET (   r)    cop2_putc(r, 0x0bad0000u | (r));

Function Documentation

◆ cester_assert_int_eq() [1/2]

cester_assert_int_eq ( 1  ,
_responds   
)

◆ cester_assert_int_eq() [2/2]

cester_assert_int_eq ( 1  ,
ok   
)

◆ CESTER_TEST() [1/3]

CESTER_TEST ( regio_ctrl_r33_sign_extend  ,
CESTER_TEST(  gte_tests,
cop2_putc(4, 0x00008000);uint32_t out;cop2_getc(4, out);cester_assert_uint_eq(0xffff8000, out);   
)

◆ CESTER_TEST() [2/3]

CESTER_TEST ( regio_flag_bits13_18_set_summary  ,
gte_tests  ,
uint32_t flag;int  ok = 1; int i; for (i = 13; i <= 18; i++) { cop2_putc(31, (1u << i)); flag = gte_read_flag(); if (flag != ((1u << i) | (1u << 31))) ok = 0; } cester_assert_int_eq(1, ok); 
)

◆ CESTER_TEST() [3/3]

CESTER_TEST ( regio_mac0_roundtrip  ,
CESTER_TEST(  gte_tests,
cop2_put(24, 0x12345678);uint32_t out;cop2_get(24, out);cester_assert_uint_eq(0x12345678, out);   
)

◆ for() [1/2]

for ( i  = 23; i <= 30; i++)

◆ for() [2/2]

for ( )

Variable Documentation

◆ _responds

int _responds = 1

◆ flag

uint32_t flag

◆ gte_tests

gte_tests

◆ i

int i

◆ ok

int ok = 1