Gizmondo port updated to 1.51b

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@567 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2008-08-10 10:18:36 +00:00
parent fcf94fcc20
commit 84100c0fd5
17 changed files with 537 additions and 228 deletions

View file

@ -22,10 +22,14 @@ extern "C" {
#endif
// external funcs for Sega/Mega CD
int mp3_get_bitrate(FILE *f, int size);
void mp3_start_play(FILE *f, int pos);
void mp3_update(int *buffer, int length, int stereo);
extern int mp3_get_bitrate(FILE *f, int size);
extern void mp3_start_play(FILE *f, int pos);
extern void mp3_update(int *buffer, int length, int stereo);
// this function should write-back d-cache and invalidate i-cache
// on a mem region [start_addr, end_addr)
// used by SVP dynarec
extern void cache_flush_d_inval_i(const void *start_addr, const void *end_addr);
// Pico.c
#define POPT_EN_FM (1<< 0) // 00 000x

View file

@ -23,9 +23,10 @@ extern ssp1601_t *ssp;
#ifndef ARM
#define DUMP_BLOCK 0x0c9a
u32 tcache[SSP_TCACHE_SIZE/4];
u32 *ssp_block_table[0x5090/2];
u32 *ssp_block_table_iram[15][0x800/2];
u32 tcache[SSP_TCACHE_SIZE/4];
char ssp_align[SSP_BLOCKTAB_ALIGN_SIZE];
void ssp_drc_next(void){}
void ssp_drc_next_patch(void){}
void ssp_drc_end(void){}

View file

@ -204,8 +204,8 @@ static void emit_jump(int cond, void *target)
static void handle_caches(void)
{
#ifdef ARM
extern void flush_inval_caches(const void *start_addr, const void *end_addr);
flush_inval_caches(tcache, tcache_ptr);
extern void cache_flush_d_inval_i(const void *start_addr, const void *end_addr);
cache_flush_d_inval_i(tcache, tcache_ptr);
#endif
}

View file

@ -13,7 +13,6 @@
.global ssp_block_table
.global ssp_block_table_iram
.global flush_inval_caches
.global ssp_drc_entry
.global ssp_drc_next
.global ssp_drc_next_patch
@ -28,11 +27,11 @@
.global ssp_hle_11_38a
@ translation cache buffer + pointer table
.text
.data
.align 12 @ 4096
.size tcache, SSP_TCACHE_SIZE
.size ssp_block_table, SSP_BLOCKTAB_SIZE
.size ssp_block_table_iram, SSP_BLOCKTAB_IRAM_SIZE
@.size tcache, SSP_TCACHE_SIZE
@.size ssp_block_table, SSP_BLOCKTAB_SIZE
@.size ssp_block_table_iram, SSP_BLOCKTAB_IRAM_SIZE
tcache:
.space SSP_TCACHE_SIZE
ssp_block_table:
@ -46,12 +45,6 @@ ssp_block_table_iram:
.align 2
flush_inval_caches:
mov r2, #0x0 @ must be 0
swi 0x9f0002
bx lr
@ SSP_GR0, SSP_X, SSP_Y, SSP_A,
@ SSP_ST, SSP_STACK, SSP_PC, SSP_P,
@ SSP_PM0, SSP_PM1, SSP_PM2, SSP_XST,
@ -220,7 +213,7 @@ ssp_drc_dp_end:
str r2, [r7, #SSP_OFFS_TMP1]
sub r0, r1, #4
add r1, r1, #4
bl flush_inval_caches
bl cache_flush_d_inval_i
ldr r2, [r7, #SSP_OFFS_TMP1]
ldr r0, [r7, #SSP_OFFS_TMP0]
bx r2