mirror of
https://github.com/gwenhael-le-moine/x49gp.git
synced 2024-12-26 21:58:41 +01:00
Fix warnings, compile again with -Werror.
This commit is contained in:
parent
d5239f657d
commit
e865764785
13 changed files with 69 additions and 70 deletions
5
Makefile
5
Makefile
|
@ -102,7 +102,7 @@ CC += $(shell if [ "`uname -m`" = "sparc64" -o "`uname -m`" = "sun4u" ]; then ec
|
||||||
|
|
||||||
COCOA_LIBS=$(shell if [ "`uname -s`" = "Darwin" ]; then echo "-F/System/Library/Frameworks -framework Cocoa -framework IOKit"; fi)
|
COCOA_LIBS=$(shell if [ "`uname -s`" = "Darwin" ]; then echo "-F/System/Library/Frameworks -framework Cocoa -framework IOKit"; fi)
|
||||||
|
|
||||||
CFLAGS = -O2 -Wall $(DEBUG) $(INCLUDES) $(DEFINES)
|
CFLAGS = -O2 -Wall -Werror $(DEBUG) $(INCLUDES) $(DEFINES)
|
||||||
LDFLAGS = $(DEBUG) $(X49GP_LDFLAGS) $(GDB_LDFLAGS)
|
LDFLAGS = $(DEBUG) $(X49GP_LDFLAGS) $(GDB_LDFLAGS)
|
||||||
LDLIBS = $(X49GP_LIBS) $(GDB_LIBS) $(COCOA_LIBS)
|
LDLIBS = $(X49GP_LIBS) $(GDB_LIBS) $(COCOA_LIBS)
|
||||||
|
|
||||||
|
@ -267,6 +267,9 @@ endif
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
$(CC) $(CFLAGS) -o $@ -c $<
|
$(CC) $(CFLAGS) -o $@ -c $<
|
||||||
|
|
||||||
|
block-vvfat.o: block-vvfat.c
|
||||||
|
$(CC) $(CFLAGS) -fno-aggressive-loop-optimizations -o $@ -c $<
|
||||||
|
|
||||||
ifdef QEMU_OLD
|
ifdef QEMU_OLD
|
||||||
clean-libs:
|
clean-libs:
|
||||||
if [ -n "$(LIBS)" ]; then \
|
if [ -n "$(LIBS)" ]; then \
|
||||||
|
|
|
@ -777,9 +777,9 @@ if test -z "$zero_malloc" ; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#if test "$werror" = "yes" ; then
|
if test "$werror" = "yes" ; then
|
||||||
# QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
|
QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
|
||||||
#fi
|
fi
|
||||||
|
|
||||||
if test "$solaris" = "no" ; then
|
if test "$solaris" = "no" ; then
|
||||||
if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
|
if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
|
||||||
|
|
|
@ -2511,19 +2511,12 @@ void *qemu_get_ram_ptr(ram_addr_t addr)
|
||||||
(typically a TLB entry) back to a ram offset. */
|
(typically a TLB entry) back to a ram offset. */
|
||||||
ram_addr_t qemu_ram_addr_from_host(void *ptr)
|
ram_addr_t qemu_ram_addr_from_host(void *ptr)
|
||||||
{
|
{
|
||||||
RAMBlock *prev;
|
|
||||||
RAMBlock **prevp;
|
|
||||||
RAMBlock *block;
|
RAMBlock *block;
|
||||||
uint8_t *host = ptr;
|
uint8_t *host = ptr;
|
||||||
|
|
||||||
prev = NULL;
|
|
||||||
prevp = &ram_blocks;
|
|
||||||
block = ram_blocks;
|
block = ram_blocks;
|
||||||
while (block && (block->host > host
|
while (block && (block->host > host
|
||||||
|| block->host + block->length <= host)) {
|
|| block->host + block->length <= host)) {
|
||||||
if (prev)
|
|
||||||
prevp = &prev->next;
|
|
||||||
prev = block;
|
|
||||||
block = block->next;
|
block = block->next;
|
||||||
}
|
}
|
||||||
if (!block) {
|
if (!block) {
|
||||||
|
|
|
@ -1910,7 +1910,7 @@ float32 float32_div( float32 a, float32 b STATUS_PARAM )
|
||||||
|
|
||||||
float32 float32_rem( float32 a, float32 b STATUS_PARAM )
|
float32 float32_rem( float32 a, float32 b STATUS_PARAM )
|
||||||
{
|
{
|
||||||
flag aSign, bSign, zSign;
|
flag aSign, zSign;
|
||||||
int16 aExp, bExp, expDiff;
|
int16 aExp, bExp, expDiff;
|
||||||
bits32 aSig, bSig;
|
bits32 aSig, bSig;
|
||||||
bits32 q;
|
bits32 q;
|
||||||
|
@ -1923,7 +1923,6 @@ float32 float32_rem( float32 a, float32 b STATUS_PARAM )
|
||||||
aSign = extractFloat32Sign( a );
|
aSign = extractFloat32Sign( a );
|
||||||
bSig = extractFloat32Frac( b );
|
bSig = extractFloat32Frac( b );
|
||||||
bExp = extractFloat32Exp( b );
|
bExp = extractFloat32Exp( b );
|
||||||
bSign = extractFloat32Sign( b );
|
|
||||||
if ( aExp == 0xFF ) {
|
if ( aExp == 0xFF ) {
|
||||||
if ( aSig || ( ( bExp == 0xFF ) && bSig ) ) {
|
if ( aSig || ( ( bExp == 0xFF ) && bSig ) ) {
|
||||||
return propagateFloat32NaN( a, b STATUS_VAR );
|
return propagateFloat32NaN( a, b STATUS_VAR );
|
||||||
|
@ -3062,7 +3061,7 @@ float64 float64_div( float64 a, float64 b STATUS_PARAM )
|
||||||
|
|
||||||
float64 float64_rem( float64 a, float64 b STATUS_PARAM )
|
float64 float64_rem( float64 a, float64 b STATUS_PARAM )
|
||||||
{
|
{
|
||||||
flag aSign, bSign, zSign;
|
flag aSign, zSign;
|
||||||
int16 aExp, bExp, expDiff;
|
int16 aExp, bExp, expDiff;
|
||||||
bits64 aSig, bSig;
|
bits64 aSig, bSig;
|
||||||
bits64 q, alternateASig;
|
bits64 q, alternateASig;
|
||||||
|
@ -3073,7 +3072,6 @@ float64 float64_rem( float64 a, float64 b STATUS_PARAM )
|
||||||
aSign = extractFloat64Sign( a );
|
aSign = extractFloat64Sign( a );
|
||||||
bSig = extractFloat64Frac( b );
|
bSig = extractFloat64Frac( b );
|
||||||
bExp = extractFloat64Exp( b );
|
bExp = extractFloat64Exp( b );
|
||||||
bSign = extractFloat64Sign( b );
|
|
||||||
if ( aExp == 0x7FF ) {
|
if ( aExp == 0x7FF ) {
|
||||||
if ( aSig || ( ( bExp == 0x7FF ) && bSig ) ) {
|
if ( aSig || ( ( bExp == 0x7FF ) && bSig ) ) {
|
||||||
return propagateFloat64NaN( a, b STATUS_VAR );
|
return propagateFloat64NaN( a, b STATUS_VAR );
|
||||||
|
@ -4032,7 +4030,7 @@ floatx80 floatx80_div( floatx80 a, floatx80 b STATUS_PARAM )
|
||||||
|
|
||||||
floatx80 floatx80_rem( floatx80 a, floatx80 b STATUS_PARAM )
|
floatx80 floatx80_rem( floatx80 a, floatx80 b STATUS_PARAM )
|
||||||
{
|
{
|
||||||
flag aSign, bSign, zSign;
|
flag aSign, zSign;
|
||||||
int32 aExp, bExp, expDiff;
|
int32 aExp, bExp, expDiff;
|
||||||
bits64 aSig0, aSig1, bSig;
|
bits64 aSig0, aSig1, bSig;
|
||||||
bits64 q, term0, term1, alternateASig0, alternateASig1;
|
bits64 q, term0, term1, alternateASig0, alternateASig1;
|
||||||
|
@ -4043,7 +4041,6 @@ floatx80 floatx80_rem( floatx80 a, floatx80 b STATUS_PARAM )
|
||||||
aSign = extractFloatx80Sign( a );
|
aSign = extractFloatx80Sign( a );
|
||||||
bSig = extractFloatx80Frac( b );
|
bSig = extractFloatx80Frac( b );
|
||||||
bExp = extractFloatx80Exp( b );
|
bExp = extractFloatx80Exp( b );
|
||||||
bSign = extractFloatx80Sign( b );
|
|
||||||
if ( aExp == 0x7FFF ) {
|
if ( aExp == 0x7FFF ) {
|
||||||
if ( (bits64) ( aSig0<<1 )
|
if ( (bits64) ( aSig0<<1 )
|
||||||
|| ( ( bExp == 0x7FFF ) && (bits64) ( bSig<<1 ) ) ) {
|
|| ( ( bExp == 0x7FFF ) && (bits64) ( bSig<<1 ) ) ) {
|
||||||
|
@ -5144,7 +5141,7 @@ float128 float128_div( float128 a, float128 b STATUS_PARAM )
|
||||||
|
|
||||||
float128 float128_rem( float128 a, float128 b STATUS_PARAM )
|
float128 float128_rem( float128 a, float128 b STATUS_PARAM )
|
||||||
{
|
{
|
||||||
flag aSign, bSign, zSign;
|
flag aSign, zSign;
|
||||||
int32 aExp, bExp, expDiff;
|
int32 aExp, bExp, expDiff;
|
||||||
bits64 aSig0, aSig1, bSig0, bSig1, q, term0, term1, term2;
|
bits64 aSig0, aSig1, bSig0, bSig1, q, term0, term1, term2;
|
||||||
bits64 allZero, alternateASig0, alternateASig1, sigMean1;
|
bits64 allZero, alternateASig0, alternateASig1, sigMean1;
|
||||||
|
@ -5158,7 +5155,6 @@ float128 float128_rem( float128 a, float128 b STATUS_PARAM )
|
||||||
bSig1 = extractFloat128Frac1( b );
|
bSig1 = extractFloat128Frac1( b );
|
||||||
bSig0 = extractFloat128Frac0( b );
|
bSig0 = extractFloat128Frac0( b );
|
||||||
bExp = extractFloat128Exp( b );
|
bExp = extractFloat128Exp( b );
|
||||||
bSign = extractFloat128Sign( b );
|
|
||||||
if ( aExp == 0x7FFF ) {
|
if ( aExp == 0x7FFF ) {
|
||||||
if ( ( aSig0 | aSig1 )
|
if ( ( aSig0 | aSig1 )
|
||||||
|| ( ( bExp == 0x7FFF ) && ( bSig0 | bSig1 ) ) ) {
|
|| ( ( bExp == 0x7FFF ) && ( bSig0 | bSig1 ) ) ) {
|
||||||
|
|
|
@ -5520,7 +5520,6 @@ static void
|
||||||
OP_sI (int bytemode, int sizeflag)
|
OP_sI (int bytemode, int sizeflag)
|
||||||
{
|
{
|
||||||
bfd_signed_vma op;
|
bfd_signed_vma op;
|
||||||
bfd_signed_vma mask = -1;
|
|
||||||
|
|
||||||
switch (bytemode)
|
switch (bytemode)
|
||||||
{
|
{
|
||||||
|
@ -5529,7 +5528,6 @@ OP_sI (int bytemode, int sizeflag)
|
||||||
op = *codep++;
|
op = *codep++;
|
||||||
if ((op & 0x80) != 0)
|
if ((op & 0x80) != 0)
|
||||||
op -= 0x100;
|
op -= 0x100;
|
||||||
mask = 0xffffffff;
|
|
||||||
break;
|
break;
|
||||||
case v_mode:
|
case v_mode:
|
||||||
USED_REX (REX_W);
|
USED_REX (REX_W);
|
||||||
|
@ -5538,11 +5536,9 @@ OP_sI (int bytemode, int sizeflag)
|
||||||
else if (sizeflag & DFLAG)
|
else if (sizeflag & DFLAG)
|
||||||
{
|
{
|
||||||
op = get32s ();
|
op = get32s ();
|
||||||
mask = 0xffffffff;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mask = 0xffffffff;
|
|
||||||
op = get16 ();
|
op = get16 ();
|
||||||
if ((op & 0x8000) != 0)
|
if ((op & 0x8000) != 0)
|
||||||
op -= 0x10000;
|
op -= 0x10000;
|
||||||
|
@ -5551,7 +5547,6 @@ OP_sI (int bytemode, int sizeflag)
|
||||||
break;
|
break;
|
||||||
case w_mode:
|
case w_mode:
|
||||||
op = get16 ();
|
op = get16 ();
|
||||||
mask = 0xffffffff;
|
|
||||||
if ((op & 0x8000) != 0)
|
if ((op & 0x8000) != 0)
|
||||||
op -= 0x10000;
|
op -= 0x10000;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -549,14 +549,12 @@ void tcg_register_helper(void *func, const char *name)
|
||||||
void tcg_gen_callN(TCGContext *s, TCGv_ptr func, unsigned int flags,
|
void tcg_gen_callN(TCGContext *s, TCGv_ptr func, unsigned int flags,
|
||||||
int sizemask, TCGArg ret, int nargs, TCGArg *args)
|
int sizemask, TCGArg ret, int nargs, TCGArg *args)
|
||||||
{
|
{
|
||||||
int call_type;
|
|
||||||
int i;
|
int i;
|
||||||
int real_args;
|
int real_args;
|
||||||
int nb_rets;
|
int nb_rets;
|
||||||
TCGArg *nparam;
|
TCGArg *nparam;
|
||||||
*gen_opc_ptr++ = INDEX_op_call;
|
*gen_opc_ptr++ = INDEX_op_call;
|
||||||
nparam = gen_opparam_ptr++;
|
nparam = gen_opparam_ptr++;
|
||||||
call_type = (flags & TCG_CALL_TYPE_MASK);
|
|
||||||
if (ret != TCG_CALL_DUMMY_ARG) {
|
if (ret != TCG_CALL_DUMMY_ARG) {
|
||||||
#if TCG_TARGET_REG_BITS < 64
|
#if TCG_TARGET_REG_BITS < 64
|
||||||
if (sizemask & 1) {
|
if (sizemask & 1) {
|
||||||
|
@ -582,6 +580,7 @@ void tcg_gen_callN(TCGContext *s, TCGv_ptr func, unsigned int flags,
|
||||||
#if TCG_TARGET_REG_BITS < 64
|
#if TCG_TARGET_REG_BITS < 64
|
||||||
if (sizemask & (2 << i)) {
|
if (sizemask & (2 << i)) {
|
||||||
#ifdef TCG_TARGET_I386
|
#ifdef TCG_TARGET_I386
|
||||||
|
int call_type = (flags & TCG_CALL_TYPE_MASK);
|
||||||
/* REGPARM case: if the third parameter is 64 bit, it is
|
/* REGPARM case: if the third parameter is 64 bit, it is
|
||||||
allocated on the stack */
|
allocated on the stack */
|
||||||
if (i == 2 && call_type == TCG_CALL_TYPE_REGPARM) {
|
if (i == 2 && call_type == TCG_CALL_TYPE_REGPARM) {
|
||||||
|
|
|
@ -34,7 +34,7 @@ s3c2410_arm_load(x49gp_module_t *module, GKeyFile *key)
|
||||||
cpu_reset(env);
|
cpu_reset(env);
|
||||||
tlb_flush(env, 1);
|
tlb_flush(env, 1);
|
||||||
|
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < (sizeof(env->regs) / sizeof(env->regs[0])); i++) {
|
||||||
sprintf(name, "reg-%02u", i);
|
sprintf(name, "reg-%02u", i);
|
||||||
if (x49gp_module_get_u32(module, key, name, 0, &env->regs[i]))
|
if (x49gp_module_get_u32(module, key, name, 0, &env->regs[i]))
|
||||||
error = -EAGAIN;
|
error = -EAGAIN;
|
||||||
|
@ -43,7 +43,7 @@ s3c2410_arm_load(x49gp_module_t *module, GKeyFile *key)
|
||||||
error = -EAGAIN;
|
error = -EAGAIN;
|
||||||
if (x49gp_module_get_u32(module, key, "spsr", 0, &env->spsr))
|
if (x49gp_module_get_u32(module, key, "spsr", 0, &env->spsr))
|
||||||
error = -EAGAIN;
|
error = -EAGAIN;
|
||||||
for (i = 0; i < 6; i++) {
|
for (i = 0; i < (sizeof(env->banked_spsr) / sizeof(env->banked_spsr[0])); i++) {
|
||||||
sprintf(name, "banked-spsr-%02u", i);
|
sprintf(name, "banked-spsr-%02u", i);
|
||||||
if (x49gp_module_get_u32(module, key, name, 0, &env->banked_spsr[i]))
|
if (x49gp_module_get_u32(module, key, name, 0, &env->banked_spsr[i]))
|
||||||
error = -EAGAIN;
|
error = -EAGAIN;
|
||||||
|
@ -54,7 +54,7 @@ s3c2410_arm_load(x49gp_module_t *module, GKeyFile *key)
|
||||||
if (x49gp_module_get_u32(module, key, name, 0, &env->banked_r14[i]))
|
if (x49gp_module_get_u32(module, key, name, 0, &env->banked_r14[i]))
|
||||||
error = -EAGAIN;
|
error = -EAGAIN;
|
||||||
}
|
}
|
||||||
for (i = 8; i < 12; i++) {
|
for (i = 0; i < (sizeof(env->usr_regs) / sizeof(env->usr_regs[0])); i++) {
|
||||||
sprintf(name, "reg-usr-%02u", i);
|
sprintf(name, "reg-usr-%02u", i);
|
||||||
if (x49gp_module_get_u32(module, key, name,
|
if (x49gp_module_get_u32(module, key, name,
|
||||||
0, &env->usr_regs[i]))
|
0, &env->usr_regs[i]))
|
||||||
|
@ -80,7 +80,7 @@ s3c2410_arm_load(x49gp_module_t *module, GKeyFile *key)
|
||||||
#endif
|
#endif
|
||||||
if (x49gp_module_get_u32(module, key, "QF", 0, &env->QF))
|
if (x49gp_module_get_u32(module, key, "QF", 0, &env->QF))
|
||||||
error = -EAGAIN;
|
error = -EAGAIN;
|
||||||
if (x49gp_module_get_int(module, key, "thumb", 0, &env->thumb))
|
if (x49gp_module_get_u32(module, key, "thumb", 0, &env->thumb))
|
||||||
error = -EAGAIN;
|
error = -EAGAIN;
|
||||||
|
|
||||||
if (x49gp_module_get_u32(module, key, "cp15-c0-cpuid", 0, &env->cp15.c0_cpuid))
|
if (x49gp_module_get_u32(module, key, "cp15-c0-cpuid", 0, &env->cp15.c0_cpuid))
|
||||||
|
@ -132,9 +132,9 @@ s3c2410_arm_load(x49gp_module_t *module, GKeyFile *key)
|
||||||
|
|
||||||
if (x49gp_module_get_int(module, key, "exception-index", 0, &env->exception_index))
|
if (x49gp_module_get_int(module, key, "exception-index", 0, &env->exception_index))
|
||||||
error = -EAGAIN;
|
error = -EAGAIN;
|
||||||
if (x49gp_module_get_int(module, key, "interrupt-request", 0, &env->interrupt_request))
|
if (x49gp_module_get_u32(module, key, "interrupt-request", 0, &env->interrupt_request))
|
||||||
error = -EAGAIN;
|
error = -EAGAIN;
|
||||||
if (x49gp_module_get_int(module, key, "halted", 0, &env->halted))
|
if (x49gp_module_get_u32(module, key, "halted", 0, &env->halted))
|
||||||
error = -EAGAIN;
|
error = -EAGAIN;
|
||||||
|
|
||||||
env->exception_index = -1;
|
env->exception_index = -1;
|
||||||
|
@ -162,13 +162,13 @@ s3c2410_arm_save(x49gp_module_t *module, GKeyFile *key)
|
||||||
printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__);
|
printf("%s: %s:%u\n", module->name, __FUNCTION__, __LINE__);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < (sizeof(env->regs) / sizeof(env->regs[0])); i++) {
|
||||||
sprintf(name, "reg-%02u", i);
|
sprintf(name, "reg-%02u", i);
|
||||||
x49gp_module_set_u32(module, key, name, env->regs[i]);
|
x49gp_module_set_u32(module, key, name, env->regs[i]);
|
||||||
}
|
}
|
||||||
x49gp_module_set_u32(module, key, "cpsr", env->uncached_cpsr);
|
x49gp_module_set_u32(module, key, "cpsr", env->uncached_cpsr);
|
||||||
x49gp_module_set_u32(module, key, "spsr", env->spsr);
|
x49gp_module_set_u32(module, key, "spsr", env->spsr);
|
||||||
for (i = 0; i < 6; i++) {
|
for (i = 0; i < (sizeof(env->banked_spsr) / sizeof(env->banked_spsr[0])); i++) {
|
||||||
sprintf(name, "banked-spsr-%02u", i);
|
sprintf(name, "banked-spsr-%02u", i);
|
||||||
x49gp_module_set_u32(module, key, name, env->banked_spsr[i]);
|
x49gp_module_set_u32(module, key, name, env->banked_spsr[i]);
|
||||||
sprintf(name, "banked-r13-%02u", i);
|
sprintf(name, "banked-r13-%02u", i);
|
||||||
|
@ -176,7 +176,7 @@ s3c2410_arm_save(x49gp_module_t *module, GKeyFile *key)
|
||||||
sprintf(name, "banked-r14-%02u", i);
|
sprintf(name, "banked-r14-%02u", i);
|
||||||
x49gp_module_set_u32(module, key, name, env->banked_r14[i]);
|
x49gp_module_set_u32(module, key, name, env->banked_r14[i]);
|
||||||
}
|
}
|
||||||
for (i = 8; i < 12; i++) {
|
for (i = 0; i < (sizeof(env->usr_regs) / sizeof(env->usr_regs[0])); i++) {
|
||||||
sprintf(name, "reg-usr-%02u", i);
|
sprintf(name, "reg-usr-%02u", i);
|
||||||
x49gp_module_set_u32(module, key, name, env->usr_regs[i]);
|
x49gp_module_set_u32(module, key, name, env->usr_regs[i]);
|
||||||
sprintf(name, "reg-fiq-%02u", i);
|
sprintf(name, "reg-fiq-%02u", i);
|
||||||
|
|
|
@ -138,12 +138,12 @@ intmod_put_word(s3c2410_intc_t *intc, uint32_t data)
|
||||||
static void
|
static void
|
||||||
intmsk_put_word(s3c2410_intc_t *intc, uint32_t data)
|
intmsk_put_word(s3c2410_intc_t *intc, uint32_t data)
|
||||||
{
|
{
|
||||||
uint32_t change;
|
|
||||||
#ifdef DEBUG_X49GP_ENABLE_IRQ
|
#ifdef DEBUG_X49GP_ENABLE_IRQ
|
||||||
|
uint32_t change;
|
||||||
int i;
|
int i;
|
||||||
#endif
|
|
||||||
|
|
||||||
change = intc->intmsk ^ data;
|
change = intc->intmsk ^ data;
|
||||||
|
#endif
|
||||||
|
|
||||||
intc->intmsk = data | 0x01000040;
|
intc->intmsk = data | 0x01000040;
|
||||||
|
|
||||||
|
@ -525,8 +525,10 @@ s3c2410_intc_read(void *opaque, target_phys_addr_t offset)
|
||||||
static void
|
static void
|
||||||
s3c2410_intc_write(void *opaque, target_phys_addr_t offset, uint32_t data)
|
s3c2410_intc_write(void *opaque, target_phys_addr_t offset, uint32_t data)
|
||||||
{
|
{
|
||||||
s3c2410_intc_t *intc = opaque;
|
#ifdef DEBUG_S3C2410_INTC
|
||||||
s3c2410_offset_t *reg;
|
s3c2410_offset_t *reg;
|
||||||
|
#endif
|
||||||
|
s3c2410_intc_t *intc = opaque;
|
||||||
|
|
||||||
#ifdef QEMU_OLD
|
#ifdef QEMU_OLD
|
||||||
offset -= S3C2410_INTC_BASE;
|
offset -= S3C2410_INTC_BASE;
|
||||||
|
@ -535,9 +537,9 @@ s3c2410_intc_write(void *opaque, target_phys_addr_t offset, uint32_t data)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG_S3C2410_INTC
|
||||||
reg = S3C2410_OFFSET_ENTRY(intc, offset);
|
reg = S3C2410_OFFSET_ENTRY(intc, offset);
|
||||||
|
|
||||||
#ifdef DEBUG_S3C2410_INTC
|
|
||||||
printf("write %s [%08x] %s [%08x] data %08x\n",
|
printf("write %s [%08x] %s [%08x] data %08x\n",
|
||||||
"s3c2410-intc", S3C2410_INTC_BASE,
|
"s3c2410-intc", S3C2410_INTC_BASE,
|
||||||
reg->name, offset, data);
|
reg->name, offset, data);
|
||||||
|
|
|
@ -195,8 +195,8 @@ s3c2410_io_port_read(void *opaque, target_phys_addr_t offset)
|
||||||
offset -= S3C2410_IO_PORT_BASE;
|
offset -= S3C2410_IO_PORT_BASE;
|
||||||
#endif
|
#endif
|
||||||
if (! S3C2410_OFFSET_OK(io, offset)) {
|
if (! S3C2410_OFFSET_OK(io, offset)) {
|
||||||
fprintf(stderr, "%s:%u: offset %08x not OK\n", __FUNCTION__, __LINE__, offset);
|
fprintf(stderr, "%s:%u: offset %08lx not OK\n", __FUNCTION__, __LINE__, (unsigned long) offset);
|
||||||
abort();
|
abort();
|
||||||
return ~(0);
|
return ~(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -360,7 +360,10 @@ s3c2410_io_port_g_set_bit(x49gp_t *x49gp, int n, uint32_t set)
|
||||||
{
|
{
|
||||||
s3c2410_io_port_t *io = x49gp->s3c2410_io_port;
|
s3c2410_io_port_t *io = x49gp->s3c2410_io_port;
|
||||||
uint32_t value, change;
|
uint32_t value, change;
|
||||||
int pending, level;
|
int pending;
|
||||||
|
#ifdef DEBUG_S3C2410_IO_PORT
|
||||||
|
int level = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (n > 7)
|
if (n > 7)
|
||||||
return;
|
return;
|
||||||
|
@ -412,17 +415,21 @@ s3c2410_io_port_g_set_bit(x49gp_t *x49gp, int n, uint32_t set)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pending = -1;
|
pending = -1;
|
||||||
level = 0;
|
|
||||||
switch ((io->extint1 >> (4 * n)) & 7) {
|
switch ((io->extint1 >> (4 * n)) & 7) {
|
||||||
case 0: /* Low Level */
|
case 0: /* Low Level */
|
||||||
if (!(io->gpgdat & (1 << n)))
|
if (!(io->gpgdat & (1 << n)))
|
||||||
pending = n;
|
pending = n;
|
||||||
|
#ifdef DEBUG_S3C2410_IO_PORT
|
||||||
level = 1;
|
level = 1;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case 1: /* High Level */
|
case 1: /* High Level */
|
||||||
if (io->gpgdat & (1 << n))
|
if (io->gpgdat & (1 << n))
|
||||||
pending = n;
|
pending = n;
|
||||||
|
#ifdef DEBUG_S3C2410_IO_PORT
|
||||||
level = 1;
|
level = 1;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case 2: /* Falling Edge */
|
case 2: /* Falling Edge */
|
||||||
case 3:
|
case 3:
|
||||||
|
|
|
@ -84,10 +84,6 @@ s3c2410_lcd_data_init(s3c2410_lcd_t *lcd)
|
||||||
void
|
void
|
||||||
x49gp_schedule_lcd_update(x49gp_t *x49gp)
|
x49gp_schedule_lcd_update(x49gp_t *x49gp)
|
||||||
{
|
{
|
||||||
unsigned long ticks;
|
|
||||||
|
|
||||||
ticks = (x49gp->emulator_fclk / x49gp->PCLK_ratio) / 100;
|
|
||||||
|
|
||||||
if (! x49gp_timer_pending(x49gp->lcd_timer)) {
|
if (! x49gp_timer_pending(x49gp->lcd_timer)) {
|
||||||
x49gp_mod_timer(x49gp->lcd_timer,
|
x49gp_mod_timer(x49gp->lcd_timer,
|
||||||
x49gp_get_clock() + X49GP_LCD_REFRESH_INTERVAL);
|
x49gp_get_clock() + X49GP_LCD_REFRESH_INTERVAL);
|
||||||
|
|
|
@ -188,11 +188,10 @@ s3c2410_uart_write(void *opaque, target_phys_addr_t offset, uint32_t data)
|
||||||
s3c2410_uart_reg_t *uart_regs = opaque;
|
s3c2410_uart_reg_t *uart_regs = opaque;
|
||||||
x49gp_t *x49gp = uart_regs->x49gp;
|
x49gp_t *x49gp = uart_regs->x49gp;
|
||||||
s3c2410_offset_t *reg;
|
s3c2410_offset_t *reg;
|
||||||
uint32_t ubrdivn, baud;
|
|
||||||
uint32_t base;
|
uint32_t base;
|
||||||
#ifdef DEBUG_S3C2410_UART
|
#ifdef DEBUG_S3C2410_UART
|
||||||
const char *module;
|
const char *module;
|
||||||
uint32_t mod_offset;
|
uint32_t mod_offset, ubrdivn, baud;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
base = (offset & 0x0000c000) >> 14;
|
base = (offset & 0x0000c000) >> 14;
|
||||||
|
@ -239,20 +238,18 @@ s3c2410_uart_write(void *opaque, target_phys_addr_t offset, uint32_t data)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case S3C2410_UART0_UBRDIV:
|
case S3C2410_UART0_UBRDIV:
|
||||||
|
#ifdef DEBUG_S3C2410_UART
|
||||||
ubrdivn = (data >> 0) & 0xffff;
|
ubrdivn = (data >> 0) & 0xffff;
|
||||||
if (uart_regs->ucon & (1 << 10)) {
|
if (uart_regs->ucon & (1 << 10)) {
|
||||||
baud = x49gp->UCLK / 16 / (ubrdivn + 1);
|
baud = x49gp->UCLK / 16 / (ubrdivn + 1);
|
||||||
#ifdef DEBUG_S3C2410_UART
|
|
||||||
printf("%s: UEXTCLK %u, ubrdivn %u, baud %u\n",
|
printf("%s: UEXTCLK %u, ubrdivn %u, baud %u\n",
|
||||||
module, x49gp->UCLK, ubrdivn, baud);
|
module, x49gp->UCLK, ubrdivn, baud);
|
||||||
#endif
|
|
||||||
} else {
|
} else {
|
||||||
baud = x49gp->PCLK / 16 / (ubrdivn + 1);
|
baud = x49gp->PCLK / 16 / (ubrdivn + 1);
|
||||||
#ifdef DEBUG_S3C2410_UART
|
|
||||||
printf("%s: PCLK %u, ubrdivn %u, baud %u\n",
|
printf("%s: PCLK %u, ubrdivn %u, baud %u\n",
|
||||||
module, x49gp->PCLK, ubrdivn, baud);
|
module, x49gp->PCLK, ubrdivn, baud);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case S3C2410_UART0_UTXH:
|
case S3C2410_UART0_UTXH:
|
||||||
|
|
28
sram.c
28
sram.c
|
@ -31,6 +31,22 @@ typedef struct {
|
||||||
|
|
||||||
#define SATURN(r) ((target_phys_addr_t) &((saturn_cpu_t *)0)->r)
|
#define SATURN(r) ((target_phys_addr_t) &((saturn_cpu_t *)0)->r)
|
||||||
|
|
||||||
|
#if defined(DEBUG_X49GP_SYSRAM_READ) || defined(DEBUG_X49GP_SYSRAM_WRITE) || \
|
||||||
|
defined(DEBUG_X49GP_IRAM_READ) || defined(DEBUG_X49GP_IRAM_WRITE) || \
|
||||||
|
defined(DEBUG_X49GP_ERAM_READ) || defined(DEBUG_X49GP_ERAM_WRITE)
|
||||||
|
#define DEBUG_X49GP_SRAM 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint32_t x;
|
||||||
|
uint32_t ml;
|
||||||
|
uint32_t mh;
|
||||||
|
uint8_t m;
|
||||||
|
uint8_t s;
|
||||||
|
} hp_real_t;
|
||||||
|
|
||||||
|
#ifdef DEBUG_X49GP_SRAM
|
||||||
|
|
||||||
static uint32_t
|
static uint32_t
|
||||||
saturn_map_s2a(saturn_cpu_t *saturn, uint32_t saddr)
|
saturn_map_s2a(saturn_cpu_t *saturn, uint32_t saddr)
|
||||||
{
|
{
|
||||||
|
@ -86,14 +102,6 @@ hxs2real(int hxs)
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint32_t x;
|
|
||||||
uint32_t ml;
|
|
||||||
uint32_t mh;
|
|
||||||
uint8_t m;
|
|
||||||
uint8_t s;
|
|
||||||
} hp_real_t;
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
real_number(saturn_cpu_t *saturn, uint32_t saddr, char *buffer, int ml, int xl)
|
real_number(saturn_cpu_t *saturn, uint32_t saddr, char *buffer, int ml, int xl)
|
||||||
{
|
{
|
||||||
|
@ -593,6 +601,8 @@ static CPUWriteMemoryFunc *sram_writefn[] =
|
||||||
sram_put_word
|
sram_put_word
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif /* DEBUG_X49GP_SRAM */
|
||||||
|
|
||||||
static int
|
static int
|
||||||
sram_load(x49gp_module_t *module, GKeyFile *key)
|
sram_load(x49gp_module_t *module, GKeyFile *key)
|
||||||
{
|
{
|
||||||
|
@ -723,7 +733,7 @@ sram_init(x49gp_module_t *module)
|
||||||
phys_ram_size += S3C2410_SRAM_SIZE;
|
phys_ram_size += S3C2410_SRAM_SIZE;
|
||||||
phys_ram_size += S3C2410_SRAM_SIZE;
|
phys_ram_size += S3C2410_SRAM_SIZE;
|
||||||
|
|
||||||
#if 0
|
#ifdef DEBUG_X49GP_SRAM
|
||||||
{
|
{
|
||||||
int iotype;
|
int iotype;
|
||||||
|
|
||||||
|
|
17
timer.c
17
timer.c
|
@ -32,9 +32,6 @@ struct x49gp_timer_s {
|
||||||
x49gp_timer_t *next;
|
x49gp_timer_t *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef QEMU_OLD // LD TEMPO HACK
|
|
||||||
typedef x49gp_timer_t QEMUTimer;
|
|
||||||
#endif
|
|
||||||
typedef x49gp_timer_cb_t QEMUTimerCB;
|
typedef x49gp_timer_cb_t QEMUTimerCB;
|
||||||
typedef void * QEMUClock;
|
typedef void * QEMUClock;
|
||||||
QEMUClock *rt_clock = (void *) X49GP_TIMER_REALTIME;
|
QEMUClock *rt_clock = (void *) X49GP_TIMER_REALTIME;
|
||||||
|
@ -150,34 +147,36 @@ x49gp_timer_expired(x49gp_timer_t *timer_head, int64_t current_time)
|
||||||
return (timer_head->expires <= current_time);
|
return (timer_head->expires <= current_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef QEMU_OLD // LD TEMPO HACK
|
||||||
|
|
||||||
QEMUTimer *
|
QEMUTimer *
|
||||||
qemu_new_timer(QEMUClock *clock, QEMUTimerCB cb, void *opaque)
|
qemu_new_timer(QEMUClock *clock, QEMUTimerCB cb, void *opaque)
|
||||||
{
|
{
|
||||||
return x49gp_new_timer((long) clock, cb, opaque);
|
return (void *) x49gp_new_timer((long) clock, cb, opaque);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
qemu_free_timer(QEMUTimer *ts)
|
qemu_free_timer(QEMUTimer *ts)
|
||||||
{
|
{
|
||||||
return x49gp_free_timer(ts);
|
return x49gp_free_timer((void *) ts);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
qemu_mod_timer(QEMUTimer *ts, int64_t expire_time)
|
qemu_mod_timer(QEMUTimer *ts, int64_t expire_time)
|
||||||
{
|
{
|
||||||
return x49gp_mod_timer(ts, expire_time);
|
return x49gp_mod_timer((void *) ts, expire_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
qemu_del_timer(QEMUTimer *ts)
|
qemu_del_timer(QEMUTimer *ts)
|
||||||
{
|
{
|
||||||
return x49gp_del_timer(ts);
|
return x49gp_del_timer((void *) ts);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
qemu_timer_pending(QEMUTimer *ts)
|
qemu_timer_pending(QEMUTimer *ts)
|
||||||
{
|
{
|
||||||
return x49gp_timer_pending(ts);
|
return x49gp_timer_pending((void *) ts);
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t
|
int64_t
|
||||||
|
@ -186,6 +185,8 @@ qemu_get_clock(QEMUClock *clock)
|
||||||
return x49gp_get_clock();
|
return x49gp_get_clock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* QEMU_OLD */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
x49gp_run_timers(x49gp_timer_t **ptimer_head, int64_t current_time)
|
x49gp_run_timers(x49gp_timer_t **ptimer_head, int64_t current_time)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue