2004-03-03 Stephane Carrez <stcarrez@nerim.fr>

* m68hc11/sci-inout.S: Supports -mlong-calls.
        * m68hc11/sim-valid-m68hc11.ld (.tramp): New section for trampolines.
        (.text): Mark the .installN and .finiN section with KEEP.
        (.vectors): Likewise for .vectors.
        (.gcc_except_table): New section.
        * m68hc11/sim-valid-m68hc12.ld (.tramp): New section for trampolines.
        (.text): Mark the .installN and .finiN section with KEEP.
        (.vectors): Likewise for .vectors.
        (.gcc_except_table): New section.
This commit is contained in:
Jeff Johnston 2004-03-04 00:35:03 +00:00
parent e299c7addc
commit 13a47bd66a
4 changed files with 82 additions and 55 deletions

View File

@ -1,3 +1,15 @@
2004-03-03 Stephane Carrez <stcarrez@nerim.fr>
* m68hc11/sci-inout.S: Supports -mlong-calls.
* m68hc11/sim-valid-m68hc11.ld (.tramp): New section for trampolines.
(.text): Mark the .installN and .finiN section with KEEP.
(.vectors): Likewise for .vectors.
(.gcc_except_table): New section.
* m68hc11/sim-valid-m68hc12.ld (.tramp): New section for trampolines.
(.text): Mark the .installN and .finiN section with KEEP.
(.vectors): Likewise for .vectors.
(.gcc_except_table): New section.
2004-01-23 Gábor Lóki <loki@inf.u-szeged.hu>
* m68k/leds.c: remove led_putnum(), zylons() forward

View File

@ -1,5 +1,5 @@
/* M68HC11/M68HC12 serial line operations
* Copyright (C) 1999, 2001 Stephane Carrez (stcarrez@nerim.fr)
* Copyright (C) 1999, 2001, 2003, 2004 Stephane Carrez (stcarrez@nerim.fr)
*
* The authors hereby grant permission to use, copy, modify, distribute,
* and license this software and its documentation for any purpose, provided
@ -12,6 +12,25 @@
* they apply.
*/
#ifdef __HAVE_SHORT_INT__
.mode mshort
#else
.mode mlong
#endif
#if defined(__USE_RTC__)
.macro ret
#if defined(mc68hc12)
rtc
#else
jmp __return_32
#endif
.endm
#else
.macro ret
rts
.endm
#endif
#ifdef mc68hc12
SC0CR1 = 0xC2
SC0CR2 = 0xC3
@ -39,7 +58,7 @@ L1:
ldab SC0CR2,x
orab #0x8
stab SC0CR2,x
rts
ret
.sect .text
.globl inbyte
@ -52,7 +71,7 @@ inbyte:
bita #0x20
beq inbyte
ldab SC0CR2,x
rts
ret
.globl _sci_init
.sect .text
@ -99,7 +118,7 @@ L1:
ldab SCCR2,x
orab #0x8
stab SCCR2,x
rts
ret
.sect .text
.globl inbyte
@ -112,7 +131,7 @@ inbyte:
bita #0x20
beq inbyte
ldab SCDR,x
rts
ret
.globl _sci_init
.sect .text

View File

@ -146,15 +146,21 @@ SECTIONS
{
*(.init)
} =0
/* Put trampolines at beginning of text at 0x4400 so that they
are not in memory bank window. */
.tramp :
{
*(.tramp)
} > text
.text :
{
/* Put startup code at beginning so that _start keeps same address. */
/* Startup code. */
*(.install0) /* Section should setup the stack pointer. */
*(.install1) /* Place holder for applications. */
*(.install2) /* Optional installation of data sections in RAM. */
*(.install3) /* Place holder for applications. */
*(.install4) /* Section that calls the main. */
KEEP (*(.install0)) /* Section should setup the stack pointer. */
KEEP (*(.install1)) /* Place holder for applications. */
KEEP (*(.install2)) /* Optional installation of data sections in RAM. */
KEEP (*(.install3)) /* Place holder for applications. */
KEEP (*(.install4)) /* Section that calls the main. */
*(.init)
*(.text)
*(.text.*)
@ -162,11 +168,11 @@ SECTIONS
*(.gnu.warning)
*(.gnu.linkonce.t.*)
/* Finish code. */
*(.fini0) /* Beginning of finish code (_exit symbol). */
*(.fini1) /* Place holder for applications. */
*(.fini2) /* C++ destructors. */
*(.fini3) /* Place holder for applications. */
*(.fini4) /* Runtime exit. */
KEEP (*(.fini0)) /* Beginning of finish code (_exit symbol). */
KEEP (*(.fini1)) /* Place holder for applications. */
KEEP (*(.fini2)) /* C++ destructors. */
KEEP (*(.fini3)) /* Place holder for applications. */
KEEP (*(.fini4)) /* Runtime exit. */
_etext = .;
PROVIDE (etext = .);
} > text
@ -174,6 +180,10 @@ SECTIONS
{
*(.eh_frame)
} > text
.gcc_except_table :
{
*(.gcc_except_table)
} > text
.rodata :
{
*(.rodata)
@ -188,25 +198,13 @@ SECTIONS
.ctors :
{
PROVIDE (__CTOR_LIST__ = .);
*(.ctors)
/* We don't want to include the .ctor section from
from the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the
end of ctors marker and it must be last
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors)) */
KEEP (*(.ctors))
PROVIDE(__CTOR_END__ = .);
} > text
.dtors :
{
PROVIDE(__DTOR_LIST__ = .);
*(.dtors)
/*
KEEP (*crtbegin.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors)) */
KEEP (*(.dtors))
PROVIDE(__DTOR_END__ = .);
} > text
/* Start of the data section image in ROM. */
@ -274,7 +272,7 @@ SECTIONS
PROVIDE (_vectors_addr = DEFINED (vectors_addr) ? vectors_addr : 0xffc0);
.vectors DEFINED (vectors_addr) ? vectors_addr : 0xffc0 :
{
*(.vectors)
KEEP (*(.vectors))
}
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }

View File

@ -145,15 +145,21 @@ SECTIONS
{
*(.init)
} =0
/* Put trampolines at beginning of text at 0x4400 so that they
are not in memory bank window. */
.tramp :
{
*(.tramp)
} > text
.text :
{
/* Put startup code at beginning so that _start keeps same address. */
/* Startup code. */
*(.install0) /* Section should setup the stack pointer. */
*(.install1) /* Place holder for applications. */
*(.install2) /* Optional installation of data sections in RAM. */
*(.install3) /* Place holder for applications. */
*(.install4) /* Section that calls the main. */
KEEP (*(.install0)) /* Section should setup the stack pointer. */
KEEP (*(.install1)) /* Place holder for applications. */
KEEP (*(.install2)) /* Optional installation of data sections in RAM. */
KEEP (*(.install3)) /* Place holder for applications. */
KEEP (*(.install4)) /* Section that calls the main. */
*(.init)
*(.text)
*(.text.*)
@ -161,11 +167,11 @@ SECTIONS
*(.gnu.warning)
*(.gnu.linkonce.t.*)
/* Finish code. */
*(.fini0) /* Beginning of finish code (_exit symbol). */
*(.fini1) /* Place holder for applications. */
*(.fini2) /* C++ destructors. */
*(.fini3) /* Place holder for applications. */
*(.fini4) /* Runtime exit. */
KEEP (*(.fini0)) /* Beginning of finish code (_exit symbol). */
KEEP (*(.fini1)) /* Place holder for applications. */
KEEP (*(.fini2)) /* C++ destructors. */
KEEP (*(.fini3)) /* Place holder for applications. */
KEEP (*(.fini4)) /* Runtime exit. */
_etext = .;
PROVIDE (etext = .);
} > text
@ -173,6 +179,10 @@ SECTIONS
{
*(.eh_frame)
} > text
.gcc_except_table :
{
*(.gcc_except_table)
} > text
.rodata :
{
*(.rodata)
@ -187,25 +197,13 @@ SECTIONS
.ctors :
{
PROVIDE (__CTOR_LIST__ = .);
*(.ctors)
/* We don't want to include the .ctor section from
from the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the
end of ctors marker and it must be last
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
KEEP (*(SORT(.ctors.*)))
KEEP (*(.ctors)) */
KEEP (*(.ctors))
PROVIDE(__CTOR_END__ = .);
} > text
.dtors :
{
PROVIDE(__DTOR_LIST__ = .);
*(.dtors)
/*
KEEP (*crtbegin.o(.dtors))
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
KEEP (*(SORT(.dtors.*)))
KEEP (*(.dtors)) */
KEEP (*(.dtors))
PROVIDE(__DTOR_END__ = .);
} > text
/* Start of the data section image in ROM. */
@ -274,7 +272,7 @@ SECTIONS
PROVIDE (_vectors_addr = DEFINED (vectors_addr) ? vectors_addr : 0xffc0);
.vectors DEFINED (vectors_addr) ? vectors_addr : 0xffc0 :
{
*(.vectors)
KEEP (*(.vectors))
}
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }