[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openocd-development
Subject:    Re: [OpenOCD-devel] OpenOCD Aarch64 support
From:       Matthias Welwarsky <matthias () welwarsky ! de>
Date:       2016-10-25 20:33:46
Message-ID: 4235115.EId5DXVgvs () linux-feyn ! site
[Download RAW message or body]

On Thursday 08 September 2016 11:14:50 Matthias Welwarsky wrote: 
> Let me fill you in on my current state:

So, the current current state can be found here: 

http://openocd.zylin.com/3832 (checkout to get the full branch)

It's actually quite usable, but not yet fully functional.

What I know to be working:

- halt, step, resume via telnet console
- Aarch64 and Aarch32 debugging with gdb, even with multi-arch support present 
in recent gdb versions (I tried 7.11)
- hardware breakpoints in aarch64 and aarch32 states
- software breakpoints in aarch64 state
- SMP support
- gdb single stepping, if you add http://openocd.zylin.com/3833
- virt2phys (using AT instructions)

What still needs work:

- aarch32 soft breakpoints, needs to use the correct T32 "halt" opcode and 
cache management must be extended to work in aarch32 state, too
- virt2phys must use correct T32 opcodes in aarch32 state
- mem access with physical addresses _might_ work, but I have not tested it at 
all. I think the handling of the system control register is still broken.
- banked register access in aarch32 state is not implemented. Not an essential 
feature IMHO, means I'm not going to work on it any time soon.
- Modifying the core mode by writing to the CPSR probably doesn't work. Anyway 
modifying registers in gdb is not immediately effective, registers are updated 
only after resume. I might need to change that? I don't know.
- Interrupts are currently uncinditionally disabled when stepping, needs a 
command to change the behaviour.
- the armv8 dpm functions for break- and watchpoint handling are all majorly 
broken.
- cache handling functions need to be ported from cortex_a
- memory access optimizations. Currently, everything uses MA DTR mode, even 
for transferring a single byte. That is not really efficient. I'm surprised 
that it even works.

That's about it. If you want to help, you're welcome.

BR,
Matthias

------------------------------------------------------------------------------
The Command Line: Reinvented for Modern Developers
Did the resurgence of CLI tooling catch you by surprise?
Reconnect with the command line and become more productive. 
Learn the new .NET and ASP.NET CLI. Get your free copy!
http://sdm.link/telerik
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic