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/arm/redboot-crt0.S')
-rw-r--r--libgloss/arm/redboot-crt0.S111
1 files changed, 0 insertions, 111 deletions
diff --git a/libgloss/arm/redboot-crt0.S b/libgloss/arm/redboot-crt0.S
deleted file mode 100644
index f2963eeb4..000000000
--- a/libgloss/arm/redboot-crt0.S
+++ /dev/null
@@ -1,111 +0,0 @@
-
- .file "crt0.S"
-
-#define XGLUE(a,b) a##b
-#define GLUE(a,b) XGLUE(a,b)
-
-#ifdef __USER_LABEL_PREFIX__
-#define SYM_NAME( name ) GLUE (__USER_LABEL_PREFIX__, name)
-#else
-#error __USER_LABEL_PREFIX is not defined
-#endif
-
- .text
- /* Setup the assembly entry point. */
- .code 32
- .globl SYM_NAME(start)
- .globl SYM_NAME(_start)
-SYM_NAME(start):
-SYM_NAME(_start):
- mov fp, #0 /* Null frame pointer. */
- mov r7, #0 /* Null frame pointer for Thumb. */
-
- /* Enable interrupts for gdb debugging. */
- mrs r0, cpsr
- bic r0, r0, #0xC0
- msr cpsr, r0
-
- mov a2, #0 /* Second arg: fill value. */
- ldr a1, .LC1 /* First arg: start of memory block. */
- ldr a3, .LC2
- sub a3, a3, a1 /* Third arg: length of block. */
-
-#ifdef GCRT0
- /* Zero out the bss without using memset.
- Using memset is bad because it may be instrumented for
- profiling, but at this point, the profiling data structures
- have not been set up.
- FIXME: This loop could be a lot more efficient. */
- subs a3, a3, #0
- beq 2f
-1: strb a2, [a1]
- subs a3, a3, #1
- add a1, a1, #1
- bne 1b
-2:
- /* Nothing to left to clear. */
-#endif
-
-#ifdef __thumb__ /* Enter Thumb mode. */
- add a4, pc, #1 /* Get the address of the Thumb block. */
- bx a4 /* Go there and start Thumb decoding. */
-
- .code 16
- .global __change_mode
- .thumb_func
-__change_mode:
-#endif
-
-#ifndef GCRT0
- bl SYM_NAME(memset)
-#endif
- bl SYM_NAME(__get_memtop)
- sub r0, r0, #32
- mov sp, r0
-
-#ifdef __USES_INITFINI__
- /* Some arm/elf targets use the .init and .fini sections
- to create constructors and destructors, and for these
- targets we need to call the _init function and arrange
- for _fini to be called at program exit. */
- ldr r0, .Lfini
- bl SYM_NAME (atexit)
- bl SYM_NAME (_init)
-#endif
-
- mov a1, #0
- ldr a2, .LC3
- mov a3, a2
- bl SYM_NAME(main)
- 1: bl SYM_NAME(exit)
- b 1b
- .align 2
-.LC1:
- .word __bss_start__
-.LC2:
- .word __bss_end__
-.LC3:
- .word 0
-#ifdef __USES_INITFINI__
-.Lfini:
- .word SYM_NAME(_fini)
-#endif
-#if 0
-#ifdef __thumb__
- .code 16
-#endif
- .global SYM_NAME(__syscall)
-#ifdef __thumb__
- .thumb_func
-#else
- .align 4
-#endif
-SYM_NAME(__syscall):
- mov r12, lr
-#ifdef __thumb__
- swi 0x18
-#else
- swi 0x180001
-#endif
- mov pc, r12
-#endif