dtc: .quad asm directive generation

Mark A. Greer mgreer at mvista.com
Wed Mar 15 10:52:54 EST 2006


On Tue, Mar 14, 2006 at 02:31:35PM +1100, David Gibson wrote:
> On Mon, Mar 13, 2006 at 02:21:05PM -0700, Mark A. Greer wrote:
> > Hi David,
> > 
> > I'm playing around with moving some 32-bit embedded platforms (that don't
> > have OF or dev-tree-aware uboot) to the powerpc tree.  Basically, I make an
> > initial .dts file for that platform then dtc-compile it using:
> > 
> > dtc -I dts -O asm -o <platform>.S -V 16 <platform>.dts
> > 
> > Then I build the <platform>.S file with the normal bootwrapper/kernel build.
> > 
> > The problem I'm having is that dtc generates some .quad directives that
> > is causing my 32-bit assembler to choke (.quad not supported).  Do we need
> > a 32-bit switch for dtc or should I be giving some sort of switch to
> > gcc(version 3.4.3)/gas(version 2.15.94) to make it work?
> 
> [snip]
> > dtc asm output:
> > ---------------
> > 
> > /* autogenerated by dtc, do not edit */
> > 
> > <snip>
> > 
> > dt_reserve_map:
> > _dt_reserve_map:
> > 	.quad	0, _dt_blob_start
> > 	.quad	0, _dt_blob_end - _dt_blob_start
> > /* Memory reserve map from source file */
> > 	.quad	0
> > 	.quad	0
> > 
> > <snip>
> 
> Oh, bother.  I guess I never tried with a 32-bit only assembler.  Um,
> a number of observations are applicable here:
> 	- The flattened tree spec defines the memory range fields to
> be 64-bit quantities, always, so these things shouldn't just become
> ".long" for 32-bit targets.
> 	- For the "spacer" 0 entries, we can and should just replace
> the .quad with two ".long" directives, easy change.
> 	- The autogenerated entry reserving the tree itself, however,
> is trickier.  It genuinely needs to be a .quad for 64-bit targets.  So
> I guess we'd have to have a 32/64 bit target option.  Yuck.
> 	- IIRC BenH was contemplating revising the spec so that the
> range for the device tree is reserved implicitly, like the range for
> the kernel image, so it wouldn't have to be listed in the blob.  This
> would sidestep the problem, though we would have to change dtc to omit
> this entry, at least for suitable output blob versions.
> 	- I've been thinking for a while, that the whole memory
> reserve thing needs some work in dtc.  The fact that the range for the
> tree blob is included automatically for asm output, but not for blob
> output is a wart, at least.  I was thinking about instead of
> automatically generating it, including a new keyword, or form for the
> /memreserve/ directive that will generate this range if necessary /
> possible.  I never got around to implementing that, though.
> 
> And finally, as of, well right about now, until October or so, I'm
> expecting to be unavailable, off travelling and things.  In the
> interim Jon Loeliger of Freescale has agreed to be dtc maintainer.

Jon, any comments?



More information about the Linuxppc-dev mailing list