revision 502:c4ecae2b1b5e
summary |
tree |
shortlog |
changelog |
graph |
changeset |
raw | bz2 | zip | gz changeset | 502:c4ecae2b1b5e |
parent | 501:41328c68bd73 |
child | 503:36a668469e37 |
author | nkeynes |
date | Thu Nov 08 11:54:16 2007 +0000 (16 years ago) |
Add sh4ptr_t type, start converting bare pointer refs to it
src/aica/armmem.c | view | annotate | diff | log | ||
src/bios.c | view | annotate | diff | log | ||
src/bootstrap.c | view | annotate | diff | log | ||
src/bootstrap.h | view | annotate | diff | log | ||
src/dcload.c | view | annotate | diff | log | ||
src/display.h | view | annotate | diff | log | ||
src/loader.c | view | annotate | diff | log | ||
src/lxdream.h | view | annotate | diff | log | ||
src/maple/controller.c | view | annotate | diff | log | ||
src/maple/maple.h | view | annotate | diff | log | ||
src/mem.c | view | annotate | diff | log | ||
src/mem.h | view | annotate | diff | log | ||
src/pvr2/pvr2.c | view | annotate | diff | log | ||
src/pvr2/pvr2mem.c | view | annotate | diff | log | ||
src/sh4/dmac.c | view | annotate | diff | log | ||
src/sh4/sh4.c | view | annotate | diff | log | ||
src/sh4/sh4mem.c | view | annotate | diff | log | ||
src/sh4/sh4mmio.c | view | annotate | diff | log | ||
src/sh4/sh4x86.c | view | annotate | diff | log | ||
src/sh4/sh4x86.in | view | annotate | diff | log | ||
src/sh4/xltcache.c | view | annotate | diff | log | ||
src/util.c | view | annotate | diff | log |
1.1 --- a/src/aica/armmem.c Thu Nov 08 11:53:56 2007 +00001.2 +++ b/src/aica/armmem.c Thu Nov 08 11:54:16 2007 +00001.3 @@ -1,5 +1,5 @@1.4 /**1.5 - * $Id: armmem.c,v 1.8 2007-10-09 08:11:51 nkeynes Exp $1.6 + * $Id: armmem.c,v 1.9 2007-11-08 11:54:16 nkeynes Exp $1.7 *1.8 * Implements the ARM's memory map.1.9 *1.10 @@ -21,8 +21,8 @@1.11 #include "mem.h"1.12 #include "aica.h"1.14 -char *arm_mem = NULL;1.15 -char *arm_mem_scratch = NULL;1.16 +unsigned char *arm_mem = NULL;1.17 +unsigned char *arm_mem_scratch = NULL;1.19 void arm_mem_init() {1.20 arm_mem = mem_get_region_by_name( MEM_REGION_AUDIO );
2.1 --- a/src/bios.c Thu Nov 08 11:53:56 2007 +00002.2 +++ b/src/bios.c Thu Nov 08 11:54:16 2007 +00002.3 @@ -1,5 +1,5 @@2.4 /**2.5 - * $Id: bios.c,v 1.4 2007-10-08 12:06:01 nkeynes Exp $2.6 + * $Id: bios.c,v 1.5 2007-11-08 11:54:16 nkeynes Exp $2.7 *2.8 * "Fake" BIOS functions, for operation without the actual BIOS.2.9 *2.10 @@ -55,7 +55,7 @@2.11 typedef struct gdrom_command {2.12 int status;2.13 uint32_t cmd_code;2.14 - char *data;2.15 + sh4ptr_t data;2.16 uint32_t result[4];2.17 } *gdrom_command_t;2.19 @@ -86,7 +86,7 @@2.20 memset( &gdrom_cmd_queue, 0, sizeof(gdrom_cmd_queue) );2.21 }2.23 -uint32_t bios_gdrom_enqueue( uint32_t cmd, char *ptr )2.24 +uint32_t bios_gdrom_enqueue( uint32_t cmd, sh4ptr_t ptr )2.25 {2.26 int i;2.27 for( i=0; i<COMMAND_QUEUE_LENGTH; i++ ) {2.28 @@ -151,7 +151,7 @@2.29 sh4r.r[0] = cmd->status;2.30 if( cmd->status == GD_CMD_STATUS_ERROR &&2.31 sh4r.r[5] != 0 ) {2.32 - mem_copy_to_sh4( sh4r.r[5], (unsigned char *)&cmd->result, sizeof(cmd->result) );2.33 + mem_copy_to_sh4( sh4r.r[5], (sh4ptr_t)&cmd->result, sizeof(cmd->result) );2.34 }2.35 }2.36 break;2.37 @@ -163,7 +163,7 @@2.38 break;2.39 case 4: /* Drive status */2.40 if( sh4r.r[4] != 0 ) {2.41 - mem_copy_to_sh4( sh4r.r[4], (unsigned char *)&bios_gdrom_status,2.42 + mem_copy_to_sh4( sh4r.r[4], (sh4ptr_t)&bios_gdrom_status,2.43 sizeof(bios_gdrom_status) );2.44 }2.45 sh4r.r[0] = 0;
3.1 --- a/src/bootstrap.c Thu Nov 08 11:53:56 2007 +00003.2 +++ b/src/bootstrap.c Thu Nov 08 11:54:16 2007 +00003.3 @@ -1,5 +1,5 @@3.4 /**3.5 - * $Id: bootstrap.c,v 1.8 2007-10-11 08:22:03 nkeynes Exp $3.6 + * $Id: bootstrap.c,v 1.9 2007-11-08 11:54:16 nkeynes Exp $3.7 *3.8 * CD Bootstrap header parsing. Mostly for informational purposes.3.9 *3.10 @@ -106,7 +106,7 @@3.11 * @param detail true to include a ful information dump, false for just3.12 * the facts, maam.3.13 */3.14 -void bootstrap_dump( unsigned char *data, gboolean detail )3.15 +void bootstrap_dump( void *data, gboolean detail )3.16 {3.17 struct dc_bootstrap_head *head;3.18 int i, got, periph, crc, hcrc;
4.1 --- a/src/bootstrap.h Thu Nov 08 11:53:56 2007 +00004.2 +++ b/src/bootstrap.h Thu Nov 08 11:54:16 2007 +00004.3 @@ -1,5 +1,5 @@4.4 /**4.5 - * $Id: bootstrap.h,v 1.5 2007-10-06 08:59:42 nkeynes Exp $4.6 + * $Id: bootstrap.h,v 1.6 2007-11-08 11:54:16 nkeynes Exp $4.7 *4.8 * CD Bootstrap header parsing. Mostly for informational purposes.4.9 *4.10 @@ -32,7 +32,7 @@4.11 * Dump the bootstrap info to the output log for infomational/debugging4.12 * purposes.4.13 */4.14 -void bootstrap_dump(unsigned char *data, gboolean detail);4.15 +void bootstrap_dump(void *data, gboolean detail);4.17 #ifdef __cplusplus4.18 }
5.1 --- a/src/dcload.c Thu Nov 08 11:53:56 2007 +00005.2 +++ b/src/dcload.c Thu Nov 08 11:54:16 2007 +00005.3 @@ -1,5 +1,5 @@5.4 /**5.5 - * $Id: dcload.c,v 1.7 2007-10-06 08:59:42 nkeynes Exp $5.6 + * $Id: dcload.c,v 1.8 2007-11-08 11:54:16 nkeynes Exp $5.7 *5.8 * DC-load syscall implementation.5.9 *5.10 @@ -86,7 +86,7 @@5.11 if( fd < 0 || fd >= MAX_OPEN_FDS || open_fds[fd] == -1 ) {5.12 sh4r.r[0] = -1;5.13 } else {5.14 - char *buf = mem_get_region( sh4r.r[6] );5.15 + sh4ptr_t buf = mem_get_region( sh4r.r[6] );5.16 int length = sh4r.r[7];5.17 sh4r.r[0] = read( open_fds[fd], buf, length );5.18 }5.19 @@ -96,7 +96,7 @@5.20 if( fd < 0 || fd >= MAX_OPEN_FDS || open_fds[fd] == -1 ) {5.21 sh4r.r[0] = -1;5.22 } else {5.23 - char *buf = mem_get_region( sh4r.r[6] );5.24 + sh4ptr_t buf = mem_get_region( sh4r.r[6] );5.25 int length = sh4r.r[7];5.26 sh4r.r[0] = write( open_fds[fd], buf, length );5.27 }5.28 @@ -117,7 +117,7 @@5.29 if( fd == -1 ) {5.30 sh4r.r[0] = -1;5.31 } else {5.32 - char *filename = mem_get_region( sh4r.r[5] );5.33 + char *filename = (char *)mem_get_region( sh4r.r[5] );5.34 int realfd = open( filename, sh4r.r[6] );5.35 open_fds[fd] = realfd;5.36 sh4r.r[0] = realfd;
6.1 --- a/src/display.h Thu Nov 08 11:53:56 2007 +00006.2 +++ b/src/display.h Thu Nov 08 11:54:16 2007 +00006.3 @@ -1,5 +1,5 @@6.4 /**6.5 - * $Id: display.h,v 1.11 2007-10-31 09:10:23 nkeynes Exp $6.6 + * $Id: display.h,v 1.12 2007-11-08 11:54:16 nkeynes Exp $6.7 *6.8 * The PC side of the video support (responsible for actually displaying /6.9 * rendering frames)6.10 @@ -80,7 +80,7 @@6.11 sh4addr_t address;6.12 uint32_t size; /* Size of buffer in bytes, must be width*height*bpp */6.13 gboolean inverted;/* True if the buffer is upside down */6.14 - char *data;6.15 + unsigned char *data;6.16 };6.18 /**
7.1 --- a/src/loader.c Thu Nov 08 11:53:56 2007 +00007.2 +++ b/src/loader.c Thu Nov 08 11:54:16 2007 +00007.3 @@ -1,5 +1,5 @@7.4 /**7.5 - * $Id: loader.c,v 1.21 2007-10-31 12:05:23 nkeynes Exp $7.6 + * $Id: loader.c,v 1.22 2007-11-08 11:54:16 nkeynes Exp $7.7 *7.8 * File loading routines, mostly for loading demos without going through the7.9 * whole procedure of making a CD image for them.7.10 @@ -75,7 +75,7 @@7.11 if( memcmp( buf, bootstrap_magic, 32 ) == 0 ) {7.12 /* we have a DC bootstrap */7.13 if( st.st_size == BOOTSTRAP_SIZE ) {7.14 - unsigned char *load = (unsigned char *)mem_get_region( BOOTSTRAP_LOAD_ADDR );7.15 + sh4ptr_t load = mem_get_region( BOOTSTRAP_LOAD_ADDR );7.16 lseek( fd, 0, SEEK_SET );7.17 read( fd, load, BOOTSTRAP_SIZE );7.18 bootstrap_dump( load, TRUE );7.19 @@ -167,7 +167,7 @@7.20 read( fd, &phdr, sizeof(phdr) );7.21 if( phdr.p_type == PT_LOAD ) {7.22 lseek( fd, phdr.p_offset, SEEK_SET );7.23 - char *target = mem_get_region( phdr.p_vaddr );7.24 + sh4ptr_t target = mem_get_region( phdr.p_vaddr );7.25 read( fd, target, phdr.p_filesz );7.26 if( phdr.p_memsz > phdr.p_filesz ) {7.27 memset( target + phdr.p_filesz, 0, phdr.p_memsz - phdr.p_filesz );
8.1 --- a/src/lxdream.h Thu Nov 08 11:53:56 2007 +00008.2 +++ b/src/lxdream.h Thu Nov 08 11:54:16 2007 +00008.3 @@ -1,5 +1,5 @@8.4 /**8.5 - * $Id: lxdream.h,v 1.1 2007-10-31 09:10:23 nkeynes Exp $8.6 + * $Id: lxdream.h,v 1.2 2007-11-08 11:54:16 nkeynes Exp $8.7 *8.8 * Common type definitions and forward declarations8.9 *8.10 @@ -36,8 +36,14 @@8.11 #define max(a,b) ( (a) > (b) ? (a) : (b) )8.12 #endif8.14 -8.15 +/**8.16 + * A 32-bit address in SH4 space8.17 + */8.18 typedef uint32_t sh4addr_t;8.19 +/**8.20 + * A direct pointer into SH4 memory8.21 + */8.22 +typedef unsigned char *sh4ptr_t;8.24 /******************* Forward type declarations ******************/
9.1 --- a/src/maple/controller.c Thu Nov 08 11:53:56 2007 +00009.2 +++ b/src/maple/controller.c Thu Nov 08 11:54:16 2007 +00009.3 @@ -1,5 +1,5 @@9.4 /**9.5 - * $Id: controller.c,v 1.9 2007-10-23 10:47:17 nkeynes Exp $9.6 + * $Id: controller.c,v 1.10 2007-11-08 11:54:16 nkeynes Exp $9.7 *9.8 * Implements the standard dreamcast controller9.9 *9.10 @@ -32,7 +32,7 @@9.11 maple_device_t controller_new();9.12 lxdream_config_entry_t controller_get_config( maple_device_t dev );9.13 int controller_get_cond( maple_device_t dev, int function, unsigned char *outbuf,9.14 - int *outlen );9.15 + unsigned int *outlen );9.17 typedef struct controller_device {9.18 struct maple_device dev;9.19 @@ -187,7 +187,7 @@9.22 int controller_get_cond( maple_device_t mdev, int function, unsigned char *outbuf,9.23 - int *outlen )9.24 + unsigned int *outlen )9.25 {9.26 controller_device_t dev = (controller_device_t)mdev;9.27 if( function == MAPLE_FUNC_CONTROLLER ) {
10.1 --- a/src/maple/maple.h Thu Nov 08 11:53:56 2007 +000010.2 +++ b/src/maple/maple.h Thu Nov 08 11:54:16 2007 +000010.3 @@ -1,5 +1,5 @@10.4 /**10.5 - * $Id: maple.h,v 1.9 2007-10-31 11:53:35 nkeynes Exp $10.6 + * $Id: maple.h,v 1.10 2007-11-08 11:54:16 nkeynes Exp $10.7 *10.8 * Maple bus definitions10.9 *10.10 @@ -79,13 +79,13 @@10.11 int (*reset)(struct maple_device *dev);10.12 int (*shutdown)(struct maple_device *dev);10.13 int (*get_condition)(struct maple_device *dev,10.14 - int function, unsigned char *outbuf, int *buflen);10.15 + int function, unsigned char *outbuf, unsigned int *buflen);10.16 int (*set_condition)(struct maple_device *dev,10.17 - int function, unsigned char *inbuf, int buflen);10.18 + int function, unsigned char *inbuf, unsigned int buflen);10.19 int (*read_block)(struct maple_device *dev,10.20 - int function, uint32_t block, unsigned char *outbuf, int *buflen);10.21 + int function, uint32_t block, unsigned char *outbuf, unsigned int *buflen);10.22 int (*write_block)(struct maple_device *dev,10.23 - int function, uint32_t block, unsigned char *inbuf, int buflen);10.24 + int function, uint32_t block, unsigned char *inbuf, unsigned int buflen);10.25 };10.27 extern struct maple_device_class controller_class;
11.1 --- a/src/mem.c Thu Nov 08 11:53:56 2007 +000011.2 +++ b/src/mem.c Thu Nov 08 11:54:16 2007 +000011.3 @@ -1,5 +1,5 @@11.4 /**11.5 - * $Id: mem.c,v 1.21 2007-11-04 08:49:18 nkeynes Exp $11.6 + * $Id: mem.c,v 1.22 2007-11-08 11:54:16 nkeynes Exp $11.7 * mem.c is responsible for creating and maintaining the overall system memory11.8 * map, as visible from the SH4 processor.11.9 *11.10 @@ -34,7 +34,7 @@11.11 #include "mmio.h"11.12 #include "dreamcast.h"11.14 -char **page_map = NULL;11.15 +sh4ptr_t *page_map = NULL;11.17 int mem_load(FILE *f);11.18 void mem_save(FILE *f);11.19 @@ -163,7 +163,7 @@11.21 int mem_save_block( const gchar *file, uint32_t start, uint32_t length )11.22 {11.23 - char *region;11.24 + sh4ptr_t region;11.25 int len = 4096, total = 0;11.26 uint32_t addr = start;11.27 FILE *f = fopen(file,"w");11.28 @@ -191,7 +191,7 @@11.30 int mem_load_block( const gchar *file, uint32_t start, uint32_t length )11.31 {11.32 - char *region;11.33 + sh4ptr_t region;11.34 int len = 4096, total = 0;11.35 uint32_t addr = start;11.36 struct stat st;11.37 @@ -269,7 +269,7 @@11.38 void *mem_load_rom( const gchar *file, uint32_t base, uint32_t size, uint32_t crc,11.39 const gchar *region_name )11.40 {11.41 - char *mem;11.42 + sh4ptr_t mem;11.43 uint32_t calc_crc;11.44 int status;11.46 @@ -290,7 +290,7 @@11.48 if( status == 0 ) {11.49 /* CRC check only if we loaded something */11.50 - calc_crc = crc32(0L, (unsigned char *)mem, size);11.51 + calc_crc = crc32(0L, (sh4ptr_t)mem, size);11.52 if( calc_crc != crc ) {11.53 WARN( "Bios CRC Mismatch in %s: %08X (expected %08X)",11.54 file, calc_crc, crc);11.55 @@ -300,7 +300,7 @@11.56 return mem;11.57 }11.59 -char *mem_get_region_by_name( const char *name )11.60 +sh4ptr_t mem_get_region_by_name( const char *name )11.61 {11.62 int i;11.63 for( i=0; i<num_mem_rgns; i++ ) {11.64 @@ -330,7 +330,7 @@11.65 /* P4 area (on-chip I/O channels */11.66 P4_io[(io->base&0x1FFFFFFF)>>19] = io;11.67 } else {11.68 - page_map[io->base>>12] = (char *)num_io_rgns;11.69 + page_map[io->base>>12] = (sh4ptr_t )num_io_rgns;11.70 }11.71 io_rgn[num_io_rgns] = io;11.72 num_io_rgns++;11.73 @@ -343,19 +343,19 @@11.75 int mem_has_page( uint32_t addr )11.76 {11.77 - char *page = page_map[ (addr & 0x1FFFFFFF) >> 12 ];11.78 + sh4ptr_t page = page_map[ (addr & 0x1FFFFFFF) >> 12 ];11.79 return page != NULL;11.80 }11.82 -char *mem_get_page( uint32_t addr )11.83 +sh4ptr_t mem_get_page( uint32_t addr )11.84 {11.85 - char *page = page_map[ (addr & 0x1FFFFFFF) >> 12 ];11.86 + sh4ptr_t page = page_map[ (addr & 0x1FFFFFFF) >> 12 ];11.87 return page;11.88 }11.90 -char *mem_get_region( uint32_t addr )11.91 +sh4ptr_t mem_get_region( uint32_t addr )11.92 {11.93 - char *page = page_map[ (addr & 0x1FFFFFFF) >> 12 ];11.94 + sh4ptr_t page = page_map[ (addr & 0x1FFFFFFF) >> 12 ];11.95 if( ((uintptr_t)page) < MAX_IO_REGIONS ) { /* IO Region */11.96 return NULL;11.97 } else {11.98 @@ -368,7 +368,7 @@11.99 if( addr > 0xFF000000 ) {11.100 return P4_io[(addr&0x00FFFFFF)>>12];11.101 }11.102 - char *page = page_map[(addr&0x1FFFFFFF)>>12];11.103 + sh4ptr_t page = page_map[(addr&0x1FFFFFFF)>>12];11.104 if( ((uintptr_t)page) < MAX_IO_REGIONS ) {11.105 return io_rgn[(uintptr_t)page];11.106 } else {
12.1 --- a/src/mem.h Thu Nov 08 11:53:56 2007 +000012.2 +++ b/src/mem.h Thu Nov 08 11:54:16 2007 +000012.3 @@ -1,5 +1,5 @@12.4 /**12.5 - * $Id: mem.h,v 1.15 2007-10-31 09:10:23 nkeynes Exp $12.6 + * $Id: mem.h,v 1.16 2007-11-08 11:54:16 nkeynes Exp $12.7 *12.8 * mem is responsible for creating and maintaining the overall system memory12.9 * map, as visible from the SH4 processor. (Note the ARM has a different map)12.10 @@ -31,7 +31,7 @@12.11 uint32_t base;12.12 uint32_t size;12.13 const char *name;12.14 - char *mem;12.15 + sh4ptr_t mem;12.16 int flags;12.17 } *mem_region_t;12.19 @@ -51,17 +51,17 @@12.20 void *mem_load_rom( const gchar *name, uint32_t base, uint32_t size, uint32_t crc,12.21 const gchar *region_name );12.22 void *mem_alloc_pages( int n );12.23 -char *mem_get_region( uint32_t addr );12.24 -char *mem_get_region_by_name( const char *name );12.25 +sh4ptr_t mem_get_region( uint32_t addr );12.26 +sh4ptr_t mem_get_region_by_name( const char *name );12.27 int mem_has_page( uint32_t addr );12.28 -char *mem_get_page( uint32_t addr );12.29 +sh4ptr_t mem_get_page( uint32_t addr );12.30 int mem_load_block( const gchar *filename, uint32_t base, uint32_t size );12.31 int mem_save_block( const gchar *filename, uint32_t base, uint32_t size );12.32 void mem_set_trace( uint32_t addr, int flag );12.33 void mem_init( void );12.34 void mem_reset( void );12.35 -void mem_copy_from_sh4( unsigned char *dest, sh4addr_t src, size_t count );12.36 -void mem_copy_to_sh4( sh4addr_t dest, unsigned char *src, size_t count );12.37 +void mem_copy_from_sh4( sh4ptr_t dest, sh4addr_t src, size_t count );12.38 +void mem_copy_to_sh4( sh4addr_t dest, sh4ptr_t src, size_t count );12.40 #define ENABLE_DEBUG_MODE 112.42 @@ -90,7 +90,7 @@12.43 void mem_delete_watch( watch_point_t watch );12.44 watch_point_t mem_is_watched( uint32_t addr, int size, int op );12.46 -extern char **page_map;12.47 +extern sh4ptr_t *page_map;12.48 #ifdef __cplusplus12.49 }12.50 #endif
13.1 --- a/src/pvr2/pvr2.c Thu Nov 08 11:53:56 2007 +000013.2 +++ b/src/pvr2/pvr2.c Thu Nov 08 11:54:16 2007 +000013.3 @@ -1,5 +1,5 @@13.4 /**13.5 - * $Id: pvr2.c,v 1.48 2007-10-31 09:10:23 nkeynes Exp $13.6 + * $Id: pvr2.c,v 1.49 2007-11-08 11:54:16 nkeynes Exp $13.7 *13.8 * PVR2 (Video) Core module implementation and MMIO registers.13.9 *13.10 @@ -29,7 +29,7 @@13.11 #define MMIO_IMPL13.12 #include "pvr2/pvr2mmio.h"13.14 -char *video_base;13.15 +unsigned char *video_base;13.17 #define MAX_RENDER_BUFFERS 4
14.1 --- a/src/pvr2/pvr2mem.c Thu Nov 08 11:53:56 2007 +000014.2 +++ b/src/pvr2/pvr2mem.c Thu Nov 08 11:54:16 2007 +000014.3 @@ -1,5 +1,5 @@14.4 /**14.5 - * $Id: pvr2mem.c,v 1.11 2007-10-31 09:10:23 nkeynes Exp $14.6 + * $Id: pvr2mem.c,v 1.12 2007-11-08 11:54:16 nkeynes Exp $14.7 *14.8 * PVR2 (Video) VRAM handling routines (mainly for the 64-bit region)14.9 *14.10 @@ -37,7 +37,7 @@14.11 if( region == 0 ) {14.12 pvr2_vram64_write( destaddr, src, count );14.13 } else {14.14 - char *dest = mem_get_region(destaddr);14.15 + unsigned char *dest = mem_get_region(destaddr);14.16 memcpy( dest, src, count );14.17 }14.18 break;14.19 @@ -51,7 +51,7 @@14.20 if( region == 0 ) {14.21 pvr2_vram64_write( destaddr, src, count );14.22 } else {14.23 - char *dest = mem_get_region(destaddr);14.24 + unsigned char *dest = mem_get_region(destaddr);14.25 memcpy( dest, src, count );14.26 }14.27 }
15.1 --- a/src/sh4/dmac.c Thu Nov 08 11:53:56 2007 +000015.2 +++ b/src/sh4/dmac.c Thu Nov 08 11:54:16 2007 +000015.3 @@ -1,5 +1,5 @@15.4 /**15.5 - * $Id: dmac.c,v 1.3 2007-10-08 12:06:01 nkeynes Exp $15.6 + * $Id: dmac.c,v 1.4 2007-11-08 11:54:16 nkeynes Exp $15.7 *15.8 * SH4 onboard DMA controller (DMAC) peripheral.15.9 *15.10 @@ -170,7 +170,7 @@15.11 *15.12 * @return the number of bytes actually transferred.15.13 */15.14 -uint32_t DMAC_get_buffer( int channel, unsigned char *buf, uint32_t numBytes )15.15 +uint32_t DMAC_get_buffer( int channel, sh4ptr_t buf, uint32_t numBytes )15.16 {15.17 uint32_t control = DMA_CONTROL(channel);15.18 uint32_t source, count, run_count, size, i;15.19 @@ -195,7 +195,7 @@15.20 run_count = count;15.22 /* Do copy - FIXME: doesn't work when crossing regions */15.23 - char *region = mem_get_region( source );15.24 + sh4ptr_t region = mem_get_region( source );15.25 switch( (control >> 12) & 0x03 ) {15.26 case 0:15.27 memcpy( tmp, region, size );15.28 @@ -235,7 +235,7 @@15.29 return run_count * size;15.30 }15.32 -uint32_t DMAC_put_buffer( int channel, unsigned char *buf, uint32_t numBytes )15.33 +uint32_t DMAC_put_buffer( int channel, sh4ptr_t buf, uint32_t numBytes )15.34 {15.35 uint32_t control = DMA_CONTROL(channel);15.36 uint32_t dest, count, run_count, size, i;15.37 @@ -258,7 +258,7 @@15.38 run_count = count;15.40 /* Do copy - FIXME: doesn't work when crossing regions */15.41 - char *region = mem_get_region( dest );15.42 + sh4ptr_t region = mem_get_region( dest );15.43 switch( (control >> 12) & 0x03 ) {15.44 case 0:15.45 for( i=0; i<run_count; i++ ) {
16.1 --- a/src/sh4/sh4.c Thu Nov 08 11:53:56 2007 +000016.2 +++ b/src/sh4/sh4.c Thu Nov 08 11:54:16 2007 +000016.3 @@ -1,5 +1,5 @@16.4 /**16.5 - * $Id: sh4.c,v 1.6 2007-10-31 09:02:18 nkeynes Exp $16.6 + * $Id: sh4.c,v 1.7 2007-11-08 11:54:16 nkeynes Exp $16.7 *16.8 * SH4 parent module for all CPU modes and SH4 peripheral16.9 * modules.16.10 @@ -52,7 +52,7 @@16.11 struct sh4_registers sh4r;16.12 struct breakpoint_struct sh4_breakpoints[MAX_BREAKPOINTS];16.13 int sh4_breakpoint_count = 0;16.14 -extern char *sh4_main_ram;16.15 +extern sh4ptr_t sh4_main_ram;16.17 void sh4_set_use_xlat( gboolean use )16.18 {16.19 @@ -106,6 +106,11 @@16.21 void sh4_stop(void)16.22 {16.23 + if( sh4_module.run_time_slice == sh4_xlat_run_slice ) {16.24 + /* If we were running with the translator, update new_pc and in_delay_slot */16.25 + sh4r.new_pc = sh4r.pc+2;16.26 + sh4r.in_delay_slot = FALSE;16.27 + }16.29 }
17.1 --- a/src/sh4/sh4mem.c Thu Nov 08 11:53:56 2007 +000017.2 +++ b/src/sh4/sh4mem.c Thu Nov 08 11:54:16 2007 +000017.3 @@ -1,5 +1,5 @@17.4 /**17.5 - * $Id: sh4mem.c,v 1.29 2007-10-16 12:36:59 nkeynes Exp $17.6 + * $Id: sh4mem.c,v 1.30 2007-11-08 11:54:16 nkeynes Exp $17.7 * sh4mem.c is responsible for the SH4's access to memory (including memory17.8 * mapped I/O), using the page maps created in mem.c17.9 *17.10 @@ -67,7 +67,7 @@17.12 extern struct mem_region mem_rgn[];17.13 extern struct mmio_region *P4_io[];17.14 -char *sh4_main_ram;17.15 +sh4ptr_t sh4_main_ram;17.17 int32_t sh4_read_p4( uint32_t addr )17.18 {17.19 @@ -106,7 +106,7 @@17.21 int32_t sh4_read_phys_word( uint32_t addr )17.22 {17.23 - char *page;17.24 + sh4ptr_t page;17.25 if( addr >= 0xE0000000 ) /* P4 Area, handled specially */17.26 return SIGNEXT16(sh4_read_p4( addr ));17.28 @@ -129,7 +129,7 @@17.30 int32_t sh4_read_long( uint32_t addr )17.31 {17.32 - char *page;17.33 + sh4ptr_t page;17.35 CHECK_READ_WATCH(addr,4);17.37 @@ -161,7 +161,7 @@17.39 int32_t sh4_read_word( uint32_t addr )17.40 {17.41 - char *page;17.42 + sh4ptr_t page;17.44 CHECK_READ_WATCH(addr,2);17.46 @@ -193,7 +193,7 @@17.48 int32_t sh4_read_byte( uint32_t addr )17.49 {17.50 - char *page;17.51 + sh4ptr_t page;17.53 CHECK_READ_WATCH(addr,1);17.55 @@ -226,7 +226,7 @@17.57 void sh4_write_long( uint32_t addr, uint32_t val )17.58 {17.59 - char *page;17.60 + sh4ptr_t page;17.62 // fprintf( stderr, "MOV.L %08X => %08X\n", val, addr );17.63 CHECK_WRITE_WATCH(addr,4,val);17.64 @@ -273,7 +273,7 @@17.66 void sh4_write_word( uint32_t addr, uint32_t val )17.67 {17.68 - char *page;17.69 + sh4ptr_t page;17.71 // fprintf( stderr, "MOV.W %04X => %08X\n", val, addr );17.72 CHECK_WRITE_WATCH(addr,2,val);17.73 @@ -314,7 +314,7 @@17.75 void sh4_write_byte( uint32_t addr, uint32_t val )17.76 {17.77 - char *page;17.78 + sh4ptr_t page;17.80 // fprintf( stderr, "MOV.B %02X => %08X\n", val, addr );17.81 CHECK_WRITE_WATCH(addr,1,val);17.82 @@ -358,11 +358,11 @@17.83 /* FIXME: Handle all the many special cases when the range doesn't fall cleanly17.84 * into the same memory block17.85 */17.86 -void mem_copy_from_sh4( unsigned char *dest, uint32_t srcaddr, size_t count ) {17.87 +void mem_copy_from_sh4( sh4ptr_t dest, uint32_t srcaddr, size_t count ) {17.88 if( srcaddr >= 0x04000000 && srcaddr < 0x05000000 ) {17.89 pvr2_vram64_read( dest, srcaddr, count );17.90 } else {17.91 - char *src = mem_get_region(srcaddr);17.92 + sh4ptr_t src = mem_get_region(srcaddr);17.93 if( src == NULL ) {17.94 WARN( "Attempted block read from unknown address %08X", srcaddr );17.95 } else {17.96 @@ -371,7 +371,7 @@17.97 }17.98 }17.100 -void mem_copy_to_sh4( uint32_t destaddr, unsigned char *src, size_t count ) {17.101 +void mem_copy_to_sh4( uint32_t destaddr, sh4ptr_t src, size_t count ) {17.102 if( destaddr >= 0x10000000 && destaddr < 0x14000000 ) {17.103 pvr2_dma_write( destaddr, src, count );17.104 return;17.105 @@ -381,7 +381,7 @@17.106 pvr2_vram64_write( destaddr, src, count );17.107 return;17.108 }17.109 - char *dest = mem_get_region(destaddr);17.110 + sh4ptr_t dest = mem_get_region(destaddr);17.111 if( dest == NULL )17.112 WARN( "Attempted block write to unknown address %08X", destaddr );17.113 else {17.114 @@ -394,7 +394,7 @@17.115 {17.116 /* Store queue operation */17.117 int queue = (addr&0x20)>>2;17.118 - unsigned char *src = (unsigned char *)&sh4r.store_queue[queue];17.119 + sh4ptr_t src = (sh4ptr_t)&sh4r.store_queue[queue];17.120 uint32_t hi = (MMIO_READ( MMU, (queue == 0 ? QACR0 : QACR1) ) & 0x1C) << 24;17.121 uint32_t target = (addr&0x03FFFFE0) | hi;17.122 mem_copy_to_sh4( target, src, 32 );
18.1 --- a/src/sh4/sh4mmio.c Thu Nov 08 11:53:56 2007 +000018.2 +++ b/src/sh4/sh4mmio.c Thu Nov 08 11:54:16 2007 +000018.3 @@ -1,5 +1,5 @@18.4 /**18.5 - * $Id: sh4mmio.c,v 1.14 2007-10-07 06:27:12 nkeynes Exp $18.6 + * $Id: sh4mmio.c,v 1.15 2007-11-08 11:54:16 nkeynes Exp $18.7 *18.8 * Miscellaneous and not-really-implemented SH4 peripheral modules. Also18.9 * responsible for including the IMPL side of the SH4 MMIO pages.18.10 @@ -35,7 +35,7 @@18.11 #define OCRAM_START (0x1C000000>>PAGE_BITS)18.12 #define OCRAM_END (0x20000000>>PAGE_BITS)18.14 -static char *cache = NULL;18.15 +static sh4ptr_t cache = NULL;18.17 void mmio_region_MMU_write( uint32_t reg, uint32_t val )18.18 {
19.1 --- a/src/sh4/sh4x86.c Thu Nov 08 11:53:56 2007 +000019.2 +++ b/src/sh4/sh4x86.c Thu Nov 08 11:54:16 2007 +000019.3 @@ -1,5 +1,5 @@19.4 /**19.5 - * $Id: sh4x86.c,v 1.18 2007-10-04 08:47:27 nkeynes Exp $19.6 + * $Id: sh4x86.c,v 1.19 2007-11-08 11:54:16 nkeynes Exp $19.7 *19.8 * SH4 => x86 translation. This version does no real optimization, it just19.9 * outputs straight-line x86 code - it mainly exists to provide a baseline19.10 @@ -2825,7 +2825,7 @@19.11 SLOTILLEGAL();19.12 } else {19.13 uint32_t target = (pc & 0xFFFFFFFC) + disp + 4;19.14 - char *ptr = mem_get_region(target);19.15 + sh4ptr_t ptr = mem_get_region(target);19.16 if( ptr != NULL ) {19.17 MOV_moff32_EAX( (uint32_t)ptr );19.18 } else {
20.1 --- a/src/sh4/sh4x86.in Thu Nov 08 11:53:56 2007 +000020.2 +++ b/src/sh4/sh4x86.in Thu Nov 08 11:54:16 2007 +000020.3 @@ -1,5 +1,5 @@20.4 /**20.5 - * $Id: sh4x86.in,v 1.19 2007-10-04 08:47:27 nkeynes Exp $20.6 + * $Id: sh4x86.in,v 1.20 2007-11-08 11:54:16 nkeynes Exp $20.7 *20.8 * SH4 => x86 translation. This version does no real optimization, it just20.9 * outputs straight-line x86 code - it mainly exists to provide a baseline20.10 @@ -1317,7 +1317,7 @@20.11 SLOTILLEGAL();20.12 } else {20.13 uint32_t target = (pc & 0xFFFFFFFC) + disp + 4;20.14 - char *ptr = mem_get_region(target);20.15 + sh4ptr_t ptr = mem_get_region(target);20.16 if( ptr != NULL ) {20.17 MOV_moff32_EAX( (uint32_t)ptr );20.18 } else {
21.1 --- a/src/sh4/xltcache.c Thu Nov 08 11:53:56 2007 +000021.2 +++ b/src/sh4/xltcache.c Thu Nov 08 11:54:16 2007 +000021.3 @@ -1,5 +1,5 @@21.4 /**21.5 - * $Id: xltcache.c,v 1.10 2007-11-04 01:03:00 nkeynes Exp $21.6 + * $Id: xltcache.c,v 1.11 2007-11-08 11:54:16 nkeynes Exp $21.7 *21.8 * Translation cache management. This part is architecture independent.21.9 *21.10 @@ -374,7 +374,7 @@21.11 if( xlat_new_cache_ptr->size == 0 ) {21.12 /* Migrate to the front of the cache to keep it contiguous */21.13 xlat_new_create_ptr->active = 0;21.14 - unsigned char *olddata = xlat_new_create_ptr->code;21.15 + sh4ptr_t olddata = xlat_new_create_ptr->code;21.16 int oldsize = xlat_new_create_ptr->size;21.17 int size = oldsize + MIN_BLOCK_SIZE; /* minimum expansion */21.18 void **lut_entry = xlat_new_create_ptr->lut_entry;
22.1 --- a/src/util.c Thu Nov 08 11:53:56 2007 +000022.2 +++ b/src/util.c Thu Nov 08 11:54:16 2007 +000022.3 @@ -1,5 +1,5 @@22.4 /**22.5 - * $Id: util.c,v 1.13 2007-11-07 11:45:53 nkeynes Exp $22.6 + * $Id: util.c,v 1.14 2007-11-08 11:54:16 nkeynes Exp $22.7 *22.8 * Miscellaneous utility functions.22.9 *22.10 @@ -34,7 +34,7 @@22.11 #include "sh4/sh4core.h"22.13 char *msg_levels[] = { "FATAL", "ERROR", "WARN", "INFO", "DEBUG", "TRACE" };22.14 -int global_msg_level = EMIT_INFO;22.15 +int global_msg_level = EMIT_WARN;22.17 static void report_crash( int signo, siginfo_t *info, void *ptr )22.18 {22.19 @@ -254,7 +254,7 @@22.20 int rowbytes = png_get_rowbytes(png_ptr, info_ptr);22.21 int channels = png_get_channels(png_ptr, info_ptr);22.22 frame_buffer_t buffer = g_malloc( sizeof(struct frame_buffer) + rowbytes*height );22.23 - buffer->data = (char *)(buffer+1);22.24 + buffer->data = (unsigned char *)(buffer+1);22.25 buffer->width = width;22.26 buffer->height = height;22.27 buffer->rowstride = rowbytes;
.