diff -ur a/libgloss/arm/crt0.S b/libgloss/arm/crt0.S --- a/libgloss/arm/crt0.S 2020-01-22 11:05:51.000000000 +0100 +++ b/libgloss/arm/crt0.S 2020-05-01 21:19:59.000000000 +0200 @@ -565,7 +565,7 @@ /* For Thumb, constants must be after the code since only positive offsets are supported for PC relative addresses. */ - .align 0 + .align 2 .LC0: #ifdef ARM_RDI_MONITOR .word HeapBase diff -ur a/newlib/libc/machine/arm/setjmp.S b/newlib/libc/machine/arm/setjmp.S --- a/newlib/libc/machine/arm/setjmp.S 2020-01-22 11:05:51.000000000 +0100 +++ b/newlib/libc/machine/arm/setjmp.S 2020-05-01 21:19:21.000000000 +0200 @@ -74,11 +74,11 @@ mov r5, sp mov r6, lr stmia r0!, {r1, r2, r3, r4, r5, r6} - sub r0, r0, #40 + subs r0, r0, #40 /* Restore callee-saved low regs. */ ldmia r0!, {r4, r5, r6, r7} /* Return zero. */ - mov r0, #0 + movs r0, #0 bx lr .thumb_func @@ -86,7 +86,7 @@ TYPE (longjmp) SYM (longjmp): /* Restore High regs. */ - add r0, r0, #16 + adds r0, r0, #16 ldmia r0!, {r2, r3, r4, r5, r6} mov r8, r2 mov r9, r3 @@ -95,12 +95,12 @@ mov sp, r6 ldmia r0!, {r3} /* lr */ /* Restore low regs. */ - sub r0, r0, #40 + subs r0, r0, #40 ldmia r0!, {r4, r5, r6, r7} /* Return the result argument, or 1 if it is zero. */ mov r0, r1 bne 1f - mov r0, #1 + movs r0, #1 1: bx r3