What Tyro is describing is called a "Harvard architecture" - 
https://en.wikipedia.org/wiki/Harvard_architecture . It contrasts with the von 
Neumann architecture used by most machines today.

Hexagon has a unified memory map, but I've worked with other DSPs (Motorola 
DSP56xxx) that have a code bus and 1 or more data busses. 56300 was 24 bit, and 
called them p, x and y memories. 56600 had 24 bit p memory and 16 bit x memory. 
And my product at my previous employer took this idea of memory spaces a bit 
farther, and we could use different spaces to access the same memory in 
different ways. So a debugger attached to a Freescale T4240 processor could 
access an address as physical through the SoC, physical/virtual through the 
e6500 PowerPC core (really 1:1 mapping for "physical"), cacheable/non 
cacheable, code/data (code applies the self-modifying code sequence, used 
primarily for software breakpoints). We could combine these options in 
appropriate ways. The memory access functions took a memory space, address, 
size and count.

To implement this in LLDB, we'd need to have a way to decorate a memory range 
with interesting attributes, and a way to get this info over to the remote 
gdb-server.

Duane Ellis talks about some of the issues with supporting this on the GDB 
mailing list: http://comments.gmane.org/gmane.comp.gdb.devel/36147

This actually came up here 2 years ago - 
http://lists.llvm.org/pipermail/lldb-dev/2014-May/004081.html .

Ted

--
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux 
Foundation Collaborative Project


-----Original Message-----
From: lldb-dev [mailto:lldb-dev-boun...@lists.llvm.org] On Behalf Of Greg 
Clayton via lldb-dev
Sent: Wednesday, May 25, 2016 3:57 PM
To: Tyro Software <softwaret...@gmail.com>
Cc: lldb-dev@lists.llvm.org
Subject: Re: [lldb-dev] Discrete code and data memories

I believe that some of the DSPs we have support for (Hexagon?) has this kind of 
issue. I would speak to Ted Woodward and see if they do anything special for 
this.

Greg Clayton

> On May 25, 2016, at 2:16 AM, Tyro Software via lldb-dev 
> <lldb-dev@lists.llvm.org> wrote:
> 
> I'm trying to implement LLDB support for an architecture where code and data 
> stores can be explicitly separated and can even have overlapping addresses 
> (one can think of it as ROM and RAM, with separate access buses). 
> 
> My impression is that LLDB somewhat presumes a hybrid memory map, e.g. the 
> client requests "qMemoryRegionInfo:$PC" for the program counter value but 
> might also do "qMemoryRegionInfo:$SP" for the stack pointer and from the 
> address value alone one can't safely determine which memory type is meant. A 
> similar issue would exist for the X/x commands.
> 
> I apologise for not knowing better terminology to describe this - quite 
> possibly LLDB does cater for it and I haven't understood the description, 
> e.g. there's some way to "adorn" an address or set some context or scope for 
> it through a preceding command?
> 
> Thanks
> /Tyro
> _______________________________________________
> lldb-dev mailing list
> lldb-dev@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

_______________________________________________
lldb-dev mailing list
lldb-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev

Reply via email to