This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v3] gdb: bfin: new port


On Tuesday, December 14, 2010 16:31:22 Pedro Alves wrote:
> On Tuesday 14 December 2010 20:42:26, Mike Frysinger wrote:
> > +  /* Pseudo Registers */
> > +  BFIN_PC_REGNUM,
> > +  BFIN_CC_REGNUM,
> > +  BFIN_TEXT_ADDR,              /* Address of .text section.  */
> > +  BFIN_TEXT_END_ADDR,          /* Address of the end of .text section. 
> > */ +  BFIN_DATA_ADDR,              /* Address of .data section.  */ +
> > +  BFIN_FDPIC_EXEC_REGNUM,
> > +  BFIN_FDPIC_INTERP_REGNUM,
> > +
> 
> I thought these (text_addr ... fdpic*) would be removed?

i was thinking of gdbserver, but i can do it here too.  pretty sure the first 
three are actually for FLAT, but the common code takes care of those.  i can 
comment out these as well.

> Can you explain why are the PC and CC registers pseudo
> registers, but supported as being raw registers anyway?  Couldn't
> gdb compute them itself from the other registers, with
> gdb's pseudo register support (gdbarch_pseudo_register_read|write)?
> googling I found you mentioning that the "CC pseudo register can
> be deduced from the ASTAT register", though further googling doesn't
> find any mention of what ASTAT is.  I'm sure there's a good reason,
> I'm probably just missing a comment somewhere.

i dont see how PC can be deduced from anything.  it's considered pseudo 
because in the ISA there is no way of doing "PC = <some reg or value>" or 
"<reg> = PC".  you can only indirectly affect it by doing something such as 
"<reg> = <some value>" followed by "JUMP (reg)".  Linux indirectly manipulates 
it via the RETI (return from interrupt) register (which is why the Blackfin 
kernel actually loads RETI into the PC slot in the register stack).  you do 
get a bit more direct access to it via JTAG, but that doesnt count.

CC is actually a single bit in the ASTAT (arithmetic status) register, but 
often is treated as an actual register in much of the ISA.  such as 
assignments or logical tests.  you can do "<reg> = CC" and "CC = <reg>", but 
you cant do this with any other ASTAT bit (like AZ, AN, etc...).
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]