This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[committed] sim/avr: allow byte access to program space
- From: Tristan Gingold <gingold at adacore dot com>
- To: gdb-patches ml <gdb-patches at sourceware dot org>
- Date: Thu, 12 Nov 2009 16:23:46 +0100
- Subject: [committed] sim/avr: allow byte access to program space
Hi,
although the flash is word based, gdb tries to read bytes while
disassembling. So byte access need to be
implemented for the flash (program space).
Approved by Joel.
Tristan.
sim/
2009-11-12 Tristan Gingold <gingold@adacore.com>
* avr/interp.c (sim_write): Allow byte access.
(sim_read): Ditto.
diff -c -r1.4 interp.c
*** sim/avr/interp.c 12 Nov 2009 15:17:42 -0000 1.4
--- sim/avr/interp.c 12 Nov 2009 15:20:29 -0000
***************
*** 1628,1643 ****
if (addr >= 0 && addr < SRAM_VADDR)
{
! if (addr & 1)
! return 0;
! addr /= 2;
! while (size > 1 && addr < MAX_AVR_FLASH)
{
! flash[addr].op = buffer[0] | (buffer[1] << 8);
! flash[addr].code = OP_unknown;
addr++;
! buffer += 2;
! size -= 2;
}
return osize - size;
}
--- 1628,1647 ----
if (addr >= 0 && addr < SRAM_VADDR)
{
! while (size > 0 && addr < (MAX_AVR_FLASH << 1))
{
! 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++;
! size--;
}
return osize - size;
}
***************
*** 1660,1675 ****
if (addr >= 0 && addr < SRAM_VADDR)
{
! if (addr & 1)
! return 0;
! addr /= 2;
! while (size > 1 && addr < MAX_AVR_FLASH)
{
! buffer[0] = flash[addr].op;
! buffer[1] = flash[addr].op >> 8;
addr++;
! buffer += 2;
! size -= 2;
}
return osize - size;
}
--- 1664,1679 ----
if (addr >= 0 && addr < SRAM_VADDR)
{
! while (size > 0 && addr < (MAX_AVR_FLASH << 1))
{
! word val = flash[addr >> 1].op;
!
! if (addr & 1)
! val >>= 8;
!
! *buffer++ = val;
addr++;
! size--;
}
return osize - size;
}