Index: sys/arm/arm/bcopyinout_xscale.S =================================================================== --- sys/arm/arm/bcopyinout_xscale.S +++ sys/arm/arm/bcopyinout_xscale.S @@ -76,6 +76,7 @@ cmp r2, r3 blt .Lnormal stmfd sp!, {r0-r2, r4, lr} + _SAVE({r0-r2, r4, lr}) mov r3, r0 mov r0, r1 mov r1, r3 @@ -90,6 +91,7 @@ .Lnormal: stmfd sp!, {r10-r11, lr} + _SAVE({r10-r11, lr}) GET_PCB(r10) ldr r10, [r10] @@ -145,6 +147,7 @@ strne ip, [r1], #0x04 subne r2, r2, #0x04 stmfd sp!, {r4-r9} /* Free up some registers */ + _SAVE({r4-r9}) mov r3, #-1 /* Signal restore r4-r9 */ /* Destination buffer quad aligned, source is word aligned */ @@ -289,6 +292,7 @@ */ .Lcopyin_bad_align: stmfd sp!, {r4-r7} + _SAVE({r4-r7}) mov r3, #0x01 bic r0, r0, #0x03 cmp ip, #2 @@ -518,6 +522,7 @@ cmp r2, r3 blt .Lnormale stmfd sp!, {r0-r2, r4, lr} + _SAVE({r0-r2, r4, lr}) mov r3, r0 mov r0, r1 mov r1, r3 @@ -532,6 +537,7 @@ .Lnormale: stmfd sp!, {r10-r11, lr} + _SAVE({r10-r11, lr}) GET_PCB(r10) ldr r10, [r10] @@ -588,6 +594,7 @@ strtne ip, [r1], #0x04 stmfd sp!, {r4-r9} /* Free up some registers */ + _SAVE({r4-r9}) mov r3, #-1 /* Signal restore r4-r9 */ /* Destination buffer word aligned, source is quad aligned */ @@ -732,6 +739,7 @@ */ .Lcopyout_bad_align: stmfd sp!, {r4-r7} + _SAVE({r4-r7}) mov r3, #0x01 bic r0, r0, #0x03 cmp ip, #2