Assign names to registers which are used for a single purpose.

This is just to improve readability; there is no change to the code.
This commit is contained in:
Martin Ling
2021-12-20 12:19:01 +00:00
parent dc0f8f48c5
commit f61a03dead

View File

@ -116,6 +116,11 @@ registers and fixed memory addresses.
.equ SLICE6, 32 .equ SLICE6, 32
.equ SLICE7, 0 .equ SLICE7, 0
/* Allocations of single-use registers */
sgpio_data .req r7
buf_ptr .req r6
// Entry point. At this point, the libopencm3 startup code has set things up as // Entry point. At this point, the libopencm3 startup code has set things up as
// normal; .data and .bss are initialised, the stack is set up, etc. However, // normal; .data and .bss are initialised, the stack is set up, etc. However,
// we don't actually use any of that. All the code in this file would work // we don't actually use any of that. All the code in this file would work
@ -154,13 +159,13 @@ main:
str r1, [r0] // 8 str r1, [r0] // 8
// Grab the base address of the SGPIO shadow registers... // Grab the base address of the SGPIO shadow registers...
ldr r7, =SGPIO_SHADOW_REGISTERS_BASE // 2 ldr sgpio_data, =SGPIO_SHADOW_REGISTERS_BASE // 2
// ... and grab the address of the buffer segment we want to write to / read from. // ... and grab the address of the buffer segment we want to write to / read from.
ldr r0, =TARGET_DATA_BUFFER // r0 = &buffer // 2 ldr r0, =TARGET_DATA_BUFFER // r0 = &buffer // 2
ldr r3, =TARGET_BUFFER_POSITION // r3 = &position_in_buffer // 2 ldr r3, =TARGET_BUFFER_POSITION // r3 = &position_in_buffer // 2
ldr r2, [r3] // r2 = position_in_buffer // 2 ldr r2, [r3] // r2 = position_in_buffer // 2
add r6, r0, r2 // r6 = buffer_target = &buffer + position_in_buffer // 1 add buf_ptr, r0, r2 // buf_ptr = &buffer + position_in_buffer // 1
mov r8, r3 // Store &position_in_buffer. // 1 mov r8, r3 // Store &position_in_buffer. // 1
@ -174,39 +179,39 @@ main:
direction_tx: direction_tx:
ldm r6!, {r0-r5} // 7 ldm buf_ptr!, {r0-r5} // 7
str r0, [r7, #SLICE0] // 8 str r0, [sgpio_data, #SLICE0] // 8
str r1, [r7, #SLICE1] // 8 str r1, [sgpio_data, #SLICE1] // 8
str r2, [r7, #SLICE2] // 8 str r2, [sgpio_data, #SLICE2] // 8
str r3, [r7, #SLICE3] // 8 str r3, [sgpio_data, #SLICE3] // 8
str r4, [r7, #SLICE4] // 8 str r4, [sgpio_data, #SLICE4] // 8
str r5, [r7, #SLICE5] // 8 str r5, [sgpio_data, #SLICE5] // 8
ldm r6!, {r0-r1} // 3 ldm buf_ptr!, {r0-r1} // 3
str r0, [r7, #SLICE6] // 8 str r0, [sgpio_data, #SLICE6] // 8
str r1, [r7, #SLICE7] // 8 str r1, [sgpio_data, #SLICE7] // 8
b done // 3 b done // 3
direction_rx: direction_rx:
ldr r0, [r7, #SLICE0] // 10 ldr r0, [sgpio_data, #SLICE0] // 10
ldr r1, [r7, #SLICE1] // 10 ldr r1, [sgpio_data, #SLICE1] // 10
ldr r2, [r7, #SLICE2] // 10 ldr r2, [sgpio_data, #SLICE2] // 10
ldr r3, [r7, #SLICE3] // 10 ldr r3, [sgpio_data, #SLICE3] // 10
ldr r4, [r7, #SLICE4] // 10 ldr r4, [sgpio_data, #SLICE4] // 10
ldr r5, [r7, #SLICE5] // 10 ldr r5, [sgpio_data, #SLICE5] // 10
stm r6!, {r0-r5} // 7 stm buf_ptr!, {r0-r5} // 7
ldr r0, [r7, #SLICE6] // 10 ldr r0, [sgpio_data, #SLICE6] // 10
ldr r1, [r7, #SLICE7] // 10 ldr r1, [sgpio_data, #SLICE7] // 10
stm r6!, {r0-r1} // 3 stm buf_ptr!, {r0-r1} // 3
done: done:
// Finally, update the buffer location... // Finally, update the buffer location...
ldr r0, =TARGET_BUFFER_MASK // 2 ldr r0, =TARGET_BUFFER_MASK // 2
and r0, r6, r0 // r0 = (pos_in_buffer + size_copied) % buffer_size // 1 and r0, buf_ptr, r0 // r0 = (pos_in_buffer + size_copied) % buffer_size // 1
// ... restore &position_in_buffer, and store the new position there... // ... restore &position_in_buffer, and store the new position there...
mov r1, r8 // 1 mov r1, r8 // 1