[2072] * kern/sparc64/cache.S: Fix grub_arch_sync_caches implementation.

"David S. Miller" <[email protected]>
Newsgroups gmane.comp.boot-loaders.grub.cvs
Message-ID <[email protected]>
Revision: 2072
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2072
Author:   davem
Date:     2009-04-07 23:49:27 +0000 (Tue, 07 Apr 2009)
Log Message:
-----------
	* kern/sparc64/cache.S: Fix grub_arch_sync_caches implementation.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/kern/sparc64/cache.S

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog	2009-04-07 23:48:28 UTC (rev 2071)
+++ trunk/grub2/ChangeLog	2009-04-07 23:49:27 UTC (rev 2072)
@@ -3,6 +3,7 @@
 	* kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Add
 	support for R_SPARC_OLO10 relocations.  Fix compile warning for
 	R_SPARC_WDISP30 case.
+	* kern/sparc64/cache.S: Fix grub_arch_sync_caches implementation.
 
 2009-04-06  Pavel Roskin  <[email protected]>
 

Modified: trunk/grub2/kern/sparc64/cache.S
===================================================================
--- trunk/grub2/kern/sparc64/cache.S	2009-04-07 23:48:28 UTC (rev 2071)
+++ trunk/grub2/kern/sparc64/cache.S	2009-04-07 23:49:27 UTC (rev 2072)
@@ -1,7 +1,7 @@
 /* cache.S - Flush the processor cache for a specific region.  */
 /*
  *  GRUB  --  GRand Unified Bootloader
- *  Copyright (C) 2005,2007  Free Software Foundation, Inc.
+ *  Copyright (C) 2005,2007,2009  Free Software Foundation, Inc.
  *
  *  GRUB is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -27,17 +27,15 @@
  * void grub_arch_sync_caches (void *address, grub_size_t len)
  */
 FUNCTION(grub_arch_sync_caches)
-        save            %o6,    -0xC,  %o6      ! Get a new register window,
-                                                ! reserve space on stack for
-                                                ! %i0, %i1, %i2
-        brz,pn          %i0,    return          ! Return if address == 0.
-         nop
-        brz,pn          %i1,    return          ! Return if len == 0.
-         clr             %i2                    ! index = 0.
-loop:   flush           %i0 + %i2               ! Flush address + index.
-        cmp             %i1,    %i2             ! Compare len & index .
-        bpos,a,pt       %xcc,   loop            ! If len > index, loop.
-         add            %i2,    8,      %i2     ! Go to next doubleword.
-return: ret                                     ! Restore caller's register
-         restore                                ! window and return.
+	brz,pn		%o1, 2f
+	 add		%o0, %o1, %o1
+	add		%o1, 7, %o1
+	andn		%o1, 7, %o1
+	andn		%o0, 7, %o0
+	sub		%o1, %o0, %o1
+1:	subcc		%o1, 8, %o1
+	bne,pt		%icc, 1b
+	 flush		%o0 + %o1
+2:	retl
+	 nop
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.