Nugget
Bare-metal libraries and examples for the original PlayStation
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Functions
bcc-bits.c File Reference
#include <stdint.h>
#include "common/hardware/dma.h"
#include "common/hardware/hwregs.h"
#include "common/syscalls/syscalls.h"
Include dependency graph for bcc-bits.c:

Classes

struct  Bench
 

Macros

#define BCC   (*(volatile uint32_t *)0xfffe0130)
 
#define T2_VALUE   (*(volatile uint32_t *)0xbf801120)
 
#define T2_MODE   (*(volatile uint32_t *)0xbf801124)
 
#define BCC_DEFAULT   0x0001e988u
 
#define TIMED(body)
 
#define NBENCH   (sizeof(s_bench) / sizeof(s_bench[0]))
 

Typedefs

typedef void(* setBccFn) (uint32_t)
 
typedef uint32_t(* benchFn) (volatile uint32_t *, volatile uint32_t *)
 

Functions

int main (void)
 

Macro Definition Documentation

◆ BCC

#define BCC   (*(volatile uint32_t *)0xfffe0130)

◆ BCC_DEFAULT

#define BCC_DEFAULT   0x0001e988u

◆ NBENCH

#define NBENCH   (sizeof(s_bench) / sizeof(s_bench[0]))

◆ T2_MODE

#define T2_MODE   (*(volatile uint32_t *)0xbf801124)

◆ T2_VALUE

#define T2_VALUE   (*(volatile uint32_t *)0xbf801120)

◆ TIMED

#define TIMED (   body)
Value:
({ \
uint32_t t0, t1; \
__asm__ volatile(".set push\n.set noreorder\n" \
"lw %0, 0(%2)\n" body "lw %1, 0(%2)\n" \
".set pop\n" \
: "=&r"(t0), "=&r"(t1) \
: "r"(&T2_VALUE), "r"(ram), "r"(spad) \
: "t0", "t1", "memory"); \
(t1 - t0) & 0xffff; \
})
#define T2_VALUE
Definition bcc-bits.c:52
__asm__(" .section .text.monitorSlotEntry, \"ax\", @progbits\n" " .align 2\n" " .global monitorSlotEntry\n" " .type monitorSlotEntry, @function\n" " .set push\n" " .set noreorder\n" " .set noat\n" "monitorSlotEntry:\n" " mfc0 $v0, $13\n" " nop\n" " andi $v0, $v0, 0x7c\n" " beqz $v0, 1f\n" " srl $v0, $v0, 2\n" " li $v1, " MON_STR(MON_SLOT_EXCMASK) "\n" " srlv $v1, $v1, $v0\n" " andi $v1, $v1, 1\n" " bnez $v1, 2f\n" " nop\n" " jr $ra\n" " nop\n" "1:\n" MON_SLOT_RX_TEST " jr $ra\n" " nop\n" "2:\n" " sw $a0, 0x10($k0)\n" " sw $a1, 0x14($k0)\n" " sw $a2, 0x18($k0)\n" " sw $a3, 0x1c($k0)\n" " mfc0 $a0, $12\n" " nop\n" " sw $a0, 0x8c($k0)\n" " mfc0 $a1, $13\n" " nop\n" " sw $a1, 0x90($k0)\n" " sw $k1, 0x6c($k0)\n" " sw $s0, 0x40($k0)\n" " sw $s1, 0x44($k0)\n" " sw $s2, 0x48($k0)\n" " sw $s3, 0x4c($k0)\n" " sw $s4, 0x50($k0)\n" " sw $s5, 0x54($k0)\n" " sw $s6, 0x58($k0)\n" " sw $s7, 0x5c($k0)\n" " sw $t0, 0x20($k0)\n" " sw $t1, 0x24($k0)\n" " sw $t2, 0x28($k0)\n" " sw $t3, 0x2c($k0)\n" " sw $t4, 0x30($k0)\n" " sw $t5, 0x34($k0)\n" " sw $t6, 0x38($k0)\n" " sw $t7, 0x3c($k0)\n" " sw $t8, 0x60($k0)\n" " sw $t9, 0x64($k0)\n" " sw $gp, 0x70($k0)\n" " sw $sp, 0x74($k0)\n" " sw $fp, 0x78($k0)\n" " mfhi $a0\n" " nop\n" " sw $a0, 0x84($k0)\n" " mflo $a0\n" " nop\n" " sw $a0, 0x88($k0)\n" " move $s0, $ra\n" " la $sp, monitorSlotStack + " MON_STR(MONITOR_SLOT_STACK_WORDS) " * 4 - 16\n" " jal monitorSlotDispatch\n" " nop\n" " lw $k0, 0x108($zero)\n" " move $ra, $s0\n" " lw $k0, 0($k0)\n" " nop\n" " addiu $k0, $k0, 8\n" " lw $a0, 0x84($k0)\n" " lw $a1, 0x88($k0)\n" " mthi $a0\n" " mtlo $a1\n" " lw $a0, 0x10($k0)\n" " lw $a1, 0x14($k0)\n" " lw $a2, 0x18($k0)\n" " lw $a3, 0x1c($k0)\n" " lw $t0, 0x20($k0)\n" " lw $t1, 0x24($k0)\n" " lw $t2, 0x28($k0)\n" " lw $t3, 0x2c($k0)\n" " lw $t4, 0x30($k0)\n" " lw $t5, 0x34($k0)\n" " lw $t6, 0x38($k0)\n" " lw $t7, 0x3c($k0)\n" " lw $t8, 0x60($k0)\n" " lw $t9, 0x64($k0)\n" " lw $s0, 0x40($k0)\n" " lw $sp, 0x74($k0)\n" " jr $ra\n" " nop\n" " .set pop\n" " .size monitorSlotEntry, . - monitorSlotEntry\n" " .previous\n")
void uint32_t(classId, spec)

Typedef Documentation

◆ benchFn

typedef uint32_t(* benchFn) (volatile uint32_t *, volatile uint32_t *)

◆ setBccFn

typedef void(* setBccFn) (uint32_t)

Function Documentation

◆ main()

int main ( void  )