[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Any hppa gurus?



> It's been decided to go with the ~"64-bit HPUX ABI" and stop passing floating 
> point values in general registers (since this requires proper CALL info 
> and relocating stubs from the linker).
> 
> Which means you can no longer place float/double arguments into general
> register.
> 
> What does the av_alist structure look like? If it has a 'type' per argument,
> it it shouldn't be too hard to write the code.
> 
> Current way it's done:
> No Arguments in general registers:
> 
> 1 Double  - fr7 (fr7 hi, fr6 low)
> 2 Doubles - fr7,fr5
> 3 Doubles - fr7,fr5,Stack...
> 
> 1 Float   - fr7
> 2 Floats  - fr7,fr6
> 3 Floats  - fr7,fr6,fr5
> 4 Floats  - fr7,fr6,fr5,fr4
> 5 Floats  - fr7,fr6,fr5,fr4,Stack...
> 
> And then some old stuff due to 'thinking its doing relocation':
> 
> 2 Doubles with argument in the first 1-2 general 
> (gr25,26) register:
> 	- fr7(fr7 hi, fr6 low),Stack...
> 
> 2 Doubles with arugment in the first 3-4 general 
> (gr23,24,25,26) registers:
> 	- Stack...
> 
> And so on... most of this is due to thinking:
> - Is there enough space for the argument in the general registers?
> 	- No -> Stack
> 	- Yes -> Pass as fp argument in fr's.

Sounds about right.  The strict alignment requirements of types on
the pa cause some holes both in the registers and on the stack.  I'm
not totally sure that the varargs stuff is completely right yet but
I'm not seeing any problems in simple indirect calls with 3.1.  The
passing of 5-7 byte structs is broken if the hppa-linux ABI is deemed
to be the same as that for hpux.  Gcc can't properly pad these structs.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)


-- 
To UNSUBSCRIBE, email to debian-hppa-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: