fernly: Move to new offset

This commit is contained in:
Sean Cross 2014-07-21 18:25:49 +08:00
parent 6d5fb2d819
commit 0d3b04307d
7 changed files with 61 additions and 67 deletions

93
main.c
View file

@ -51,102 +51,97 @@ static int list_registers(void)
{
int var;
printf("Registers:\n");
serial_puts("Registers:\n");
printf("CPSR: ");
serial_puts("CPSR: ");
asm volatile ("mrs %0, cpsr":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("SPSR: ");
serial_puts("SPSR: ");
asm volatile ("mrs %0, spsr":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R0: ");
serial_puts("R0: ");
asm volatile ("mov %0, r0":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R1: ");
serial_puts("R1: ");
asm volatile ("mov %0, r1":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R2: ");
serial_puts("R2: ");
asm volatile ("mov %0, r2":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R3: ");
serial_puts("R3: ");
asm volatile ("mov %0, r3":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R4: ");
serial_puts("R4: ");
asm volatile ("mov %0, r4":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R5: ");
serial_puts("R5: ");
asm volatile ("mov %0, r5":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R6: ");
serial_puts("R6: ");
asm volatile ("mov %0, r6":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R7: ");
serial_puts("R7: ");
asm volatile ("mov %0, r7":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R8: ");
serial_puts("R8: ");
asm volatile ("mov %0, r8":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R9: ");
serial_puts("R9: ");
asm volatile ("mov %0, r9":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R10: ");
serial_puts("R10: ");
asm volatile ("mov %0, r10":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("FP: ");
serial_puts("FP: ");
asm volatile ("mov %0, r11":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("IP: ");
serial_puts("IP: ");
asm volatile ("mov %0, r12":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("SP: ");
serial_puts("SP: ");
asm volatile ("mov %0, r13":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R14: ");
serial_puts("LR: ");
asm volatile ("mov %0, r14":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
printf("R15: ");
serial_puts("PC: ");
asm volatile ("mov %0, r15":"=r" (var));
serial_puth(var, 8);
printf("\n");
printf("LR: ");
asm volatile ("mov %0, lr":"=r" (var));
serial_puth(var, 8);
printf("\n");
serial_puts("\n");
return 0;
}
@ -156,11 +151,11 @@ static int enable_irq(void)
register int var;
asm volatile ("mrs %0, cpsr":"=r" (var));
if (!(var & 0x80)) {
printf("Interrupts already enabled\n");
serial_puts("Interrupts already enabled\n");
return -1;
}
// printf("Interrupts were disabled. Re-enabling...\n");
// serial_puts("Interrupts were disabled. Re-enabling...\n");
var &= ~0x80;
var &= ~0x1f;
var |= 0x10;
@ -174,11 +169,11 @@ static int enable_fiq(void)
register int var;
asm volatile ("mrs %0, cpsr":"=r" (var));
if (!(var & 0x40)) {
printf("FIQ already enabled\n");
serial_puts("FIQ already enabled\n");
return -1;
}
// printf("FIQ was disabled. Re-enabling...\n");
// serial_puts("FIQ was disabled. Re-enabling...\n");
var &= ~0x40;
asm volatile ("msr cpsr, %0":"=r" (var));
@ -199,13 +194,9 @@ static int do_init(void)
/* Disable WDT */
writel(0x2200, 0xa0030000);
printf("\n\nFernly shell\n");
serial_puts("\n\nFernly shell\n");
/* Copy exception vectors to address 0 */
printf("Copying vectors");
printf(" Src: %p", rv_start);
printf(" Src end: %p", rv_end);
printf(" Size: %d\n", rv_end - rv_start);
_memcpy((void *)0, rv_start, rv_end - rv_start);
enable_irq();
enable_fiq();