Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/rl78/crt0.S')
-rw-r--r--libgloss/rl78/crt0.S331
1 files changed, 0 insertions, 331 deletions
diff --git a/libgloss/rl78/crt0.S b/libgloss/rl78/crt0.S
deleted file mode 100644
index d5a07df90..000000000
--- a/libgloss/rl78/crt0.S
+++ /dev/null
@@ -1,331 +0,0 @@
-/* Copyright (c) 2011 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. */
-
-#include "rl78-sys.h"
-
- .section ".vec","a"
- .short _start
-
- .section ".ivec","a"
- .macro _iv x
- .weak \x
- .short \x
- .endm
-#define IV(x) _iv _##x##_handler
-#define IVx() .short 0
-
- /* To use a vector, simply define a global function named foo_handler()
- for any IV(foo) listed below (i.e. tm05_handler) */
-
- .global _interrupt_vector_table
-_interrupt_vector_table:
- IV(wdti)
- IV(lvi)
- IV(p0)
- IV(p1)
- IV(p2)
- IV(p3)
- IV(p4)
- IV(p5)
-
- IV(st2)
- IV(sr2)
- IV(sre2)
- IV(dma0)
- IV(dma1)
- IV(st0)
- IV(sr0)
- IV(tm01h)
-
- IV(st1)
- IV(sr1)
- IV(sre1)
- IV(iica0)
- IV(tm00)
- IV(tm01)
- IV(tm02)
- IV(tm03)
-
- IV(ad)
- IV(rtc)
- IV(it)
- IV(kr)
- IV(st3)
- IV(sr3)
- IV(tm13)
- IV(tm04)
-
- IV(tm05)
- IV(tm06)
- IV(tm07)
- IV(p6)
- IV(p7)
- IV(p8)
- IV(p9)
- IV(p10)
-
- IV(p11)
- IV(tm10)
- IV(tm12)
- IV(sre3)
- IV(tm13h)
- IV(md)
- IV(iica1)
- IV(fl)
-
- IV(dma2)
- IV(dma3)
- IV(tm14)
- IV(tm15)
- IV(tm16)
- IV(tm17)
- IVx()
- IVx()
-
- IVx()
- IVx()
- IVx()
- IVx()
- IVx()
- IV(brk)
- /* Note: 126 vectors */
-
- .section ".csstart", "ax"
- .global __csstart
-__csstart:
- br !!_start
-
- .weak __rl78_option_byte_0
- .weak __rl78_option_byte_1
- .weak __rl78_option_byte_2
- .weak __rl78_option_byte_3
-__rl78_option_byte_0 = 0x6e
-__rl78_option_byte_1 = 0xff
-__rl78_option_byte_2 = 0xe8
-__rl78_option_byte_3 = 0x85
-
- .section ".opt", "a"
- .byte __rl78_option_byte_0
- .byte __rl78_option_byte_1
- .byte __rl78_option_byte_2
- .byte __rl78_option_byte_3
-
- .text
-
- .global _start
- .type _start, @function
-_start:
- movw sp, #__stack
-
-
-;; block move to initialize .data
-
- ;; we're copying from 00:[_romdatastart] to 0F:[_datastart]
- ;; and our data is not in the mirrored area.
- mov es, #0
-
- sel rb0 ; bank 0
- movw hl, #__datastart
- movw de, #__romdatastart
- sel rb1 ; bank 1
- movw ax, #__romdatacopysize
- shrw ax,1
-1:
- cmpw ax, #0
- bz $1f
- decw ax
- sel rb0 ; bank 0
- movw ax, es:[de]
- movw [hl], ax
- incw de
- incw de
- incw hl
- incw hl
- sel rb1
- br $1b
-1:
- sel rb0 ; bank 0
-
-
-;; block fill to .bss
-
- sel rb0 ; bank 0
- movw hl, #__bssstart
- movw ax, #0
- sel rb1 ; bank 1
- movw ax, #__bsssize
- shrw ax,1
-1:
- cmpw ax, #0
- bz $1f
- decw ax
- sel rb0 ; bank 0
- movw [hl], ax
- incw hl
- incw hl
- sel rb1
- br $1b
-1:
- sel rb0 ; bank 0
-
-
-
- call !!__rl78_init
-
-#ifdef PROFILE_SUPPORT /* Defined in gcrt0.S. */
- movw ax, # _start
- push ax
- movw ax, # _etext
- push ax
- call !!__monstartup
-#endif
-
- movw ax, #0
- push ax /* envp */
- push ax /* argv */
- push ax /* argc */
- call !!_main
-.LFE2:
-
- movw ax, r8 ; Save return code.
- push ax
-
-#ifdef PROFILE_SUPPORT
- call !!__mcleanup
-#endif
-
- call !!_exit
-
- .size _start, . - _start
-
- .global _rl78_run_preinit_array
- .type _rl78_run_preinit_array,@function
-_rl78_run_preinit_array:
- movw hl, #__preinit_array_start
- movw de, #__preinit_array_end
- movw bc, #-2
- br $_rl78_run_inilist
-
- .global _rl78_run_init_array
- .type _rl78_run_init_array,@function
-_rl78_run_init_array:
- movw hl, #__init_array_start
- movw de, #__init_array_end
- movw bc, #2
- br $_rl78_run_inilist
-
- .global _rl78_run_fini_array
- .type _rl78_run_fini_array,@function
-_rl78_run_fini_array:
- movw hl, #__fini_array_start
- movw de, #__fini_array_end
- movw bc, #-2
- /* fall through */
-
- ;; HL = start of list
- ;; DE = end of list
- ;; BC = step direction (+2 or -2)
-_rl78_run_inilist:
-next_inilist:
- movw ax, hl
- cmpw ax, de
- bz $done_inilist
- movw ax, [hl]
- cmpw ax, #-1
- bz $skip_inilist
- cmpw ax, #0
- bz $skip_inilist
- push ax
- push bc
- push de
- push hl
- call ax
- pop hl
- pop de
- pop bc
- pop ax
-skip_inilist:
- movw ax, hl
- addw ax, bc
- movw hl, ax
- br $next_inilist
-done_inilist:
- ret
-
- .section .init,"ax"
-
- .global __rl78_init
-__rl78_init:
-
- .section .fini,"ax"
-
- .global __rl78_fini
-__rl78_fini:
- call !!_rl78_run_fini_array
-
- .section .data
- .global ___dso_handle
- .weak ___dso_handle
-___dso_handle:
- .long 0
-
-;;; 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 2
-.LECIE0:
-.LSFDE0:
- .4byte .LEFDE0-.LASFDE0 ; FDE Length
-.LASFDE0:
- .4byte .Lframe0 ; FDE CIE offset
- .4byte _start ; FDE initial location
- .4byte .LFE2 - _start ; FDE address range
- .byte 0xf ; DW_CFA_def_cfa_expression
- .uleb128 1 ; length of expression
- .byte 0x30 ; DW_OP_lit0
- .p2align 2
-.LEFDE0:
-
- .text