2005-08-10 DJ Delorie <dj@redhat.com>
* configure.in: Add m32c support. * configure: Regenerated * m32c: New directory, Renesas R8C/M16C/M32C support. * m32c/abort.S m32c/argvlen.S m32c/argv.S m32c/chdir.S, m32c/chmod.S m32c/close.S m32c/configure m32c/configure.in, m32c/crt0.S, m32c/crtn.S, m32c/exit.S, m32c/fstat.S, m32c/genscript, m32c/getpid.S, m32c/gettimeofday.S, m32c/heaptop.S, m32c/isatty.S, m32c/kill.S, m32c/link.S, m32c/lseek.S, m32c/m32csys.h, m32c/m32c.tmpl, m32c/Makefile.in, m32c/open.S, m32c/read.S, m32c/sbrk.c, m32c/stat.S, m32c/time.S, m32c/times.S, m32c/unlink.S, m32c/utime.S, m32c/write.S: New files
This commit is contained in:
119
libgloss/m32c/crt0.S
Normal file
119
libgloss/m32c/crt0.S
Normal file
@ -0,0 +1,119 @@
|
||||
/*
|
||||
|
||||
Copyright (c) 2005 Red Hat Incorporated.
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
The name of Red Hat Incorporated may not be used to endorse
|
||||
or promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
#if defined(__r8c_cpu__) || defined(__m16c_cpu__)
|
||||
#define A16
|
||||
#define A(n,w) n
|
||||
#define W w
|
||||
#define ADDR .2byte
|
||||
#define ALIGN 1
|
||||
#else
|
||||
#define A24
|
||||
#define A(n,w) w
|
||||
#define W l
|
||||
#define ADDR .4byte
|
||||
#define ALIGN 2
|
||||
#endif
|
||||
|
||||
.text
|
||||
|
||||
.global _start
|
||||
_start:
|
||||
.LFB2:
|
||||
fset U /* User stack */
|
||||
ldc #__stack,sp
|
||||
|
||||
#ifdef A16
|
||||
mov.b #%hi8(__romdatastart),r1h
|
||||
mov.w #%lo16(__romdatastart),a0
|
||||
mov.w #__datastart,a1
|
||||
#else
|
||||
mov.l #__romdatastart,a0
|
||||
mov.l #__datastart,a1
|
||||
#endif
|
||||
mov.w #__romdatacopysize,r3
|
||||
shl.w #-1,r3
|
||||
smovf.w
|
||||
|
||||
#ifdef A16
|
||||
mov.w #__bssstart,a1
|
||||
#else
|
||||
mov.l #__bssstart,a1
|
||||
#endif
|
||||
mov.w #__bsssize,r3
|
||||
shl.w #-1,r3
|
||||
mov.w #0,r0
|
||||
sstr.w
|
||||
|
||||
jsr.a _main
|
||||
.LFE2:
|
||||
|
||||
#ifdef A24
|
||||
/* rv in r0, ok for arg0 */
|
||||
#else
|
||||
mov.w r0,r1
|
||||
#endif
|
||||
|
||||
jsr.a _exit
|
||||
|
||||
;;; Provide Dwarf unwinding information that will help GDB stop
|
||||
;;; backtraces at the right place. This is stolen from assembly
|
||||
;;; code generated by GCC with -dA.
|
||||
.section .debug_frame,"",@progbits
|
||||
.Lframe0:
|
||||
.4byte .LECIE0-.LSCIE0 ; Length of Common Information Entry
|
||||
.LSCIE0:
|
||||
.4byte 0xffffffff ; CIE Identifier Tag
|
||||
.byte 0x1 ; CIE Version
|
||||
.ascii "\0" ; CIE Augmentation
|
||||
.uleb128 0x1 ; CIE Code Alignment Factor
|
||||
.sleb128 -1 ; CIE Data Alignment Factor
|
||||
.byte 0xd ; CIE RA Column
|
||||
.byte 0xc ; DW_CFA_def_cfa
|
||||
.uleb128 0xc
|
||||
.uleb128 0x3
|
||||
.byte 0x8d ; DW_CFA_offset, column 0xd
|
||||
.uleb128 0x3
|
||||
.p2align ALIGN
|
||||
.LECIE0:
|
||||
.LSFDE0:
|
||||
.4byte .LEFDE0-.LASFDE0 ; FDE Length
|
||||
.LASFDE0:
|
||||
.4byte .Lframe0 ; FDE CIE offset
|
||||
ADDR .LFB2 ; FDE initial location
|
||||
ADDR .LFE2-.LFB2 ; FDE address range
|
||||
.byte 0xf ; DW_CFA_def_cfa_expression
|
||||
.uleb128 1 ; length of expression
|
||||
.byte 0x30 ; DW_OP_lit0
|
||||
.p2align ALIGN
|
||||
.LEFDE0:
|
||||
.text
|
Reference in New Issue
Block a user