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
|