filename | test/lib.h |
changeset | 278:a66aaa522d31 |
prev | 210:c356f597c896 |
next | 812:8cc61d5ea1f8 |
author | nkeynes |
date | Wed Jan 17 21:27:20 2007 +0000 (17 years ago) |
permissions | -rw-r--r-- |
last change | Rename SPUDMA to G2DMA (following KOS's lead) Remove sh4r.icount (obsolete) Rewrite G2 fifo status in terms of slice cycles |
file | annotate | diff | log | raw |
nkeynes@185 | 1 | #ifndef dc_lib_H |
nkeynes@185 | 2 | #define dc_lib_H |
nkeynes@185 | 3 | |
nkeynes@185 | 4 | #include <stdio.h> |
nkeynes@185 | 5 | |
nkeynes@185 | 6 | typedef unsigned char uint8_t; |
nkeynes@185 | 7 | typedef unsigned short uint16_t; |
nkeynes@185 | 8 | typedef unsigned int uint32_t; |
nkeynes@185 | 9 | typedef volatile unsigned int vuint32_t; |
nkeynes@185 | 10 | typedef volatile unsigned short vuint16_t; |
nkeynes@185 | 11 | |
nkeynes@185 | 12 | #define ASIC_STATUS0 0xA05F6900 |
nkeynes@185 | 13 | #define ASIC_STATUS1 0xA05F6904 |
nkeynes@185 | 14 | #define ASIC_STATUS2 0xA05F6908 |
nkeynes@185 | 15 | #define ASIC_IRQB0 0xA05F6920 |
nkeynes@185 | 16 | #define ASIC_IRQC2 0xA05f6938 |
nkeynes@185 | 17 | #define IRQB0_MASK 0x0007B000 |
nkeynes@185 | 18 | |
nkeynes@210 | 19 | #define float_read(A) (*((volatile float*)(A))) |
nkeynes@210 | 20 | #define float_write(A, V) ( (*((volatile float*)(A))) = (V) ) |
nkeynes@185 | 21 | #define long_read(A) (*((volatile unsigned long*)(A))) |
nkeynes@185 | 22 | #define long_write(A, V) ( (*((volatile unsigned long*)(A))) = (V) ) |
nkeynes@185 | 23 | #define word_read(A) (*((volatile unsigned short*)(A))) |
nkeynes@185 | 24 | #define word_write(A, V) ( (*((volatile unsigned short*)(A))) = (V) ) |
nkeynes@185 | 25 | #define byte_read(A) (unsigned int)(*((volatile unsigned char*)(A))) |
nkeynes@185 | 26 | #define byte_write(A, V) ( (*((volatile unsigned char*)(A))) = (V) ) |
nkeynes@185 | 27 | |
nkeynes@185 | 28 | int asic_wait(int event); |
nkeynes@185 | 29 | void asic_clear(void); |
nkeynes@185 | 30 | void asic_dump(FILE *f); |
nkeynes@185 | 31 | |
nkeynes@185 | 32 | void fwrite_dump(FILE *f, char *buf, int length); |
nkeynes@190 | 33 | void fwrite_diff(FILE *f, char *expect, int exp_length, char *buf, int length); |
nkeynes@190 | 34 | void fwrite_diff32(FILE *f, char *expect, int exp_length, char *buf, int length); |
nkeynes@185 | 35 | |
nkeynes@185 | 36 | void *align32(char *buf ); |
nkeynes@185 | 37 | void write_asic_status(void); |
nkeynes@185 | 38 | void reset_asic_status(void); |
nkeynes@185 | 39 | void g2_fifo_wait( void ); |
nkeynes@185 | 40 | |
nkeynes@185 | 41 | void spu_memload( uint32_t dst, const void *src, int length ); |
nkeynes@185 | 42 | void spu_memread( void *dst, uint32_t src, int length ); |
nkeynes@185 | 43 | void dump_spu_memory( unsigned int from, int length ); |
nkeynes@185 | 44 | |
nkeynes@185 | 45 | struct spudma_struct { |
nkeynes@185 | 46 | uint32_t g2_addr; |
nkeynes@185 | 47 | uint32_t sh4_addr; |
nkeynes@185 | 48 | uint32_t count; |
nkeynes@185 | 49 | uint32_t direction; |
nkeynes@185 | 50 | uint32_t mode; |
nkeynes@185 | 51 | uint32_t enable; |
nkeynes@185 | 52 | uint32_t status; |
nkeynes@185 | 53 | uint32_t blah; |
nkeynes@185 | 54 | }; |
nkeynes@185 | 55 | extern struct spudma_struct *spudma; |
nkeynes@185 | 56 | |
nkeynes@185 | 57 | #define get_asic_status() (long_read(ASIC_STATUS0)&EVENT_MAPLE_MASK) |
nkeynes@185 | 58 | |
nkeynes@185 | 59 | int is_start_pressed(); |
nkeynes@185 | 60 | |
nkeynes@185 | 61 | #define CHECK_IEQUALS( a, b ) if( a != b ) { fprintf(stderr, "Assertion failed at %s:%d: expected %08X, but was %08X\n", __FILE__, __LINE__, a, b ); return -1; } |
nkeynes@278 | 62 | #define DMA_ALIGN(x) ((void *)((((unsigned int)(x))+0x1F)&0xFFFFFFE0)) |
nkeynes@185 | 63 | |
nkeynes@185 | 64 | #endif |
.