Re: [PATCH] H8/300: Start-up code cleanup for H8/300H and newer
Corinna Vinschen <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
Hi, can somebody having insight or even using h8 have a look, please? My last engagement in h8 was about 20 years ago... Thanks, Corinna On Jul 19 11:56, Jan Dubiec wrote: > This patch has been started as an attempt to fix assembler message about > missing stack section attributes: > CPPAS libc/sys/h8300hms/crt0.o > ../../../combosrc/newlib/libc/sys/h8300hms/crt0.S: Assembler messages: > ../../../combosrc/newlib/libc/sys/h8300hms/crt0.S:64: Warning: new section > '.stack' defined without attributes - this might cause problems > > In the process I have noticed that H8/300H, H8/300S and H8SX code does not > support normal mode. So the patch does a few things: declares stack section > in a proper way, merges H8/300H and H8/300S/SX parts of code into one and > adds support for normal mode. > > 2025-07-19 Jan Dubiec <[email protected]> > > newlib/ChangeLog: > > * libc/sys/h8300hms/crt0.S: General cleanup: declare stack section > in a proper way, merge H8/300H and H8/300S/SX parts of code into > one, add support for normal mode. > newlib/libc/sys/h8300hms/crt0.S | 80 +++++++++++++++++------------------------ > 1 file changed, 32 insertions(+), 48 deletions(-) > > diff --git a/newlib/libc/sys/h8300hms/crt0.S b/newlib/libc/sys/h8300hms/crt0.S > index 05634113c..757fb0477 100644 > --- a/newlib/libc/sys/h8300hms/crt0.S > +++ b/newlib/libc/sys/h8300hms/crt0.S > @@ -1,4 +1,4 @@ > -; h8/300 and h8/300h start up file. > +; H8/300, H8/300H, H8/300S and H8SX start up file. > > #include "setarch.h" > > @@ -10,90 +10,74 @@ _start: > mov.w #_stack,sp > mov.w #_edata,r0 > mov.w #_end,r2 > - sub.w r1,r1 > + sub.w r1,r1 > sub.w r0,r2 > jsr @_memset > #ifdef __ELF__ > - mov.l #__fini,r0 > - jsr @_atexit > + mov.w #__fini,r0 > + jsr @_atexit > #ifdef __SIMULATOR__ > - jsr @0xcc > + jsr @0xcc > #endif > - jsr @__init > + jsr @__init > #else > #ifdef __SIMULATOR__ > - jsr @0xcc > + jsr @0xcc > #endif > jsr @___main > #endif > jsr @_main > jsr @_exit > > - .section .stack > -_stack: .word 1 > + .section .stack, "aw", @nobits > +_stack: .space 2 > > #endif > > -#ifdef __H8300H__ > +#if defined (__H8300H__) || defined (__H8300S__) || defined (__H8300SX__) > > .section .text > .global _start > _start: > +#ifdef __NORMAL_MODE__ > + mov.w #_stack,sp > + mov.w #_edata,r0 > + mov.w #_end,r2 > + sub.l er1,er1 > + sub.w r0,r2 > +#else > mov.l #_stack,sp > mov.l #_edata,er0 > mov.l #_end,er2 > - sub.w r1,r1 > + sub.l er1,er1 > sub.l er0,er2 > +#endif > jsr @_memset > #ifdef __ELF__ > - mov.l #__fini,er0 > - jsr @_atexit > -#ifdef __SIMULATOR__ > - jsr @0xcc > -#endif > - jsr @__init > +#ifdef __NORMAL_MODE__ > + mov.w #__fini,r0 > #else > -#ifdef __SIMULATOR__ > - jsr @0xcc > -#endif > - jsr @___main > + mov.l #__fini,er0 > #endif > - jsr @_main > - jsr @_exit > - > - .section .stack > -_stack: .long 1 > - > -#endif > - > -#if defined (__H8300S__) || defined (__H8300SX__) > - > - .section .text > - .global _start > -_start: > - mov.l #_stack,sp > - mov.l #_edata,er0 > - mov.l #_end,er2 > - sub.w r1,r1 > - sub.l er0,er2 > - jsr @_memset > -#ifdef __ELF__ > - mov.l #__fini,er0 > - jsr @_atexit > + jsr @_atexit > #ifdef __SIMULATOR__ > - jsr @0xcc > + jsr @0xcc > #endif > - jsr @__init > + jsr @__init > #else > #ifdef __SIMULATOR__ > - jsr @0xcc > + jsr @0xcc > #endif > jsr @___main > #endif > jsr @_main > jsr @_exit > > - .section .stack > -_stack: .long 1 > + .section .stack, "aw", @nobits > +#ifdef __NORMAL_MODE__ > +_stack: .space 2 > +#else > +_stack: .space 4 > +#endif > > #endif