summaryrefslogtreecommitdiff
path: root/ldso/ldso/avr32/dl-startup.h
diff options
context:
space:
mode:
Diffstat (limited to 'ldso/ldso/avr32/dl-startup.h')
-rw-r--r--ldso/ldso/avr32/dl-startup.h126
1 files changed, 63 insertions, 63 deletions
diff --git a/ldso/ldso/avr32/dl-startup.h b/ldso/ldso/avr32/dl-startup.h
index 2280b2629..3b9a64176 100644
--- a/ldso/ldso/avr32/dl-startup.h
+++ b/ldso/ldso/avr32/dl-startup.h
@@ -9,36 +9,36 @@
/* This is the library loader's main entry point. Let _dl_boot2 do its
* initializations and jump to the application's entry point
* afterwards. */
-asm( " .text\n"
- " .global _start\n"
- " .type _start,@function\n"
- "_start:\n"
- /* All arguments are on the stack initially */
- " mov r12, sp\n"
- " rcall _dl_start\n"
- /* Returns user entry point in r12. Save it. */
- " mov r0, r12\n"
- /* We're PIC, so get the Global Offset Table */
- " lddpc r6, .L_GOT\n"
- ".L_RGOT:\n"
- " rsub r6, pc\n"
- /* Adjust argc and argv according to _dl_skip_args */
- " ld.w r1, r6[_dl_skip_args@got]\n"
- " ld.w r1, r1[0]\n"
- " ld.w r2, sp++\n"
- " sub r2, r1\n"
- " add sp, sp, r1 << 2\n"
- " st.w --sp, r2\n"
- /* Load the finalizer function */
- " ld.w r12, r6[_dl_fini@got]\n"
- /* Jump to the user's entry point */
- " mov pc, r0\n\n"
+asm( " .text\n"
+ " .global _start\n"
+ " .type _start,@function\n"
+ "_start:\n"
+ /* All arguments are on the stack initially */
+ " mov r12, sp\n"
+ " rcall _dl_start\n"
+ /* Returns user entry point in r12. Save it. */
+ " mov r0, r12\n"
+ /* We're PIC, so get the Global Offset Table */
+ " lddpc r6, .L_GOT\n"
+ ".L_RGOT:\n"
+ " rsub r6, pc\n"
+ /* Adjust argc and argv according to _dl_skip_args */
+ " ld.w r1, r6[_dl_skip_args@got]\n"
+ " ld.w r1, r1[0]\n"
+ " ld.w r2, sp++\n"
+ " sub r2, r1\n"
+ " add sp, sp, r1 << 2\n"
+ " st.w --sp, r2\n"
+ /* Load the finalizer function */
+ " ld.w r12, r6[_dl_fini@got]\n"
+ /* Jump to the user's entry point */
+ " mov pc, r0\n\n"
- " .align 2\n"
- ".L_GOT:"
- " .long .L_RGOT - _GLOBAL_OFFSET_TABLE_\n"
- " .size _start, . - _start\n"
- " .previous\n");
+ " .align 2\n"
+ ".L_GOT:"
+ " .long .L_RGOT - _GLOBAL_OFFSET_TABLE_\n"
+ " .size _start, . - _start\n"
+ " .previous\n");
/* Get a pointer to the argv array. On many platforms this can be just
* the address if the first argument, on other platforms we need to
@@ -58,13 +58,13 @@ asm( " .text\n"
static __always_inline
void PERFORM_BOOTSTRAP_GOT(struct elf_resolve *tpnt)
{
- Elf32_Addr i, nr_got;
- register Elf32_Addr *__r6 __asm__("r6");
- Elf32_Addr *got = __r6;
+ Elf32_Addr i, nr_got;
+ register Elf32_Addr *__r6 __asm__("r6");
+ Elf32_Addr *got = __r6;
- nr_got = tpnt->dynamic_info[DT_AVR32_GOTSZ_IDX] / sizeof(*got);
- for (i = 2; i < nr_got; i++)
- got[i] += tpnt->loadaddr;
+ nr_got = tpnt->dynamic_info[DT_AVR32_GOTSZ_IDX] / sizeof(*got);
+ for (i = 2; i < nr_got; i++)
+ got[i] += tpnt->loadaddr;
}
#define PERFORM_BOOTSTRAP_GOT(tpnt) PERFORM_BOOTSTRAP_GOT(tpnt)
@@ -72,34 +72,34 @@ void PERFORM_BOOTSTRAP_GOT(struct elf_resolve *tpnt)
/* Handle relocation of the symbols in the dynamic loader. */
static __always_inline
void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
- unsigned long symbol_addr,
- unsigned long load_addr, Elf32_Sym *symtab)
+ unsigned long symbol_addr,
+ unsigned long load_addr, Elf32_Sym *symtab)
{
- switch(ELF32_R_TYPE(rpnt->r_info)) {
- case R_AVR32_NONE:
- break;
- case R_AVR32_GLOB_DAT:
- case R_AVR32_JMP_SLOT:
- *reloc_addr = symbol_addr;
- break;
- case R_AVR32_RELATIVE:
- SEND_STDERR_DEBUG("Applying RELATIVE relocation: ");
- SEND_ADDRESS_STDERR_DEBUG(load_addr, 0);
- SEND_STDERR_DEBUG(" + ");
- SEND_ADDRESS_STDERR_DEBUG(rpnt->r_addend, 1);
- *reloc_addr = load_addr + rpnt->r_addend;
- break;
- default:
- SEND_STDERR("BOOTSTRAP_RELOC: unhandled reloc_type ");
- SEND_NUMBER_STDERR(ELF32_R_TYPE(rpnt->r_info), 1);
- SEND_STDERR("REL, SYMBOL, LOAD: ");
- SEND_ADDRESS_STDERR(reloc_addr, 0);
- SEND_STDERR(", ");
- SEND_ADDRESS_STDERR(symbol_addr, 0);
- SEND_STDERR(", ");
- SEND_ADDRESS_STDERR(load_addr, 1);
- _dl_exit(1);
- }
+ switch(ELF32_R_TYPE(rpnt->r_info)) {
+ case R_AVR32_NONE:
+ break;
+ case R_AVR32_GLOB_DAT:
+ case R_AVR32_JMP_SLOT:
+ *reloc_addr = symbol_addr;
+ break;
+ case R_AVR32_RELATIVE:
+ SEND_STDERR_DEBUG("Applying RELATIVE relocation: ");
+ SEND_ADDRESS_STDERR_DEBUG(load_addr, 0);
+ SEND_STDERR_DEBUG(" + ");
+ SEND_ADDRESS_STDERR_DEBUG(rpnt->r_addend, 1);
+ *reloc_addr = load_addr + rpnt->r_addend;
+ break;
+ default:
+ SEND_STDERR("BOOTSTRAP_RELOC: unhandled reloc_type ");
+ SEND_NUMBER_STDERR(ELF32_R_TYPE(rpnt->r_info), 1);
+ SEND_STDERR("REL, SYMBOL, LOAD: ");
+ SEND_ADDRESS_STDERR(reloc_addr, 0);
+ SEND_STDERR(", ");
+ SEND_ADDRESS_STDERR(symbol_addr, 0);
+ SEND_STDERR(", ");
+ SEND_ADDRESS_STDERR(load_addr, 1);
+ _dl_exit(1);
+ }
}
/* Transfer control to the user's application, once the dynamic loader
@@ -109,4 +109,4 @@ void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
* Since our _dl_boot will simply call whatever is returned by
* _dl_boot2, we can just return the address we're supposed to
* call. */
-#define START() return _dl_elf_main;
+#define START() return _dl_elf_main;