2002-11-08 Jeff Johnston <jjohnstn@redhat.com>
* arm/Makefile.in: Add support for new pid specs. * arm/coff-iq80310.specs: Change to allow future support. * arm/elf-iq80310.specs: Ditto. * arm/elf-redboot.specs: Ditto. * arm/coff-redboot.ld: Add EH frame support. * arm/redboot-crt0.S: Add optional code to clear bss without memset. * arm/coff-pid.specs: New file. * arm/elf-pid.specs: New file.
This commit is contained in:
parent
c27382bdbe
commit
5b30331167
@ -1,3 +1,15 @@
|
|||||||
|
2002-11-08 Jeff Johnston <jjohnstn@redhat.com>
|
||||||
|
|
||||||
|
* arm/Makefile.in: Add support for new pid specs.
|
||||||
|
* arm/coff-iq80310.specs: Change to allow future support.
|
||||||
|
* arm/elf-iq80310.specs: Ditto.
|
||||||
|
* arm/elf-redboot.specs: Ditto.
|
||||||
|
* arm/coff-redboot.ld: Add EH frame support.
|
||||||
|
* arm/redboot-crt0.S: Add optional code to clear bss without
|
||||||
|
memset.
|
||||||
|
* arm/coff-pid.specs: New file.
|
||||||
|
* arm/elf-pid.specs: New file.
|
||||||
|
|
||||||
2002-11-08 Jeff Johnston <jjohnstn@redhat.com>
|
2002-11-08 Jeff Johnston <jjohnstn@redhat.com>
|
||||||
Catherine Moore <clm@redhat.com>
|
Catherine Moore <clm@redhat.com>
|
||||||
|
|
||||||
|
@ -47,15 +47,19 @@ OBJCOPY = `if [ -f ${objroot}/../binutils/objcopy ] ; \
|
|||||||
then echo ${objroot}/../binutils/objcopy ; \
|
then echo ${objroot}/../binutils/objcopy ; \
|
||||||
else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi`
|
else t='$(program_transform_name)'; echo objcopy | sed -e $$t ; fi`
|
||||||
|
|
||||||
REDBOOT_OBJS = redboot-crt0.o redboot-syscalls.o
|
REDBOOT_OBJS = redboot-crt0.o redboot-syscalls.o
|
||||||
REDBOOT_SCRIPTS = redboot.ld redboot.specs
|
REDBOOT_SCRIPTS = redboot.ld redboot.specs
|
||||||
REDBOOT_INSTALL = install-redboot
|
REDBOOT_INSTALL = install-redboot
|
||||||
CFLAGS = -g
|
CFLAGS = -g
|
||||||
|
|
||||||
# Here is specific eval board stuff
|
# Here is all of the eval board stuff
|
||||||
|
PID_SCRIPTS = pid.specs
|
||||||
|
PID_INSTALL = install-pid
|
||||||
|
|
||||||
IQ80310_SCRIPTS = iq80310.specs
|
IQ80310_SCRIPTS = iq80310.specs
|
||||||
IQ80310_INSTALL = install-iq80310
|
IQ80310_INSTALL = install-iq80310
|
||||||
|
|
||||||
|
|
||||||
# Host specific makefile fragment comes in here.
|
# Host specific makefile fragment comes in here.
|
||||||
@host_makefile_frag@
|
@host_makefile_frag@
|
||||||
|
|
||||||
@ -82,13 +86,16 @@ distclean maintainer-clean realclean: clean
|
|||||||
rm -f Makefile config.status *~
|
rm -f Makefile config.status *~
|
||||||
|
|
||||||
.PHONY: install info install-info clean-info
|
.PHONY: install info install-info clean-info
|
||||||
install: ${REDBOOT_INSTALL} ${IQ80310_INSTALL}
|
install: ${REDBOOT_INSTALL} ${IQ80310_INSTALL} ${PID_INSTALL}
|
||||||
|
|
||||||
|
|
||||||
install-redboot:
|
install-redboot:
|
||||||
set -e; for x in ${REDBOOT_OBJS}; do ${INSTALL_DATA} $$x ${tooldir}/lib${MULTISUBDIR}/$$x; done
|
set -e; for x in ${REDBOOT_OBJS}; do ${INSTALL_DATA} $$x ${tooldir}/lib${MULTISUBDIR}/$$x; done
|
||||||
set -e; for x in ${REDBOOT_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x ${tooldir}/lib${MULTISUBDIR}/$$x; done
|
set -e; for x in ${REDBOOT_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x ${tooldir}/lib${MULTISUBDIR}/$$x; done
|
||||||
|
|
||||||
|
install-pid:
|
||||||
|
set -e; for x in ${PID_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x ${tooldir}/lib${MULTISUBDIR}/$$x; done
|
||||||
|
|
||||||
install-iq80310:
|
install-iq80310:
|
||||||
set -e; for x in ${IQ80310_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x ${tooldir}/lib${MULTISUBDIR}/$$x; done
|
set -e; for x in ${IQ80310_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x ${tooldir}/lib${MULTISUBDIR}/$$x; done
|
||||||
|
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
-T redboot.ld%s -Ttext 0xA0020000 %(old_link)
|
-T redboot.ld%s -Ttext 0xA0020000 %(old_link)
|
||||||
|
|
||||||
*startfile:
|
*startfile:
|
||||||
redboot-crt0%O%s redboot-syscalls%O%s
|
%{!pg:redboot-crt0%O%s} %{pg:redboot-crt0%O%s} redboot-syscalls%O%s
|
||||||
|
|
||||||
|
8
libgloss/arm/coff-pid.specs
Normal file
8
libgloss/arm/coff-pid.specs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
%rename link old_link
|
||||||
|
|
||||||
|
*link:
|
||||||
|
-T redboot.ld%s -Ttext 0x10000 %(old_link)
|
||||||
|
|
||||||
|
*startfile:
|
||||||
|
redboot-crt0%O%s redboot-syscalls%O%s
|
||||||
|
|
@ -9,7 +9,7 @@ SECTIONS
|
|||||||
present): */
|
present): */
|
||||||
.text 0x8000 : {
|
.text 0x8000 : {
|
||||||
*(.init)
|
*(.init)
|
||||||
*(.text)
|
*(.text*)
|
||||||
*(.glue_7t)
|
*(.glue_7t)
|
||||||
*(.glue_7)
|
*(.glue_7)
|
||||||
*(.rdata)
|
*(.rdata)
|
||||||
@ -23,7 +23,12 @@ SECTIONS
|
|||||||
}
|
}
|
||||||
.data 0x40000 + (. & 0xfffc0fff) : {
|
.data 0x40000 + (. & 0xfffc0fff) : {
|
||||||
__data_start__ = . ;
|
__data_start__ = . ;
|
||||||
*(.data)
|
*(.data*)
|
||||||
|
*(.gcc_exc*)
|
||||||
|
___EH_FRAME_BEGIN__ = . ;
|
||||||
|
*(.eh_fram*)
|
||||||
|
___EH_FRAME_END__ = . ;
|
||||||
|
LONG(0);
|
||||||
__data_end__ = . ;
|
__data_end__ = . ;
|
||||||
edata = .;
|
edata = .;
|
||||||
_edata = .;
|
_edata = .;
|
||||||
|
@ -4,5 +4,5 @@
|
|||||||
-T redboot.ld%s -Ttext 0xA0020000 %(old_link)
|
-T redboot.ld%s -Ttext 0xA0020000 %(old_link)
|
||||||
|
|
||||||
*startfile:
|
*startfile:
|
||||||
crti%O%s crtbegin%O%s redboot-crt0%O%s redboot-syscalls%O%s
|
crti%O%s crtbegin%O%s %{!pg:redboot-crt0%O%s} %{pg:redboot-crt0%O%s} redboot-syscalls%O%s
|
||||||
|
|
||||||
|
8
libgloss/arm/elf-pid.specs
Normal file
8
libgloss/arm/elf-pid.specs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
%rename link old_link
|
||||||
|
|
||||||
|
*link:
|
||||||
|
-T redboot.ld%s -Ttext 0x10000 %(old_link)
|
||||||
|
|
||||||
|
*startfile:
|
||||||
|
crti%O%s crtbegin%O%s %{!pg:redboot-crt0%O%s} %{pg:redboot-crt0%O%s} redboot-syscalls%O%s
|
||||||
|
|
@ -4,5 +4,5 @@
|
|||||||
-T redboot.ld%s -Ttext 0x20000 %(old_link)
|
-T redboot.ld%s -Ttext 0x20000 %(old_link)
|
||||||
|
|
||||||
*startfile:
|
*startfile:
|
||||||
crti%O%s crtbegin%O%s redboot-crt0%O%s redboot-syscalls%O%s
|
crti%O%s crtbegin%O%s %{!pg:redboot-crt0%O%s} %{pg:redboot-crt0%O%s} redboot-syscalls%O%s
|
||||||
|
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
.file "crt0.S"
|
.file "crt0.S"
|
||||||
|
|
||||||
@ -12,30 +11,44 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
.text
|
.text
|
||||||
/*
|
/* Setup the assembly entry point. */
|
||||||
* Setup the assembly entry point.
|
|
||||||
*/
|
|
||||||
.code 32
|
.code 32
|
||||||
.globl SYM_NAME(start)
|
.globl SYM_NAME(start)
|
||||||
.globl SYM_NAME(_start)
|
.globl SYM_NAME(_start)
|
||||||
SYM_NAME(start):
|
SYM_NAME(start):
|
||||||
SYM_NAME(_start):
|
SYM_NAME(_start):
|
||||||
mov fp, #0 /* Null frame pointer */
|
mov fp, #0 /* Null frame pointer. */
|
||||||
mov r7, #0 /* Null frame pointer for Thumb */
|
mov r7, #0 /* Null frame pointer for Thumb. */
|
||||||
|
|
||||||
/* enable interrupts for gdb debugging */
|
/* Enable interrupts for gdb debugging. */
|
||||||
mrs r0, cpsr
|
mrs r0, cpsr
|
||||||
bic r0, r0, #0xC0
|
bic r0, r0, #0xC0
|
||||||
msr cpsr, r0
|
msr cpsr, r0
|
||||||
|
|
||||||
mov a2, #0 /* Second arg: fill value */
|
mov a2, #0 /* Second arg: fill value. */
|
||||||
ldr a1, .LC1 /* First arg: start of memory block */
|
ldr a1, .LC1 /* First arg: start of memory block. */
|
||||||
ldr a3, .LC2
|
ldr a3, .LC2
|
||||||
sub a3, a3, a1 /* Third arg: length of block */
|
sub a3, a3, a1 /* Third arg: length of block. */
|
||||||
|
|
||||||
#ifdef __thumb__ /* Enter Thumb mode.... */
|
#ifdef GCRT0
|
||||||
add a4, pc, #1 /* Get the address of the Thumb block */
|
/* Zero out the bss without using memset.
|
||||||
bx a4 /* Go there and start Thumb decoding */
|
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
|
.code 16
|
||||||
.global __change_mode
|
.global __change_mode
|
||||||
@ -43,8 +56,9 @@ SYM_NAME(_start):
|
|||||||
__change_mode:
|
__change_mode:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef GCRT0
|
||||||
bl SYM_NAME(memset)
|
bl SYM_NAME(memset)
|
||||||
|
#endif
|
||||||
bl SYM_NAME(__get_memtop)
|
bl SYM_NAME(__get_memtop)
|
||||||
sub r0, r0, #32
|
sub r0, r0, #32
|
||||||
mov sp, r0
|
mov sp, r0
|
||||||
@ -76,7 +90,6 @@ __change_mode:
|
|||||||
.Lfini:
|
.Lfini:
|
||||||
.word SYM_NAME(_fini)
|
.word SYM_NAME(_fini)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
#ifdef __thumb__
|
#ifdef __thumb__
|
||||||
.code 16
|
.code 16
|
||||||
|
Loading…
x
Reference in New Issue
Block a user