[PATCH] size reduction of Cell/SPU variable argument part
Jeff Johnston
jjohnstn@redhat.com
Thu Aug 23 23:49:00 GMT 2007
Patch applied. Thanks for addressing Patrick's comments.
Regards,
-- Jeff J.
Hidetaka Takano wrote:
> Patrick,
>
>> Patch is corrupted, it has some extra newlines. The previous
>> version never showed up on the newlib list.
> --snip--
>> You can see the extra newline above.
>
> Sorry, it was due to my mail program..
> This time I've sent the patch as an attached file.
>
>> Sorry I did not comment on your last internal posting of the patch.
>
> Not at all. I appriciate you.
>
>> Can you change all the enum SPE_C99_nnnn to defines, so we
>> don't have some values in the include file twice?
>> And then use #ifndef __ASSEMBLER__ around other hunks.
>> I'd rather they were decimal values like we have in libgloss/spu/jsre.h.
>
> OK. I've done it.
>
>> Just use the string for SIGCODE, NAME, and OPCODE rather than have a
>> define. PARMS is OK, or remove it and add a comment.
>
> OK. I've modefied it.
>
>> Why is FP a define value? It is always 3, and the file
>> pointer is always the first argument to fprintf and fscanf.
>
> Originally, I intended to assemblerize not only variable argument APIs
> but also fixed ones.
> So some of fixed argument APIs have FP, which is not 3.
> (like fread -> 6)
> However, this time, to make it more simple, I've changed it as you pointed.
>
>> IMHO, include mk_syscall and the syscall.def even though they are not
>> automatically run, so the assembly code can be easily fixed and
>> regenerated (like if we removed the check_init code).
>
> Difinitly. Ideally, it should be generated automatically in the build path.
> This time I just do add the file for maintenance.
>
> I hope this patch would be fine for us.
>
> I've added new Change log.
> ========================================================
> newlib/ChangeLog:
>
> 2007-08-xx Hidetaka Takano <hidetaka.takano@glb.toshiba.co.jp>
>
> Reduce the memory consumption of variable argument functions
> for SPU (cell):
> * libc/machine/spu/Makefile.am: Replace printf/scanf family C sources
> to assembler sources.
> * libc/machine/spu/Makefile.in: Regenerated.
> * libc/machine/spu/stdio.c: Add __check_init function wrapping
> CHECK_INIT macro to use from assembler routines.
> * libc/machine/spu/c99ppe.h: Add definitions for assembler code.
> * libc/machine/spu/fiprintf.S: New file.
> * libc/machine/spu/fiscanf.S: Ditto.
> * libc/machine/spu/fprintf.S: Ditto.
> * libc/machine/spu/fscanf.S: Ditto.
> * libc/machine/spu/iprintf.S: Ditto.
> * libc/machine/spu/iscanf.S: Ditto.
> * libc/machine/spu/printf.S: Ditto.
> * libc/machine/spu/scanf.S: Ditto.
> * libc/machine/spu/siprintf.S: Ditto.
> * libc/machine/spu/siscanf.S: Ditto.
> * libc/machine/spu/sniprintf.S: Ditto.
> * libc/machine/spu/snprintf.S: Ditto.
> * libc/machine/spu/sprintf.S: Ditto.
> * libc/machine/spu/sscanf.S: Ditto.
> * libc/machine/spu/stack_reg_va.S: Ditto.
> * libc/machine/spu/syscall.def: Ditto. (for maintenance)
> * libc/machine/spu/mk_syscalls: Ditto. (for maintenance)
> * libc/machine/spu/fiprintf.c: Removed. (Replaced by .S)
> * libc/machine/spu/fiscanf.c: Ditto.
> * libc/machine/spu/fprintf.c: Ditto.
> * libc/machine/spu/fscanf.c: Ditto.
> * libc/machine/spu/iprintf.c: Ditto.
> * libc/machine/spu/iscanf.c: Ditto.
> * libc/machine/spu/printf.c: Ditto.
> * libc/machine/spu/scanf.c: Ditto.
> * libc/machine/spu/siprintf.c: Ditto.
> * libc/machine/spu/siscanf.c: Ditto.
> * libc/machine/spu/sniprintf.c: Ditto.
> * libc/machine/spu/snprintf.c: Ditto.
> * libc/machine/spu/sprintf.c: Ditto.
> * libc/machine/spu/sscanf.c: Ditto.
>
> ========================================================
>
> Thank you.
> ---
> Hidetaka Takano / Toshiba
More information about the Newlib
mailing list