Re: [Arm] Align comments and spaces in crt0.S libgloss and sys/arm
"Richard Earnshaw (lists)" <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
On 12/04/2019 14:16, Alexander Fedotov wrote: > Patch is attached > Pushed. R. > On Fri, Apr 12, 2019 at 4:09 PM Alexander Fedotov <[email protected]> wrote: >> >> I'n using gmail web interface. >> I can try to attach the patch as attachment. >> >> On Fri, 12 Apr 2019 at 16:08, Richard Earnshaw (lists) <[email protected]> wrote: >>> >>> On 12/04/2019 10:04, Alexander Fedotov wrote: >>>> My apologizes. Correct patch below. >>>> OK to apply ? >>>> If yes, please push it for me since I have no commit rights. >>> >>> Unfortunately, the patch doesn't apply - it looks like it's had all the >>> white space mangled by your mail client. Additionally a long line has >>> been wrapped which makes the patch corrupt as well. >>> >>> Which mail client are you using to post this? >>> >>> You might want to read the section MUA-SPECIFIC HINTS from the "git >>> format-patch" man page. >>> >>> R. >>> >>>> >>>> >>>> From 6af021f34b1e6d01445db1e08f877737ac523a53 Mon Sep 17 00:00:00 2001 >>>> From: Alexander Fedotov <[email protected]> >>>> Date: Thu, 11 Apr 2019 15:28:05 +0300 >>>> Subject: [PATCH 1/2] Align comments and spaces in libgloss/arm/crt0.S and >>>> newlib/libc/sys/arm/crt0.S to ease further code alignment. >>>> >>>> --- >>>> libgloss/arm/crt0.S | 135 +++++++++++++++++++------------------ >>>> newlib/libc/sys/arm/crt0.S | 18 ++--- >>>> 2 files changed, 78 insertions(+), 75 deletions(-) >>>> >>>> diff --git a/libgloss/arm/crt0.S b/libgloss/arm/crt0.S >>>> index c708f63d8..1deb73aa5 100644 >>>> --- a/libgloss/arm/crt0.S >>>> +++ b/libgloss/arm/crt0.S >>>> @@ -68,8 +68,10 @@ >>>> #endif >>>> .endm >>>> >>>> +/******************************************************************************* >>>> +* Main library startup code. >>>> +*******************************************************************************/ >>>> .align 0 >>>> - >>>> FUNC_START _mainCRTStartup >>>> FUNC_START _start >>>> #if defined(__ELF__) && !defined(__USING_SJLJ_EXCEPTIONS__) >>>> @@ -90,14 +92,14 @@ >>>> #endif >>>> #endif >>>> >>>> -/* Start by setting up a stack */ >>>> +/* Start by setting up a stack. */ >>>> #ifdef ARM_RDP_MONITOR >>>> - /* Issue Demon SWI to read stack info */ >>>> - swi SWI_GetEnv /* Returns command line in r0 */ >>>> - mov sp,r1 /* and the highest memory address in r1 */ >>>> + /* Issue Demon SWI to read stack info. */ >>>> + swi SWI_GetEnv /* Returns command line in r0. */ >>>> + mov sp,r1 /* and the highest memory address in r1. */ >>>> >>>> - /* stack limit is at end of data */ >>>> - /* allow slop for stack overflow handling and small frames */ >>>> + /* Stack limit is at end of data. */ >>>> + /* Allow slop for stack overflow handling and small frames. */ >>>> #ifdef THUMB1_ONLY >>>> ldr r0, .LC2 >>>> adds r0, #128 >>>> @@ -109,19 +111,19 @@ >>>> #endif >>>> #else >>>> #ifdef ARM_RDI_MONITOR >>>> - /* Issue Angel SWI to read stack info */ >>>> + /* Issue Angel SWI to read stack info. */ >>>> movs r0, #AngelSWI_Reason_HeapInfo >>>> - adr r1, .LC0 /* point at ptr to 4 words to receive data */ >>>> + adr r1, .LC0 /* Point at ptr to 4 words to receive data. */ >>>> #ifdef THUMB_VXM >>>> bkpt AngelSWI >>>> #elif defined(__thumb2__) >>>> - /* We are in thumb mode for startup on armv7 architectures. */ >>>> + /* We are in thumb mode for startup on armv7 architectures. */ >>>> AngelSWIAsm (AngelSWI) >>>> #else >>>> - /* We are always in ARM mode for startup on pre armv7 archs. */ >>>> + /* We are always in ARM mode for startup on pre armv7 archs. */ >>>> AngelSWIAsm (AngelSWI_ARM) >>>> #endif >>>> - ldr r0, .LC0 /* point at values read */ >>>> + ldr r0, .LC0 /* Point at values read. */ >>>> >>>> /* Set __heap_limit. */ >>>> ldr r1, [r0, #4] >>>> @@ -148,14 +150,15 @@ >>>> to skip setting sp/sl to 0 here. >>>> - Considering M-profile processors, We might want to initialize >>>> sp by the first entry of vector table and return 0 to SYS_HEAPINFO >>>> - semihosting call, which will be skipped here. */ >>>> + semihosting call, which will be skipped here. */ >>>> cmp r1, #0 >>>> beq .LC26 >>>> mov sp, r1 >>>> .LC26: >>>> cmp r2, #0 >>>> beq .LC27 >>>> - /* allow slop for stack overflow handling and small frames */ >>>> + >>>> + /* Allow slop for stack overflow handling and small frames. */ >>>> #ifdef THUMB1_ONLY >>>> adds r2, #128 >>>> adds r2, #128 >>>> @@ -163,9 +166,10 @@ >>>> #else >>>> add sl, r2, #256 >>>> #endif >>>> + >>>> .LC27: >>>> #else >>>> - /* Set up the stack pointer to a fixed value */ >>>> + /* Set up the stack pointer to a fixed value. */ >>>> /* Changes by toralf: >>>> - Allow linker script to provide stack via __stack symbol - see >>>> defintion of .Lstack >>>> @@ -175,7 +179,7 @@ >>>> Loosely based on init.s from ARM/Motorola example code. >>>> Note: Mode switch via CPSR is not allowed once in non-privileged >>>> mode, so we take care not to enter "User" to set up its sp, >>>> - and also skip most operations if already in that mode. */ >>>> + and also skip most operations if already in that mode. */ >>>> >>>> ldr r3, .Lstack >>>> cmp r3, #0 >>>> @@ -192,42 +196,42 @@ >>>> /* Note: This 'mov' is essential when starting in User, and ensures we >>>> always get *some* sp value for the initial mode, even if we >>>> have somehow missed it below (in which case it gets the same >>>> - value as FIQ - not ideal, but better than nothing.) */ >>>> + value as FIQ - not ideal, but better than nothing). */ >>>> mov sp, r3 >>>> #ifdef PREFER_THUMB >>>> /* XXX Fill in stack assignments for interrupt modes. */ >>>> #else >>>> mrs r2, CPSR >>>> - tst r2, #0x0F /* Test mode bits - in User of all are 0 */ >>>> - beq .LC23 /* "eq" means r2 AND #0x0F is 0 */ >>>> - msr CPSR_c, #0xD1 /* FIRQ mode, interrupts disabled */ >>>> + tst r2, #0x0F /* Test mode bits - in User of all are 0. */ >>>> + beq .LC23 /* "eq" means r2 AND #0x0F is 0. */ >>>> + msr CPSR_c, #0xD1 /* FIRQ mode, interrupts disabled. */ >>>> mov sp, r3 >>>> - sub sl, sp, #0x1000 /* This mode also has its own sl (see below) */ >>>> + sub sl, sp, #0x1000 /* This mode also has its own sl (see below). */ >>>> >>>> mov r3, sl >>>> - msr CPSR_c, #0xD7 /* Abort mode, interrupts disabled */ >>>> + msr CPSR_c, #0xD7 /* Abort mode, interrupts disabled. */ >>>> mov sp, r3 >>>> sub r3, r3, #0x1000 >>>> >>>> - msr CPSR_c, #0xDB /* Undefined mode, interrupts disabled */ >>>> + msr CPSR_c, #0xDB /* Undefined mode, interrupts disabled. */ >>>> mov sp, r3 >>>> sub r3, r3, #0x1000 >>>> >>>> - msr CPSR_c, #0xD2 /* IRQ mode, interrupts disabled */ >>>> + msr CPSR_c, #0xD2 /* IRQ mode, interrupts disabled. */ >>>> mov sp, r3 >>>> sub r3, r3, #0x2000 >>>> >>>> - msr CPSR_c, #0xD3 /* Supervisory mode, interrupts disabled */ >>>> + msr CPSR_c, #0xD3 /* Supervisory mode, interrupts disabled. */ >>>> >>>> mov sp, r3 >>>> - sub r3, r3, #0x8000 /* Min size 32k */ >>>> - bic r3, r3, #0x00FF /* Align with current 64k block */ >>>> + sub r3, r3, #0x8000 /* Min size 32k. */ >>>> + bic r3, r3, #0x00FF /* Align with current 64k block. */ >>>> bic r3, r3, #0xFF00 >>>> >>>> str r3, [r3, #-4] /* Move value into user mode sp without */ >>>> - ldmdb r3, {sp}^ /* changing modes, via '^' form of ldm */ >>>> + ldmdb r3, {sp}^ /* changing modes, via '^' form of ldm. */ >>>> orr r2, r2, #0xC0 /* Back to original mode, presumably SVC, */ >>>> - msr CPSR_c, r2 /* with FIQ/IRQ disable bits forced to 1 */ >>>> + msr CPSR_c, r2 /* with FIQ/IRQ disable bits forced to 1. */ >>>> #endif >>>> .LC23: >>>> /* Setup a default stack-limit in-case the code has been >>>> @@ -243,24 +247,24 @@ >>>> subs r2, r3, r2 >>>> mov sl, r2 >>>> #else >>>> - sub sl, r3, #64 << 10 /* Still assumes 256bytes below sl */ >>>> + sub sl, r3, #64 << 10 /* Still assumes 256bytes below sl. */ >>>> #endif >>>> #endif >>>> #endif >>>> /* Zero the memory in the .bss section. */ >>>> - movs a2, #0 /* Second arg: fill value */ >>>> - mov fp, a2 /* Null frame pointer */ >>>> - mov r7, a2 /* Null frame pointer for Thumb */ >>>> + movs a2, #0 /* Second arg: fill value. */ >>>> + mov fp, a2 /* Null frame pointer. */ >>>> + mov r7, a2 /* Null frame pointer for Thumb. */ >>>> >>>> - ldr a1, .LC1 /* First arg: start of memory block */ >>>> + ldr a1, .LC1 /* First arg: start of memory block. */ >>>> ldr a3, .LC2 >>>> - subs a3, a3, a1 /* Third arg: length of block */ >>>> + subs a3, a3, a1 /* Third arg: length of block. */ >>>> >>>> >>>> #if __thumb__ && !defined(PREFER_THUMB) >>>> - /* Enter Thumb mode.... */ >>>> - add a4, pc, #1 /* Get the address of the Thumb block */ >>>> - bx a4 /* Go there and start Thumb decoding */ >>>> + /* Enter Thumb mode... */ >>>> + add a4, pc, #1 /* Get the address of the Thumb block. */ >>>> + bx a4 /* Go there and start Thumb decoding. */ >>>> >>>> .code 16 >>>> .global __change_mode >>>> @@ -271,9 +275,8 @@ __change_mode: >>>> bl FUNCTION (memset) >>>> #if !defined (ARM_RDP_MONITOR) && !defined (ARM_RDI_MONITOR) >>>> /* Changes by toralf: Taken from libgloss/m68k/crt0.S >>>> - * initialize target specific stuff. Only execute these >>>> - * functions it they exist. >>>> - */ >>>> + initialize target specific stuff. Only execute these >>>> + functions it they exist. */ >>>> ldr r3, .Lhwinit >>>> cmp r3, #0 >>>> beq .LC24 >>>> @@ -285,24 +288,24 @@ __change_mode: >>>> indirect_call r3 >>>> >>>> .LC25: >>>> - movs r0, #0 /* no arguments */ >>>> - movs r1, #0 /* no argv either */ >>>> + movs r0, #0 /* No arguments. */ >>>> + movs r1, #0 /* No argv either. */ >>>> #else >>>> - /* Need to set up standard file handles */ >>>> + /* Need to set up standard file handles. */ >>>> bl FUNCTION (initialise_monitor_handles) >>>> >>>> #ifdef ARM_RDP_MONITOR >>>> - swi SWI_GetEnv /* sets r0 to point to the command line */ >>>> + swi SWI_GetEnv /* Sets r0 to point to the command line. */ >>>> movs r1, r0 >>>> #else >>>> movs r0, #AngelSWI_Reason_GetCmdLine >>>> - ldr r1, .LC30 /* Space for command line */ >>>> + ldr r1, .LC30 /* Space for command line. */ >>>> AngelSWIAsm (AngelSWI) >>>> ldr r1, .LC30 >>>> ldr r1, [r1] >>>> #endif >>>> - /* Parse string at r1 */ >>>> - movs r0, #0 /* count of arguments so far */ >>>> + /* Parse string at r1. */ >>>> + movs r0, #0 /* Count of arguments so far. */ >>>> /* Push a NULL argument onto the end of the list. */ >>>> #ifdef __thumb__ >>>> push {r0} >>>> @@ -310,7 +313,7 @@ __change_mode: >>>> stmfd sp!, {r0} >>>> #endif >>>> .LC10: >>>> -/* Skip leading blanks */ >>>> +/* Skip leading blanks. */ >>>> #ifdef __thumb__ >>>> ldrb r3, [r1] >>>> adds r1, #1 >>>> @@ -322,7 +325,7 @@ __change_mode: >>>> cmp r3, #' ' >>>> beq .LC10 >>>> >>>> -/* See whether we are scanning a string */ >>>> +/* See whether we are scanning a string. */ >>>> cmp r3, #'"' >>>> #ifdef __thumb__ >>>> beq .LC20 >>>> @@ -333,17 +336,17 @@ __change_mode: >>>> b .LC22 >>>> >>>> .LC21: >>>> - movs r2, #' ' /* terminator type */ >>>> - subs r1, r1, #1 /* adjust back to point at start char */ >>>> + movs r2, #' ' /* Terminator type. */ >>>> + subs r1, r1, #1 /* Adjust back to point at start char. */ >>>> .LC22: >>>> #else >>>> cmpne r3, #'\'' >>>> moveq r2, r3 >>>> - movne r2, #' ' /* terminator type */ >>>> - subne r1, r1, #1 /* adjust back to point at start char */ >>>> + movne r2, #' ' /* Terminator type. */ >>>> + subne r1, r1, #1 /* Adjust back to point at start char. */ >>>> #endif >>>> >>>> -/* Stack a pointer to the current argument */ >>>> +/* Stack a pointer to the current argument. */ >>>> #ifdef __thumb__ >>>> push {r1} >>>> #else >>>> @@ -359,16 +362,16 @@ __change_mode: >>>> #endif >>>> cmp r3, #0 >>>> beq .LC12 >>>> - cmp r2, r3 /* reached terminator? */ >>>> + cmp r2, r3 /* Reached terminator ? */ >>>> bne .LC11 >>>> movs r2, #0 >>>> subs r3, r1, #1 >>>> - strb r2, [r3] /* terminate the arg string */ >>>> + strb r2, [r3] /* Terminate the arg string. */ >>>> b .LC10 >>>> >>>> .LC12: >>>> - mov r1, sp /* point at stacked arg pointers */ >>>> - /* We've now got the stacked args in order reverse the */ >>>> + mov r1, sp /* Point at stacked arg pointers. */ >>>> + /* We've now got the stacked args in order, reverse them. */ >>>> #ifdef __thumb__ >>>> movs r2, r0 >>>> lsls r2, #2 >>>> @@ -390,10 +393,10 @@ __change_mode: >>>> bics r4, r5 >>>> mov sp, r4 >>>> #else >>>> - add r2, sp, r0, LSL #2 /* End of args */ >>>> - mov r3, sp /* Start of args */ >>>> + add r2, sp, r0, LSL #2 /* End of args. */ >>>> + mov r3, sp /* Start of args. */ >>>> .LC13: cmp r2, r3 >>>> - ldrhi r4,[r2, #-4] /* Reverse ends of list */ >>>> + ldrhi r4,[r2, #-4] /* Reverse ends of list. */ >>>> ldrhi r5, [r3] >>>> strhi r5, [r2, #-4]! >>>> strhi r4, [r3], #4 >>>> @@ -431,7 +434,6 @@ __change_mode: >>>> >>>> #if __thumb__ && !defined(PREFER_THUMB) >>>> /* Come out of Thumb mode. This code should be redundant. */ >>>> - >>>> mov a4, pc >>>> bx a4 >>>> >>>> @@ -447,7 +449,6 @@ change_back: >>>> >>>> /* For Thumb, constants must be after the code since only >>>> positive offsets are supported for PC relative addresses. */ >>>> - >>>> .align 0 >>>> .LC0: >>>> #ifdef ARM_RDI_MONITOR >>>> @@ -457,13 +458,13 @@ change_back: >>>> /* Changes by toralf: Provide alternative "stack" variable whose value >>>> may be defined externally; .Lstack will be used instead of .LC0 if >>>> it points to a non-0 value. Also set up references to "hooks" that >>>> - may be used by the application to provide additional init code. */ >>>> - >>>> + may be used by the application to provide additional init code. */ >>>> #ifdef __pe__ >>>> .word 0x800000 >>>> #else >>>> .word 0x80000 /* Top of RAM on the PIE board. */ >>>> #endif >>>> + >>>> .Lstack: >>>> .word __stack >>>> .Lhwinit: >>>> @@ -476,7 +477,7 @@ change_back: >>>> runtime (meaning "ignore setting") for the variables, when the user >>>> does not provide the symbols. (The linker uses a weak symbol if, >>>> and only if, a normal version of the same symbol isn't provided >>>> - e.g. by a linker script or another object file.) */ >>>> + e.g. by a linker script or another object file.) */ >>>> >>>> .weak __stack >>>> .weak FUNCTION (hardware_init_hook) >>>> diff --git a/newlib/libc/sys/arm/crt0.S b/newlib/libc/sys/arm/crt0.S >>>> index 8c9f7be38..7a6b40d9a 100644 >>>> --- a/newlib/libc/sys/arm/crt0.S >>>> +++ b/newlib/libc/sys/arm/crt0.S >>>> @@ -50,13 +50,13 @@ >>>> .global \name >>>> .thumb_func >>>> \name: >>>> -.endm >>>> +.endm >>>> #else >>>> .code 32 >>>> .macro FUNC_START name >>>> - .global \name >>>> + .global \name >>>> \name: >>>> -.endm >>>> +.endm >>>> #endif >>>> >>>> .macro indirect_call reg >>>> @@ -68,8 +68,10 @@ >>>> #endif >>>> .endm >>>> >>>> +/******************************************************************************* >>>> +* Main library startup code. >>>> +*******************************************************************************/ >>>> .align 0 >>>> - >>>> FUNC_START _mainCRTStartup >>>> FUNC_START _start >>>> #if defined(__ELF__) && !defined(__USING_SJLJ_EXCEPTIONS__) >>>> @@ -399,7 +401,7 @@ __change_mode: >>>> bl FUNCTION (_init) >>>> movs r0, r4 >>>> movs r1, r5 >>>> -#endif >>>> +#endif >>>> bl FUNCTION (main) >>>> >>>> bl FUNCTION (exit) /* Should not return. */ >>>> @@ -420,7 +422,7 @@ change_back: >>>> #endif >>>> >>>> /* For Thumb, constants must be after the code since only >>>> - positive offsets are supported for PC relative addresses. */ >>>> + positive offsets are supported for PC relative addresses. */ >>>> .align 0 >>>> .LC0: >>>> #ifdef ARM_RDI_MONITOR >>>> @@ -430,7 +432,7 @@ change_back: >>>> /* Changes by toralf: Provide alternative "stack" variable whose value >>>> may be defined externally; .Lstack will be used instead of .LC0 if >>>> it points to a non-0 value. Also set up references to "hooks" that >>>> - may be used by the application to provide additional init >>>> code. */ >>>> + may be used by the application to provide additional init code. */ >>>> #ifdef __pe__ >>>> .word 0x800000 >>>> #else >>>> @@ -449,7 +451,7 @@ change_back: >>>> runtime (meaning "ignore setting") for the variables, when the user >>>> does not provide the symbols. (The linker uses a weak symbol if, >>>> and only if, a normal version of the same symbol isn't provided >>>> - e.g. by a linker script or another object file). */ >>>> + e.g. by a linker script or another object file.) */ >>>> >>>> .weak __stack >>>> .weak FUNCTION (hardware_init_hook) >>>> >>> >>> >>> 0001-Align-comments-and-spaces-in-libgloss-arm-crt0.S-and.patch >>> >>> From 6af021f34b1e6d01445db1e08f877737ac523a53 Mon Sep 17 00:00:00 2001 >>> From: Alexander Fedotov <[email protected]> >>> Date: Thu, 11 Apr 2019 15:28:05 +0300 >>> Subject: [PATCH] Align comments and spaces in libgloss/arm/crt0.S and >>> newlib/libc/sys/arm/crt0.S to ease further code alignment. >>> >>> --- >>> libgloss/arm/crt0.S | 135 +++++++++++++++++++------------------ >>> newlib/libc/sys/arm/crt0.S | 18 ++--- >>> 2 files changed, 78 insertions(+), 75 deletions(-) >>> >>> diff --git a/libgloss/arm/crt0.S b/libgloss/arm/crt0.S >>> index c708f63d8..1deb73aa5 100644 >>> --- a/libgloss/arm/crt0.S >>> +++ b/libgloss/arm/crt0.S >>> @@ -68,8 +68,10 @@ >>> #endif >>> .endm >>> >>> +/******************************************************************************* >>> +* Main library startup code. >>> +*******************************************************************************/ >>> .align 0 >>> - >>> FUNC_START _mainCRTStartup >>> FUNC_START _start >>> #if defined(__ELF__) && !defined(__USING_SJLJ_EXCEPTIONS__) >>> @@ -90,14 +92,14 @@ >>> #endif >>> #endif >>> >>> -/* Start by setting up a stack */ >>> +/* Start by setting up a stack. */ >>> #ifdef ARM_RDP_MONITOR >>> - /* Issue Demon SWI to read stack info */ >>> - swi SWI_GetEnv /* Returns command line in r0 */ >>> - mov sp,r1 /* and the highest memory address in r1 */ >>> + /* Issue Demon SWI to read stack info. */ >>> + swi SWI_GetEnv /* Returns command line in r0. */ >>> + mov sp,r1 /* and the highest memory address in r1. */ >>> >>> - /* stack limit is at end of data */ >>> - /* allow slop for stack overflow handling and small frames */ >>> + /* Stack limit is at end of data. */ >>> + /* Allow slop for stack overflow handling and small frames. */ >>> #ifdef THUMB1_ONLY >>> ldr r0, .LC2 >>> adds r0, #128 >>> @@ -109,19 +111,19 @@ >>> #endif >>> #else >>> #ifdef ARM_RDI_MONITOR >>> - /* Issue Angel SWI to read stack info */ >>> + /* Issue Angel SWI to read stack info. */ >>> movs r0, #AngelSWI_Reason_HeapInfo >>> - adr r1, .LC0 /* point at ptr to 4 words to receive data */ >>> + adr r1, .LC0 /* Point at ptr to 4 words to receive data. */ >>> #ifdef THUMB_VXM >>> bkpt AngelSWI >>> #elif defined(__thumb2__) >>> - /* We are in thumb mode for startup on armv7 architectures. */ >>> + /* We are in thumb mode for startup on armv7 architectures. */ >>> AngelSWIAsm (AngelSWI) >>> #else >>> - /* We are always in ARM mode for startup on pre armv7 archs. */ >>> + /* We are always in ARM mode for startup on pre armv7 archs. */ >>> AngelSWIAsm (AngelSWI_ARM) >>> #endif >>> - ldr r0, .LC0 /* point at values read */ >>> + ldr r0, .LC0 /* Point at values read. */ >>> >>> /* Set __heap_limit. */ >>> ldr r1, [r0, #4] >>> @@ -148,14 +150,15 @@ >>> to skip setting sp/sl to 0 here. >>> - Considering M-profile processors, We might want to initialize >>> sp by the first entry of vector table and return 0 to SYS_HEAPINFO >>> - semihosting call, which will be skipped here. */ >>> + semihosting call, which will be skipped here. */ >>> cmp r1, #0 >>> beq .LC26 >>> mov sp, r1 >>> .LC26: >>> cmp r2, #0 >>> beq .LC27 >>> - /* allow slop for stack overflow handling and small frames */ >>> + >>> + /* Allow slop for stack overflow handling and small frames. */ >>> #ifdef THUMB1_ONLY >>> adds r2, #128 >>> adds r2, #128 >>> @@ -163,9 +166,10 @@ >>> #else >>> add sl, r2, #256 >>> #endif >>> + >>> .LC27: >>> #else >>> - /* Set up the stack pointer to a fixed value */ >>> + /* Set up the stack pointer to a fixed value. */ >>> /* Changes by toralf: >>> - Allow linker script to provide stack via __stack symbol - see >>> defintion of .Lstack >>> @@ -175,7 +179,7 @@ >>> Loosely based on init.s from ARM/Motorola example code. >>> Note: Mode switch via CPSR is not allowed once in non-privileged >>> mode, so we take care not to enter "User" to set up its sp, >>> - and also skip most operations if already in that mode. */ >>> + and also skip most operations if already in that mode. */ >>> >>> ldr r3, .Lstack >>> cmp r3, #0 >>> @@ -192,42 +196,42 @@ >>> /* Note: This 'mov' is essential when starting in User, and ensures we >>> always get *some* sp value for the initial mode, even if we >>> have somehow missed it below (in which case it gets the same >>> - value as FIQ - not ideal, but better than nothing.) */ >>> + value as FIQ - not ideal, but better than nothing). */ >>> mov sp, r3 >>> #ifdef PREFER_THUMB >>> /* XXX Fill in stack assignments for interrupt modes. */ >>> #else >>> mrs r2, CPSR >>> - tst r2, #0x0F /* Test mode bits - in User of all are 0 */ >>> - beq .LC23 /* "eq" means r2 AND #0x0F is 0 */ >>> - msr CPSR_c, #0xD1 /* FIRQ mode, interrupts disabled */ >>> + tst r2, #0x0F /* Test mode bits - in User of all are 0. */ >>> + beq .LC23 /* "eq" means r2 AND #0x0F is 0. */ >>> + msr CPSR_c, #0xD1 /* FIRQ mode, interrupts disabled. */ >>> mov sp, r3 >>> - sub sl, sp, #0x1000 /* This mode also has its own sl (see below) */ >>> + sub sl, sp, #0x1000 /* This mode also has its own sl (see below). */ >>> >>> mov r3, sl >>> - msr CPSR_c, #0xD7 /* Abort mode, interrupts disabled */ >>> + msr CPSR_c, #0xD7 /* Abort mode, interrupts disabled. */ >>> mov sp, r3 >>> sub r3, r3, #0x1000 >>> >>> - msr CPSR_c, #0xDB /* Undefined mode, interrupts disabled */ >>> + msr CPSR_c, #0xDB /* Undefined mode, interrupts disabled. */ >>> mov sp, r3 >>> sub r3, r3, #0x1000 >>> >>> - msr CPSR_c, #0xD2 /* IRQ mode, interrupts disabled */ >>> + msr CPSR_c, #0xD2 /* IRQ mode, interrupts disabled. */ >>> mov sp, r3 >>> sub r3, r3, #0x2000 >>> >>> - msr CPSR_c, #0xD3 /* Supervisory mode, interrupts disabled */ >>> + msr CPSR_c, #0xD3 /* Supervisory mode, interrupts disabled. */ >>> >>> mov sp, r3 >>> - sub r3, r3, #0x8000 /* Min size 32k */ >>> - bic r3, r3, #0x00FF /* Align with current 64k block */ >>> + sub r3, r3, #0x8000 /* Min size 32k. */ >>> + bic r3, r3, #0x00FF /* Align with current 64k block. */ >>> bic r3, r3, #0xFF00 >>> >>> str r3, [r3, #-4] /* Move value into user mode sp without */ >>> - ldmdb r3, {sp}^ /* changing modes, via '^' form of ldm */ >>> + ldmdb r3, {sp}^ /* changing modes, via '^' form of ldm. */ >>> orr r2, r2, #0xC0 /* Back to original mode, presumably SVC, */ >>> - msr CPSR_c, r2 /* with FIQ/IRQ disable bits forced to 1 */ >>> + msr CPSR_c, r2 /* with FIQ/IRQ disable bits forced to 1. */ >>> #endif >>> .LC23: >>> /* Setup a default stack-limit in-case the code has been >>> @@ -243,24 +247,24 @@ >>> subs r2, r3, r2 >>> mov sl, r2 >>> #else >>> - sub sl, r3, #64 << 10 /* Still assumes 256bytes below sl */ >>> + sub sl, r3, #64 << 10 /* Still assumes 256bytes below sl. */ >>> #endif >>> #endif >>> #endif >>> /* Zero the memory in the .bss section. */ >>> - movs a2, #0 /* Second arg: fill value */ >>> - mov fp, a2 /* Null frame pointer */ >>> - mov r7, a2 /* Null frame pointer for Thumb */ >>> + movs a2, #0 /* Second arg: fill value. */ >>> + mov fp, a2 /* Null frame pointer. */ >>> + mov r7, a2 /* Null frame pointer for Thumb. */ >>> >>> - ldr a1, .LC1 /* First arg: start of memory block */ >>> + ldr a1, .LC1 /* First arg: start of memory block. */ >>> ldr a3, .LC2 >>> - subs a3, a3, a1 /* Third arg: length of block */ >>> + subs a3, a3, a1 /* Third arg: length of block. */ >>> >>> >>> #if __thumb__ && !defined(PREFER_THUMB) >>> - /* Enter Thumb mode.... */ >>> - add a4, pc, #1 /* Get the address of the Thumb block */ >>> - bx a4 /* Go there and start Thumb decoding */ >>> + /* Enter Thumb mode... */ >>> + add a4, pc, #1 /* Get the address of the Thumb block. */ >>> + bx a4 /* Go there and start Thumb decoding. */ >>> >>> .code 16 >>> .global __change_mode >>> @@ -271,9 +275,8 @@ __change_mode: >>> bl FUNCTION (memset) >>> #if !defined (ARM_RDP_MONITOR) && !defined (ARM_RDI_MONITOR) >>> /* Changes by toralf: Taken from libgloss/m68k/crt0.S >>> - * initialize target specific stuff. Only execute these >>> - * functions it they exist. >>> - */ >>> + initialize target specific stuff. Only execute these >>> + functions it they exist. */ >>> ldr r3, .Lhwinit >>> cmp r3, #0 >>> beq .LC24 >>> @@ -285,24 +288,24 @@ __change_mode: >>> indirect_call r3 >>> >>> .LC25: >>> - movs r0, #0 /* no arguments */ >>> - movs r1, #0 /* no argv either */ >>> + movs r0, #0 /* No arguments. */ >>> + movs r1, #0 /* No argv either. */ >>> #else >>> - /* Need to set up standard file handles */ >>> + /* Need to set up standard file handles. */ >>> bl FUNCTION (initialise_monitor_handles) >>> >>> #ifdef ARM_RDP_MONITOR >>> - swi SWI_GetEnv /* sets r0 to point to the command line */ >>> + swi SWI_GetEnv /* Sets r0 to point to the command line. */ >>> movs r1, r0 >>> #else >>> movs r0, #AngelSWI_Reason_GetCmdLine >>> - ldr r1, .LC30 /* Space for command line */ >>> + ldr r1, .LC30 /* Space for command line. */ >>> AngelSWIAsm (AngelSWI) >>> ldr r1, .LC30 >>> ldr r1, [r1] >>> #endif >>> - /* Parse string at r1 */ >>> - movs r0, #0 /* count of arguments so far */ >>> + /* Parse string at r1. */ >>> + movs r0, #0 /* Count of arguments so far. */ >>> /* Push a NULL argument onto the end of the list. */ >>> #ifdef __thumb__ >>> push {r0} >>> @@ -310,7 +313,7 @@ __change_mode: >>> stmfd sp!, {r0} >>> #endif >>> .LC10: >>> -/* Skip leading blanks */ >>> +/* Skip leading blanks. */ >>> #ifdef __thumb__ >>> ldrb r3, [r1] >>> adds r1, #1 >>> @@ -322,7 +325,7 @@ __change_mode: >>> cmp r3, #' ' >>> beq .LC10 >>> >>> -/* See whether we are scanning a string */ >>> +/* See whether we are scanning a string. */ >>> cmp r3, #'"' >>> #ifdef __thumb__ >>> beq .LC20 >>> @@ -333,17 +336,17 @@ __change_mode: >>> b .LC22 >>> >>> .LC21: >>> - movs r2, #' ' /* terminator type */ >>> - subs r1, r1, #1 /* adjust back to point at start char */ >>> + movs r2, #' ' /* Terminator type. */ >>> + subs r1, r1, #1 /* Adjust back to point at start char. */ >>> .LC22: >>> #else >>> cmpne r3, #'\'' >>> moveq r2, r3 >>> - movne r2, #' ' /* terminator type */ >>> - subne r1, r1, #1 /* adjust back to point at start char */ >>> + movne r2, #' ' /* Terminator type. */ >>> + subne r1, r1, #1 /* Adjust back to point at start char. */ >>> #endif >>> >>> -/* Stack a pointer to the current argument */ >>> +/* Stack a pointer to the current argument. */ >>> #ifdef __thumb__ >>> push {r1} >>> #else >>> @@ -359,16 +362,16 @@ __change_mode: >>> #endif >>> cmp r3, #0 >>> beq .LC12 >>> - cmp r2, r3 /* reached terminator? */ >>> + cmp r2, r3 /* Reached terminator ? */ >>> bne .LC11 >>> movs r2, #0 >>> subs r3, r1, #1 >>> - strb r2, [r3] /* terminate the arg string */ >>> + strb r2, [r3] /* Terminate the arg string. */ >>> b .LC10 >>> >>> .LC12: >>> - mov r1, sp /* point at stacked arg pointers */ >>> - /* We've now got the stacked args in order reverse the */ >>> + mov r1, sp /* Point at stacked arg pointers. */ >>> + /* We've now got the stacked args in order, reverse them. */ >>> #ifdef __thumb__ >>> movs r2, r0 >>> lsls r2, #2 >>> @@ -390,10 +393,10 @@ __change_mode: >>> bics r4, r5 >>> mov sp, r4 >>> #else >>> - add r2, sp, r0, LSL #2 /* End of args */ >>> - mov r3, sp /* Start of args */ >>> + add r2, sp, r0, LSL #2 /* End of args. */ >>> + mov r3, sp /* Start of args. */ >>> .LC13: cmp r2, r3 >>> - ldrhi r4,[r2, #-4] /* Reverse ends of list */ >>> + ldrhi r4,[r2, #-4] /* Reverse ends of list. */ >>> ldrhi r5, [r3] >>> strhi r5, [r2, #-4]! >>> strhi r4, [r3], #4 >>> @@ -431,7 +434,6 @@ __change_mode: >>> >>> #if __thumb__ && !defined(PREFER_THUMB) >>> /* Come out of Thumb mode. This code should be redundant. */ >>> - >>> mov a4, pc >>> bx a4 >>> >>> @@ -447,7 +449,6 @@ change_back: >>> >>> /* For Thumb, constants must be after the code since only >>> positive offsets are supported for PC relative addresses. */ >>> - >>> .align 0 >>> .LC0: >>> #ifdef ARM_RDI_MONITOR >>> @@ -457,13 +458,13 @@ change_back: >>> /* Changes by toralf: Provide alternative "stack" variable whose value >>> may be defined externally; .Lstack will be used instead of .LC0 if >>> it points to a non-0 value. Also set up references to "hooks" that >>> - may be used by the application to provide additional init code. */ >>> - >>> + may be used by the application to provide additional init code. */ >>> #ifdef __pe__ >>> .word 0x800000 >>> #else >>> .word 0x80000 /* Top of RAM on the PIE board. */ >>> #endif >>> + >>> .Lstack: >>> .word __stack >>> .Lhwinit: >>> @@ -476,7 +477,7 @@ change_back: >>> runtime (meaning "ignore setting") for the variables, when the user >>> does not provide the symbols. (The linker uses a weak symbol if, >>> and only if, a normal version of the same symbol isn't provided >>> - e.g. by a linker script or another object file.) */ >>> + e.g. by a linker script or another object file.) */ >>> >>> .weak __stack >>> .weak FUNCTION (hardware_init_hook) >>> diff --git a/newlib/libc/sys/arm/crt0.S b/newlib/libc/sys/arm/crt0.S >>> index 8c9f7be38..7a6b40d9a 100644 >>> --- a/newlib/libc/sys/arm/crt0.S >>> +++ b/newlib/libc/sys/arm/crt0.S >>> @@ -50,13 +50,13 @@ >>> .global \name >>> .thumb_func >>> \name: >>> -.endm >>> +.endm >>> #else >>> .code 32 >>> .macro FUNC_START name >>> - .global \name >>> + .global \name >>> \name: >>> -.endm >>> +.endm >>> #endif >>> >>> .macro indirect_call reg >>> @@ -68,8 +68,10 @@ >>> #endif >>> .endm >>> >>> +/******************************************************************************* >>> +* Main library startup code. >>> +*******************************************************************************/ >>> .align 0 >>> - >>> FUNC_START _mainCRTStartup >>> FUNC_START _start >>> #if defined(__ELF__) && !defined(__USING_SJLJ_EXCEPTIONS__) >>> @@ -399,7 +401,7 @@ __change_mode: >>> bl FUNCTION (_init) >>> movs r0, r4 >>> movs r1, r5 >>> -#endif >>> +#endif >>> bl FUNCTION (main) >>> >>> bl FUNCTION (exit) /* Should not return. */ >>> @@ -420,7 +422,7 @@ change_back: >>> #endif >>> >>> /* For Thumb, constants must be after the code since only >>> - positive offsets are supported for PC relative addresses. */ >>> + positive offsets are supported for PC relative addresses. */ >>> .align 0 >>> .LC0: >>> #ifdef ARM_RDI_MONITOR >>> @@ -430,7 +432,7 @@ change_back: >>> /* Changes by toralf: Provide alternative "stack" variable whose value >>> may be defined externally; .Lstack will be used instead of .LC0 if >>> it points to a non-0 value. Also set up references to "hooks" that >>> - may be used by the application to provide additional init code. */ >>> + may be used by the application to provide additional init code. */ >>> #ifdef __pe__ >>> .word 0x800000 >>> #else >>> @@ -449,7 +451,7 @@ change_back: >>> runtime (meaning "ignore setting") for the variables, when the user >>> does not provide the symbols. (The linker uses a weak symbol if, >>> and only if, a normal version of the same symbol isn't provided >>> - e.g. by a linker script or another object file). */ >>> + e.g. by a linker script or another object file.) */ >>> >>> .weak __stack >>> .weak FUNCTION (hardware_init_hook)