Merge branches 'fixes', 'misc' and 'sa1111-for-next' into for-next
Esse commit está contido em:
@@ -196,11 +196,8 @@ setup_machine_tags(phys_addr_t __atags_pointer, unsigned int machine_nr)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!mdesc) {
|
||||
early_print("\nError: unrecognized/unsupported machine ID"
|
||||
" (r1 = 0x%08x).\n\n", machine_nr);
|
||||
dump_machine_table(); /* does not return */
|
||||
}
|
||||
if (!mdesc)
|
||||
return NULL;
|
||||
|
||||
if (__atags_pointer)
|
||||
tags = phys_to_virt(__atags_pointer);
|
||||
|
@@ -55,7 +55,9 @@ ENDPROC(printhex4)
|
||||
|
||||
ENTRY(printhex2)
|
||||
mov r1, #2
|
||||
printhex: adr r2, hexbuf
|
||||
printhex: adr r2, hexbuf_rel
|
||||
ldr r3, [r2]
|
||||
add r2, r2, r3
|
||||
add r3, r2, r1
|
||||
mov r1, #0
|
||||
strb r1, [r3]
|
||||
@@ -71,7 +73,11 @@ printhex: adr r2, hexbuf
|
||||
b printascii
|
||||
ENDPROC(printhex2)
|
||||
|
||||
hexbuf: .space 16
|
||||
.pushsection .bss
|
||||
hexbuf_addr: .space 16
|
||||
.popsection
|
||||
.align
|
||||
hexbuf_rel: .long hexbuf_addr - .
|
||||
|
||||
.ltorg
|
||||
|
||||
@@ -79,25 +85,28 @@ hexbuf: .space 16
|
||||
|
||||
ENTRY(printascii)
|
||||
addruart_current r3, r1, r2
|
||||
b 2f
|
||||
1: waituart r2, r3
|
||||
senduart r1, r3
|
||||
busyuart r2, r3
|
||||
teq r1, #'\n'
|
||||
moveq r1, #'\r'
|
||||
beq 1b
|
||||
2: teq r0, #0
|
||||
1: teq r0, #0
|
||||
ldrneb r1, [r0], #1
|
||||
teqne r1, #0
|
||||
bne 1b
|
||||
ret lr
|
||||
reteq lr
|
||||
2: teq r1, #'\n'
|
||||
bne 3f
|
||||
mov r1, #'\r'
|
||||
waituart r2, r3
|
||||
senduart r1, r3
|
||||
busyuart r2, r3
|
||||
mov r1, #'\n'
|
||||
3: waituart r2, r3
|
||||
senduart r1, r3
|
||||
busyuart r2, r3
|
||||
b 1b
|
||||
ENDPROC(printascii)
|
||||
|
||||
ENTRY(printch)
|
||||
addruart_current r3, r1, r2
|
||||
mov r1, r0
|
||||
mov r0, #0
|
||||
b 1b
|
||||
b 2b
|
||||
ENDPROC(printch)
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
@@ -124,7 +133,9 @@ ENTRY(printascii)
|
||||
ENDPROC(printascii)
|
||||
|
||||
ENTRY(printch)
|
||||
adr r1, hexbuf
|
||||
adr r1, hexbuf_rel
|
||||
ldr r2, [r1]
|
||||
add r1, r1, r2
|
||||
strb r0, [r1]
|
||||
mov r0, #0x03 @ SYS_WRITEC
|
||||
ARM( svc #0x123456 )
|
||||
|
@@ -11,16 +11,20 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
extern void printch(int);
|
||||
extern void printascii(const char *);
|
||||
|
||||
static void early_write(const char *s, unsigned n)
|
||||
{
|
||||
while (n-- > 0) {
|
||||
if (*s == '\n')
|
||||
printch('\r');
|
||||
printch(*s);
|
||||
s++;
|
||||
char buf[128];
|
||||
while (n) {
|
||||
unsigned l = min(n, sizeof(buf)-1);
|
||||
memcpy(buf, s, l);
|
||||
buf[l] = 0;
|
||||
s += l;
|
||||
n -= l;
|
||||
printascii(buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -394,17 +394,8 @@ ENDPROC(sys_fstatfs64_wrapper)
|
||||
* offset, we return EINVAL.
|
||||
*/
|
||||
sys_mmap2:
|
||||
#if PAGE_SHIFT > 12
|
||||
tst r5, #PGOFF_MASK
|
||||
moveq r5, r5, lsr #PAGE_SHIFT - 12
|
||||
streq r5, [sp, #4]
|
||||
beq sys_mmap_pgoff
|
||||
mov r0, #-EINVAL
|
||||
ret lr
|
||||
#else
|
||||
str r5, [sp, #4]
|
||||
b sys_mmap_pgoff
|
||||
#endif
|
||||
ENDPROC(sys_mmap2)
|
||||
|
||||
#ifdef CONFIG_OABI_COMPAT
|
||||
|
@@ -1069,6 +1069,16 @@ void __init setup_arch(char **cmdline_p)
|
||||
mdesc = setup_machine_fdt(__atags_pointer);
|
||||
if (!mdesc)
|
||||
mdesc = setup_machine_tags(__atags_pointer, __machine_arch_type);
|
||||
if (!mdesc) {
|
||||
early_print("\nError: invalid dtb and unrecognized/unsupported machine ID\n");
|
||||
early_print(" r1=0x%08x, r2=0x%08x\n", __machine_arch_type,
|
||||
__atags_pointer);
|
||||
if (__atags_pointer)
|
||||
early_print(" r2[]=%*ph\n", 16,
|
||||
phys_to_virt(__atags_pointer));
|
||||
dump_machine_table();
|
||||
}
|
||||
|
||||
machine_desc = mdesc;
|
||||
machine_name = mdesc->name;
|
||||
dump_stack_set_arch_desc("%s", mdesc->name);
|
||||
|
Referência em uma nova issue
Block a user