From 455e95b5bd49286496ddf1957ffabb0240c5ce47 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Mon, 6 Oct 2008 20:55:19 +0000 Subject: [PATCH] 2008-10-06 Bill Tompkins * arm/crt0.S: Fix calling hardware_init_hook() or software_init_hook() under thumb and thumb2. --- libgloss/ChangeLog | 5 +++++ libgloss/arm/crt0.S | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/libgloss/ChangeLog b/libgloss/ChangeLog index ba58046c1..7e8be0847 100644 --- a/libgloss/ChangeLog +++ b/libgloss/ChangeLog @@ -1,3 +1,8 @@ +2008-10-06 Bill Tompkins + + * arm/crt0.S: Fix calling hardware_init_hook() or software_init_hook() + under thumb and thumb2. + 2008-09-24 DJ Delorie * m32c/varvects.S: New. diff --git a/libgloss/arm/crt0.S b/libgloss/arm/crt0.S index bbde5892c..ea5163ae1 100644 --- a/libgloss/arm/crt0.S +++ b/libgloss/arm/crt0.S @@ -167,14 +167,23 @@ __change_mode: ldr r3, .Lhwinit cmp r3, #0 beq .LC24 +#if defined(__thumb__) || defined(__thumb2__) + blx r3 +#else mov lr, pc mov pc, r3 +#endif .LC24: ldr r3, .Lswinit cmp r3, #0 beq .LC25 +#if defined(__thumb__) || defined(__thumb2__) + blx r3 +#else mov lr, pc mov pc, r3 +#endif + .LC25: mov r0, #0 /* no arguments */ mov r1, #0 /* no argv either */