/* Simulator for Atmel's AVR core.
- Copyright (C) 2009 Free Software Foundation, Inc.
+ Copyright (C) 2009-2012 Free Software Foundation, Inc.
Written by Tristan Gingold, AdaCore.
This file is part of GDB, the GNU debugger.
if (step)
{
cpu_exception = sim_stopped;
- cpu_signal = TARGET_SIGNAL_TRAP;
+ cpu_signal = GDB_SIGNAL_TRAP;
}
else
cpu_exception = sim_running;
case OP_break:
/* Stop on this address. */
cpu_exception = sim_stopped;
- cpu_signal = TARGET_SIGNAL_TRAP;
+ cpu_signal = GDB_SIGNAL_TRAP;
pc = ipc;
break;
}
int
-sim_write (SIM_DESC sd, SIM_ADDR addr, unsigned char *buffer, int size)
+sim_write (SIM_DESC sd, SIM_ADDR addr, const unsigned char *buffer, int size)
{
int osize = size;
if (addr >= 0 && addr < SRAM_VADDR)
{
- if (addr & 1)
- return 0;
- addr /= 2;
- while (size > 1 && addr < MAX_AVR_FLASH)
+ while (size > 0 && addr < (MAX_AVR_FLASH << 1))
{
- flash[addr].op = buffer[0] | (buffer[1] << 8);
- flash[addr].code = OP_unknown;
+ word val = flash[addr >> 1].op;
+
+ if (addr & 1)
+ val = (val & 0xff) | (buffer[0] << 8);
+ else
+ val = (val & 0xff00) | buffer[0];
+
+ flash[addr >> 1].op = val;
+ flash[addr >> 1].code = OP_unknown;
addr++;
- buffer += 2;
- size -= 2;
+ buffer++;
+ size--;
}
return osize - size;
}
if (addr >= 0 && addr < SRAM_VADDR)
{
- if (addr & 1)
- return 0;
- addr /= 2;
- while (size > 1 && addr < MAX_AVR_FLASH)
+ while (size > 0 && addr < (MAX_AVR_FLASH << 1))
{
- buffer[0] = flash[addr].op;
- buffer[1] = flash[addr].op >> 8;
+ word val = flash[addr >> 1].op;
+
+ if (addr & 1)
+ val >>= 8;
+
+ *buffer++ = val;
addr++;
- buffer += 2;
- size -= 2;
+ size--;
}
return osize - size;
}
sim_stop (SIM_DESC sd)
{
cpu_exception = sim_stopped;
- cpu_signal = TARGET_SIGNAL_INT;
+ cpu_signal = GDB_SIGNAL_INT;
return 1;
}
{
callback = ptr;
}
+
+char **
+sim_complete_command (SIM_DESC sd, char *text, char *word)
+{
+ return NULL;
+}