Microblaze libgloss and gdb simulator

Mike Frysinger vapier@gentoo.org
Sat Apr 24 04:28:51 GMT 2021


On 23 Apr 2021 12:40, Mike Frysinger wrote:
> On 23 Apr 2021 11:17, Joel Sherrill wrote:
> > On Fri, Apr 23, 2021 at 10:05 AM Mike Frysinger wrote:
> > > newlib/libgloss missing bsp code wouldn't be addressed by sim selection
> > > though :).
> > 
> > +1
> > 
> > My old outbyte() method writes to a very specific address which appears
> > to be a UART. But I see no reference to that in any gdb source of any
> > vintage.I wonder if I added something locally to gdb to have a UART on
> > the Microblaze and lost it over the years. Does this look like it would work
> > now to you?
> > 
> > https://github.com/heshamelmatary/rtems-microblaze/blob/master/c/src/lib/libbsp/microblaze/gdbmbsim/console/console-io.c#L47
> > 
> > I started a port a LONG time ago and apparently remember things fuzzy. :(
> 
> i looked through the committed history of the sim (which only goes back to
> 2009 for microblaze) and couldn't find any relevant references to this addr.
> 
> let me see how hard it is to enable SIM_AC_OPTION_HARDWARE for microblaze.
> then we could connect dv-pal's tty output to that addr and it'd just work.

i sent you a patch.  with it, microblaze sim can now use the pal model to get
a very basic UART.  for example:

$ microblaze-elf-objdump -d pass

pass:     file format elf32-microblaze

Disassembly of section .text:

00000050 <_ftext>:
  50:	20600070 	addi	r3, r0, 112
  54:	b0004060 	imm	16480
  58:	f0600018 	sbi	r3, r0, 24
  5c:	20600061 	addi	r3, r0, 97
  60:	b0004060 	imm	16480
  64:	f0600018 	sbi	r3, r0, 24
  68:	20600073 	addi	r3, r0, 115
  6c:	b0004060 	imm	16480
  70:	f0600018 	sbi	r3, r0, 24
  74:	20600073 	addi	r3, r0, 115
  78:	b0004060 	imm	16480
  7c:	f0600018 	sbi	r3, r0, 24
  80:	2060000a 	addi	r3, r0, 10
  84:	b0004060 	imm	16480
  88:	f0600018 	sbi	r3, r0, 24
  8c:	20600000 	addi	r3, r0, 0
  90:	b8000000 	bri	0		// 90

$ ./run --hw-device '/pal@0x40600000/reg 0x40600000 64' ./pass
pass

basically writes to 0x40600018 will go to stdout.

ideally there would be a way to handle syscalls for microblaze.
i guess we should handle bri 0x8 here ?  hmm let me try that.
-mike


More information about the Newlib mailing list