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 */