Commit 8234b65a authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC64]: Fix build with SPARSEMEM_VMEMMAP disabled.
  [SPARC]: Make gettimeofday() monotonic again.
parents 612166c7 bf4a7972
...@@ -436,7 +436,14 @@ void __init time_init(void) ...@@ -436,7 +436,14 @@ void __init time_init(void)
static inline unsigned long do_gettimeoffset(void) static inline unsigned long do_gettimeoffset(void)
{ {
return (*master_l10_counter >> 10) & 0x1fffff; unsigned long val = *master_l10_counter;
unsigned long usec = (val >> 10) & 0x1fffff;
/* Limit hit? */
if (val & 0x80000000)
usec += 1000000 / HZ;
return usec;
} }
/* Ok, my cute asm atomicity trick doesn't work anymore. /* Ok, my cute asm atomicity trick doesn't work anymore.
......
/* arch/sparc64/kernel/ktlb.S: Kernel mapping TLB miss handling. /* arch/sparc64/kernel/ktlb.S: Kernel mapping TLB miss handling.
* *
* Copyright (C) 1995, 1997, 2005 David S. Miller <davem@davemloft.net> * Copyright (C) 1995, 1997, 2005, 2008 David S. Miller <davem@davemloft.net>
* Copyright (C) 1996 Eddie C. Dost (ecd@brainaid.de) * Copyright (C) 1996 Eddie C. Dost (ecd@brainaid.de)
* Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx) * Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx)
* Copyright (C) 1996,98,99 Jakub Jelinek (jj@sunsite.mff.cuni.cz) * Copyright (C) 1996,98,99 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
...@@ -226,6 +226,7 @@ kvmap_dtlb_load: ...@@ -226,6 +226,7 @@ kvmap_dtlb_load:
ba,pt %xcc, sun4v_dtlb_load ba,pt %xcc, sun4v_dtlb_load
mov %g5, %g3 mov %g5, %g3
#ifdef CONFIG_SPARSEMEM_VMEMMAP
kvmap_vmemmap: kvmap_vmemmap:
sub %g4, %g5, %g5 sub %g4, %g5, %g5
srlx %g5, 22, %g5 srlx %g5, 22, %g5
...@@ -234,6 +235,7 @@ kvmap_vmemmap: ...@@ -234,6 +235,7 @@ kvmap_vmemmap:
or %g1, %lo(vmemmap_table), %g1 or %g1, %lo(vmemmap_table), %g1
ba,pt %xcc, kvmap_dtlb_load ba,pt %xcc, kvmap_dtlb_load
ldx [%g1 + %g5], %g5 ldx [%g1 + %g5], %g5
#endif
kvmap_dtlb_nonlinear: kvmap_dtlb_nonlinear:
/* Catch kernel NULL pointer derefs. */ /* Catch kernel NULL pointer derefs. */
...@@ -242,12 +244,14 @@ kvmap_dtlb_nonlinear: ...@@ -242,12 +244,14 @@ kvmap_dtlb_nonlinear:
bleu,pn %xcc, kvmap_dtlb_longpath bleu,pn %xcc, kvmap_dtlb_longpath
nop nop
#ifdef CONFIG_SPARSEMEM_VMEMMAP
/* Do not use the TSB for vmemmap. */ /* Do not use the TSB for vmemmap. */
mov (VMEMMAP_BASE >> 24), %g5 mov (VMEMMAP_BASE >> 24), %g5
sllx %g5, 24, %g5 sllx %g5, 24, %g5
cmp %g4,%g5 cmp %g4,%g5
bgeu,pn %xcc, kvmap_vmemmap bgeu,pn %xcc, kvmap_vmemmap
nop nop
#endif
KERN_TSB_LOOKUP_TL1(%g4, %g6, %g5, %g1, %g2, %g3, kvmap_dtlb_load) KERN_TSB_LOOKUP_TL1(%g4, %g6, %g5, %g1, %g2, %g3, kvmap_dtlb_load)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment