1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */ 2478b8fecSSam Ravnborg/* 3478b8fecSSam Ravnborg * arch/sparc64/lib/xor.S 4478b8fecSSam Ravnborg * 5478b8fecSSam Ravnborg * High speed xor_block operation for RAID4/5 utilizing the 6478b8fecSSam Ravnborg * UltraSparc Visual Instruction Set and Niagara store-init/twin-load. 7478b8fecSSam Ravnborg * 8478b8fecSSam Ravnborg * Copyright (C) 1997, 1999 Jakub Jelinek (jj@ultra.linux.cz) 9478b8fecSSam Ravnborg * Copyright (C) 2006 David S. Miller <davem@davemloft.net> 10478b8fecSSam Ravnborg */ 11478b8fecSSam Ravnborg 12*4cdb71b6SMasahiro Yamada#include <linux/export.h> 138695c37dSDavid S. Miller#include <linux/linkage.h> 14478b8fecSSam Ravnborg#include <asm/visasm.h> 15478b8fecSSam Ravnborg#include <asm/asi.h> 16478b8fecSSam Ravnborg#include <asm/dcu.h> 17478b8fecSSam Ravnborg#include <asm/spitfire.h> 18478b8fecSSam Ravnborg 19478b8fecSSam Ravnborg/* 20478b8fecSSam Ravnborg * Requirements: 21478b8fecSSam Ravnborg * !(((long)dest | (long)sourceN) & (64 - 1)) && 22478b8fecSSam Ravnborg * !(len & 127) && len >= 256 23478b8fecSSam Ravnborg */ 24478b8fecSSam Ravnborg .text 25478b8fecSSam Ravnborg 26478b8fecSSam Ravnborg /* VIS versions. */ 278695c37dSDavid S. MillerENTRY(xor_vis_2) 28478b8fecSSam Ravnborg rd %fprs, %o5 29478b8fecSSam Ravnborg andcc %o5, FPRS_FEF|FPRS_DU, %g0 30478b8fecSSam Ravnborg be,pt %icc, 0f 31478b8fecSSam Ravnborg sethi %hi(VISenter), %g1 32478b8fecSSam Ravnborg jmpl %g1 + %lo(VISenter), %g7 33478b8fecSSam Ravnborg add %g7, 8, %g7 34478b8fecSSam Ravnborg0: wr %g0, FPRS_FEF, %fprs 35478b8fecSSam Ravnborg rd %asi, %g1 36478b8fecSSam Ravnborg wr %g0, ASI_BLK_P, %asi 37478b8fecSSam Ravnborg membar #LoadStore|#StoreLoad|#StoreStore 38478b8fecSSam Ravnborg sub %o0, 128, %o0 39478b8fecSSam Ravnborg ldda [%o1] %asi, %f0 40478b8fecSSam Ravnborg ldda [%o2] %asi, %f16 41478b8fecSSam Ravnborg 42478b8fecSSam Ravnborg2: ldda [%o1 + 64] %asi, %f32 43478b8fecSSam Ravnborg fxor %f0, %f16, %f16 44478b8fecSSam Ravnborg fxor %f2, %f18, %f18 45478b8fecSSam Ravnborg fxor %f4, %f20, %f20 46478b8fecSSam Ravnborg fxor %f6, %f22, %f22 47478b8fecSSam Ravnborg fxor %f8, %f24, %f24 48478b8fecSSam Ravnborg fxor %f10, %f26, %f26 49478b8fecSSam Ravnborg fxor %f12, %f28, %f28 50478b8fecSSam Ravnborg fxor %f14, %f30, %f30 51478b8fecSSam Ravnborg stda %f16, [%o1] %asi 52478b8fecSSam Ravnborg ldda [%o2 + 64] %asi, %f48 53478b8fecSSam Ravnborg ldda [%o1 + 128] %asi, %f0 54478b8fecSSam Ravnborg fxor %f32, %f48, %f48 55478b8fecSSam Ravnborg fxor %f34, %f50, %f50 56478b8fecSSam Ravnborg add %o1, 128, %o1 57478b8fecSSam Ravnborg fxor %f36, %f52, %f52 58478b8fecSSam Ravnborg add %o2, 128, %o2 59478b8fecSSam Ravnborg fxor %f38, %f54, %f54 60478b8fecSSam Ravnborg subcc %o0, 128, %o0 61478b8fecSSam Ravnborg fxor %f40, %f56, %f56 62478b8fecSSam Ravnborg fxor %f42, %f58, %f58 63478b8fecSSam Ravnborg fxor %f44, %f60, %f60 64478b8fecSSam Ravnborg fxor %f46, %f62, %f62 65478b8fecSSam Ravnborg stda %f48, [%o1 - 64] %asi 66478b8fecSSam Ravnborg bne,pt %xcc, 2b 67478b8fecSSam Ravnborg ldda [%o2] %asi, %f16 68478b8fecSSam Ravnborg 69478b8fecSSam Ravnborg ldda [%o1 + 64] %asi, %f32 70478b8fecSSam Ravnborg fxor %f0, %f16, %f16 71478b8fecSSam Ravnborg fxor %f2, %f18, %f18 72478b8fecSSam Ravnborg fxor %f4, %f20, %f20 73478b8fecSSam Ravnborg fxor %f6, %f22, %f22 74478b8fecSSam Ravnborg fxor %f8, %f24, %f24 75478b8fecSSam Ravnborg fxor %f10, %f26, %f26 76478b8fecSSam Ravnborg fxor %f12, %f28, %f28 77478b8fecSSam Ravnborg fxor %f14, %f30, %f30 78478b8fecSSam Ravnborg stda %f16, [%o1] %asi 79478b8fecSSam Ravnborg ldda [%o2 + 64] %asi, %f48 80478b8fecSSam Ravnborg membar #Sync 81478b8fecSSam Ravnborg fxor %f32, %f48, %f48 82478b8fecSSam Ravnborg fxor %f34, %f50, %f50 83478b8fecSSam Ravnborg fxor %f36, %f52, %f52 84478b8fecSSam Ravnborg fxor %f38, %f54, %f54 85478b8fecSSam Ravnborg fxor %f40, %f56, %f56 86478b8fecSSam Ravnborg fxor %f42, %f58, %f58 87478b8fecSSam Ravnborg fxor %f44, %f60, %f60 88478b8fecSSam Ravnborg fxor %f46, %f62, %f62 89478b8fecSSam Ravnborg stda %f48, [%o1 + 64] %asi 90478b8fecSSam Ravnborg membar #Sync|#StoreStore|#StoreLoad 91478b8fecSSam Ravnborg wr %g1, %g0, %asi 92478b8fecSSam Ravnborg retl 93478b8fecSSam Ravnborg wr %g0, 0, %fprs 948695c37dSDavid S. MillerENDPROC(xor_vis_2) 95d3867f04SAl ViroEXPORT_SYMBOL(xor_vis_2) 96478b8fecSSam Ravnborg 978695c37dSDavid S. MillerENTRY(xor_vis_3) 98478b8fecSSam Ravnborg rd %fprs, %o5 99478b8fecSSam Ravnborg andcc %o5, FPRS_FEF|FPRS_DU, %g0 100478b8fecSSam Ravnborg be,pt %icc, 0f 101478b8fecSSam Ravnborg sethi %hi(VISenter), %g1 102478b8fecSSam Ravnborg jmpl %g1 + %lo(VISenter), %g7 103478b8fecSSam Ravnborg add %g7, 8, %g7 104478b8fecSSam Ravnborg0: wr %g0, FPRS_FEF, %fprs 105478b8fecSSam Ravnborg rd %asi, %g1 106478b8fecSSam Ravnborg wr %g0, ASI_BLK_P, %asi 107478b8fecSSam Ravnborg membar #LoadStore|#StoreLoad|#StoreStore 108478b8fecSSam Ravnborg sub %o0, 64, %o0 109478b8fecSSam Ravnborg ldda [%o1] %asi, %f0 110478b8fecSSam Ravnborg ldda [%o2] %asi, %f16 111478b8fecSSam Ravnborg 112478b8fecSSam Ravnborg3: ldda [%o3] %asi, %f32 113478b8fecSSam Ravnborg fxor %f0, %f16, %f48 114478b8fecSSam Ravnborg fxor %f2, %f18, %f50 115478b8fecSSam Ravnborg add %o1, 64, %o1 116478b8fecSSam Ravnborg fxor %f4, %f20, %f52 117478b8fecSSam Ravnborg fxor %f6, %f22, %f54 118478b8fecSSam Ravnborg add %o2, 64, %o2 119478b8fecSSam Ravnborg fxor %f8, %f24, %f56 120478b8fecSSam Ravnborg fxor %f10, %f26, %f58 121478b8fecSSam Ravnborg fxor %f12, %f28, %f60 122478b8fecSSam Ravnborg fxor %f14, %f30, %f62 123478b8fecSSam Ravnborg ldda [%o1] %asi, %f0 124478b8fecSSam Ravnborg fxor %f48, %f32, %f48 125478b8fecSSam Ravnborg fxor %f50, %f34, %f50 126478b8fecSSam Ravnborg fxor %f52, %f36, %f52 127478b8fecSSam Ravnborg fxor %f54, %f38, %f54 128478b8fecSSam Ravnborg add %o3, 64, %o3 129478b8fecSSam Ravnborg fxor %f56, %f40, %f56 130478b8fecSSam Ravnborg fxor %f58, %f42, %f58 131478b8fecSSam Ravnborg subcc %o0, 64, %o0 132478b8fecSSam Ravnborg fxor %f60, %f44, %f60 133478b8fecSSam Ravnborg fxor %f62, %f46, %f62 134478b8fecSSam Ravnborg stda %f48, [%o1 - 64] %asi 135478b8fecSSam Ravnborg bne,pt %xcc, 3b 136478b8fecSSam Ravnborg ldda [%o2] %asi, %f16 137478b8fecSSam Ravnborg 138478b8fecSSam Ravnborg ldda [%o3] %asi, %f32 139478b8fecSSam Ravnborg fxor %f0, %f16, %f48 140478b8fecSSam Ravnborg fxor %f2, %f18, %f50 141478b8fecSSam Ravnborg fxor %f4, %f20, %f52 142478b8fecSSam Ravnborg fxor %f6, %f22, %f54 143478b8fecSSam Ravnborg fxor %f8, %f24, %f56 144478b8fecSSam Ravnborg fxor %f10, %f26, %f58 145478b8fecSSam Ravnborg fxor %f12, %f28, %f60 146478b8fecSSam Ravnborg fxor %f14, %f30, %f62 147478b8fecSSam Ravnborg membar #Sync 148478b8fecSSam Ravnborg fxor %f48, %f32, %f48 149478b8fecSSam Ravnborg fxor %f50, %f34, %f50 150478b8fecSSam Ravnborg fxor %f52, %f36, %f52 151478b8fecSSam Ravnborg fxor %f54, %f38, %f54 152478b8fecSSam Ravnborg fxor %f56, %f40, %f56 153478b8fecSSam Ravnborg fxor %f58, %f42, %f58 154478b8fecSSam Ravnborg fxor %f60, %f44, %f60 155478b8fecSSam Ravnborg fxor %f62, %f46, %f62 156478b8fecSSam Ravnborg stda %f48, [%o1] %asi 157478b8fecSSam Ravnborg membar #Sync|#StoreStore|#StoreLoad 158478b8fecSSam Ravnborg wr %g1, %g0, %asi 159478b8fecSSam Ravnborg retl 160478b8fecSSam Ravnborg wr %g0, 0, %fprs 1618695c37dSDavid S. MillerENDPROC(xor_vis_3) 162d3867f04SAl ViroEXPORT_SYMBOL(xor_vis_3) 163478b8fecSSam Ravnborg 1648695c37dSDavid S. MillerENTRY(xor_vis_4) 165478b8fecSSam Ravnborg rd %fprs, %o5 166478b8fecSSam Ravnborg andcc %o5, FPRS_FEF|FPRS_DU, %g0 167478b8fecSSam Ravnborg be,pt %icc, 0f 168478b8fecSSam Ravnborg sethi %hi(VISenter), %g1 169478b8fecSSam Ravnborg jmpl %g1 + %lo(VISenter), %g7 170478b8fecSSam Ravnborg add %g7, 8, %g7 171478b8fecSSam Ravnborg0: wr %g0, FPRS_FEF, %fprs 172478b8fecSSam Ravnborg rd %asi, %g1 173478b8fecSSam Ravnborg wr %g0, ASI_BLK_P, %asi 174478b8fecSSam Ravnborg membar #LoadStore|#StoreLoad|#StoreStore 175478b8fecSSam Ravnborg sub %o0, 64, %o0 176478b8fecSSam Ravnborg ldda [%o1] %asi, %f0 177478b8fecSSam Ravnborg ldda [%o2] %asi, %f16 178478b8fecSSam Ravnborg 179478b8fecSSam Ravnborg4: ldda [%o3] %asi, %f32 180478b8fecSSam Ravnborg fxor %f0, %f16, %f16 181478b8fecSSam Ravnborg fxor %f2, %f18, %f18 182478b8fecSSam Ravnborg add %o1, 64, %o1 183478b8fecSSam Ravnborg fxor %f4, %f20, %f20 184478b8fecSSam Ravnborg fxor %f6, %f22, %f22 185478b8fecSSam Ravnborg add %o2, 64, %o2 186478b8fecSSam Ravnborg fxor %f8, %f24, %f24 187478b8fecSSam Ravnborg fxor %f10, %f26, %f26 188478b8fecSSam Ravnborg fxor %f12, %f28, %f28 189478b8fecSSam Ravnborg fxor %f14, %f30, %f30 190478b8fecSSam Ravnborg ldda [%o4] %asi, %f48 191478b8fecSSam Ravnborg fxor %f16, %f32, %f32 192478b8fecSSam Ravnborg fxor %f18, %f34, %f34 193478b8fecSSam Ravnborg fxor %f20, %f36, %f36 194478b8fecSSam Ravnborg fxor %f22, %f38, %f38 195478b8fecSSam Ravnborg add %o3, 64, %o3 196478b8fecSSam Ravnborg fxor %f24, %f40, %f40 197478b8fecSSam Ravnborg fxor %f26, %f42, %f42 198478b8fecSSam Ravnborg fxor %f28, %f44, %f44 199478b8fecSSam Ravnborg fxor %f30, %f46, %f46 200478b8fecSSam Ravnborg ldda [%o1] %asi, %f0 201478b8fecSSam Ravnborg fxor %f32, %f48, %f48 202478b8fecSSam Ravnborg fxor %f34, %f50, %f50 203478b8fecSSam Ravnborg fxor %f36, %f52, %f52 204478b8fecSSam Ravnborg add %o4, 64, %o4 205478b8fecSSam Ravnborg fxor %f38, %f54, %f54 206478b8fecSSam Ravnborg fxor %f40, %f56, %f56 207478b8fecSSam Ravnborg fxor %f42, %f58, %f58 208478b8fecSSam Ravnborg subcc %o0, 64, %o0 209478b8fecSSam Ravnborg fxor %f44, %f60, %f60 210478b8fecSSam Ravnborg fxor %f46, %f62, %f62 211478b8fecSSam Ravnborg stda %f48, [%o1 - 64] %asi 212478b8fecSSam Ravnborg bne,pt %xcc, 4b 213478b8fecSSam Ravnborg ldda [%o2] %asi, %f16 214478b8fecSSam Ravnborg 215478b8fecSSam Ravnborg ldda [%o3] %asi, %f32 216478b8fecSSam Ravnborg fxor %f0, %f16, %f16 217478b8fecSSam Ravnborg fxor %f2, %f18, %f18 218478b8fecSSam Ravnborg fxor %f4, %f20, %f20 219478b8fecSSam Ravnborg fxor %f6, %f22, %f22 220478b8fecSSam Ravnborg fxor %f8, %f24, %f24 221478b8fecSSam Ravnborg fxor %f10, %f26, %f26 222478b8fecSSam Ravnborg fxor %f12, %f28, %f28 223478b8fecSSam Ravnborg fxor %f14, %f30, %f30 224478b8fecSSam Ravnborg ldda [%o4] %asi, %f48 225478b8fecSSam Ravnborg fxor %f16, %f32, %f32 226478b8fecSSam Ravnborg fxor %f18, %f34, %f34 227478b8fecSSam Ravnborg fxor %f20, %f36, %f36 228478b8fecSSam Ravnborg fxor %f22, %f38, %f38 229478b8fecSSam Ravnborg fxor %f24, %f40, %f40 230478b8fecSSam Ravnborg fxor %f26, %f42, %f42 231478b8fecSSam Ravnborg fxor %f28, %f44, %f44 232478b8fecSSam Ravnborg fxor %f30, %f46, %f46 233478b8fecSSam Ravnborg membar #Sync 234478b8fecSSam Ravnborg fxor %f32, %f48, %f48 235478b8fecSSam Ravnborg fxor %f34, %f50, %f50 236478b8fecSSam Ravnborg fxor %f36, %f52, %f52 237478b8fecSSam Ravnborg fxor %f38, %f54, %f54 238478b8fecSSam Ravnborg fxor %f40, %f56, %f56 239478b8fecSSam Ravnborg fxor %f42, %f58, %f58 240478b8fecSSam Ravnborg fxor %f44, %f60, %f60 241478b8fecSSam Ravnborg fxor %f46, %f62, %f62 242478b8fecSSam Ravnborg stda %f48, [%o1] %asi 243478b8fecSSam Ravnborg membar #Sync|#StoreStore|#StoreLoad 244478b8fecSSam Ravnborg wr %g1, %g0, %asi 245478b8fecSSam Ravnborg retl 246478b8fecSSam Ravnborg wr %g0, 0, %fprs 2478695c37dSDavid S. MillerENDPROC(xor_vis_4) 248d3867f04SAl ViroEXPORT_SYMBOL(xor_vis_4) 249478b8fecSSam Ravnborg 2508695c37dSDavid S. MillerENTRY(xor_vis_5) 251478b8fecSSam Ravnborg save %sp, -192, %sp 252478b8fecSSam Ravnborg rd %fprs, %o5 253478b8fecSSam Ravnborg andcc %o5, FPRS_FEF|FPRS_DU, %g0 254478b8fecSSam Ravnborg be,pt %icc, 0f 255478b8fecSSam Ravnborg sethi %hi(VISenter), %g1 256478b8fecSSam Ravnborg jmpl %g1 + %lo(VISenter), %g7 257478b8fecSSam Ravnborg add %g7, 8, %g7 258478b8fecSSam Ravnborg0: wr %g0, FPRS_FEF, %fprs 259478b8fecSSam Ravnborg rd %asi, %g1 260478b8fecSSam Ravnborg wr %g0, ASI_BLK_P, %asi 261478b8fecSSam Ravnborg membar #LoadStore|#StoreLoad|#StoreStore 262478b8fecSSam Ravnborg sub %i0, 64, %i0 263478b8fecSSam Ravnborg ldda [%i1] %asi, %f0 264478b8fecSSam Ravnborg ldda [%i2] %asi, %f16 265478b8fecSSam Ravnborg 266478b8fecSSam Ravnborg5: ldda [%i3] %asi, %f32 267478b8fecSSam Ravnborg fxor %f0, %f16, %f48 268478b8fecSSam Ravnborg fxor %f2, %f18, %f50 269478b8fecSSam Ravnborg add %i1, 64, %i1 270478b8fecSSam Ravnborg fxor %f4, %f20, %f52 271478b8fecSSam Ravnborg fxor %f6, %f22, %f54 272478b8fecSSam Ravnborg add %i2, 64, %i2 273478b8fecSSam Ravnborg fxor %f8, %f24, %f56 274478b8fecSSam Ravnborg fxor %f10, %f26, %f58 275478b8fecSSam Ravnborg fxor %f12, %f28, %f60 276478b8fecSSam Ravnborg fxor %f14, %f30, %f62 277478b8fecSSam Ravnborg ldda [%i4] %asi, %f16 278478b8fecSSam Ravnborg fxor %f48, %f32, %f48 279478b8fecSSam Ravnborg fxor %f50, %f34, %f50 280478b8fecSSam Ravnborg fxor %f52, %f36, %f52 281478b8fecSSam Ravnborg fxor %f54, %f38, %f54 282478b8fecSSam Ravnborg add %i3, 64, %i3 283478b8fecSSam Ravnborg fxor %f56, %f40, %f56 284478b8fecSSam Ravnborg fxor %f58, %f42, %f58 285478b8fecSSam Ravnborg fxor %f60, %f44, %f60 286478b8fecSSam Ravnborg fxor %f62, %f46, %f62 287478b8fecSSam Ravnborg ldda [%i5] %asi, %f32 288478b8fecSSam Ravnborg fxor %f48, %f16, %f48 289478b8fecSSam Ravnborg fxor %f50, %f18, %f50 290478b8fecSSam Ravnborg add %i4, 64, %i4 291478b8fecSSam Ravnborg fxor %f52, %f20, %f52 292478b8fecSSam Ravnborg fxor %f54, %f22, %f54 293478b8fecSSam Ravnborg add %i5, 64, %i5 294478b8fecSSam Ravnborg fxor %f56, %f24, %f56 295478b8fecSSam Ravnborg fxor %f58, %f26, %f58 296478b8fecSSam Ravnborg fxor %f60, %f28, %f60 297478b8fecSSam Ravnborg fxor %f62, %f30, %f62 298478b8fecSSam Ravnborg ldda [%i1] %asi, %f0 299478b8fecSSam Ravnborg fxor %f48, %f32, %f48 300478b8fecSSam Ravnborg fxor %f50, %f34, %f50 301478b8fecSSam Ravnborg fxor %f52, %f36, %f52 302478b8fecSSam Ravnborg fxor %f54, %f38, %f54 303478b8fecSSam Ravnborg fxor %f56, %f40, %f56 304478b8fecSSam Ravnborg fxor %f58, %f42, %f58 305478b8fecSSam Ravnborg subcc %i0, 64, %i0 306478b8fecSSam Ravnborg fxor %f60, %f44, %f60 307478b8fecSSam Ravnborg fxor %f62, %f46, %f62 308478b8fecSSam Ravnborg stda %f48, [%i1 - 64] %asi 309478b8fecSSam Ravnborg bne,pt %xcc, 5b 310478b8fecSSam Ravnborg ldda [%i2] %asi, %f16 311478b8fecSSam Ravnborg 312478b8fecSSam Ravnborg ldda [%i3] %asi, %f32 313478b8fecSSam Ravnborg fxor %f0, %f16, %f48 314478b8fecSSam Ravnborg fxor %f2, %f18, %f50 315478b8fecSSam Ravnborg fxor %f4, %f20, %f52 316478b8fecSSam Ravnborg fxor %f6, %f22, %f54 317478b8fecSSam Ravnborg fxor %f8, %f24, %f56 318478b8fecSSam Ravnborg fxor %f10, %f26, %f58 319478b8fecSSam Ravnborg fxor %f12, %f28, %f60 320478b8fecSSam Ravnborg fxor %f14, %f30, %f62 321478b8fecSSam Ravnborg ldda [%i4] %asi, %f16 322478b8fecSSam Ravnborg fxor %f48, %f32, %f48 323478b8fecSSam Ravnborg fxor %f50, %f34, %f50 324478b8fecSSam Ravnborg fxor %f52, %f36, %f52 325478b8fecSSam Ravnborg fxor %f54, %f38, %f54 326478b8fecSSam Ravnborg fxor %f56, %f40, %f56 327478b8fecSSam Ravnborg fxor %f58, %f42, %f58 328478b8fecSSam Ravnborg fxor %f60, %f44, %f60 329478b8fecSSam Ravnborg fxor %f62, %f46, %f62 330478b8fecSSam Ravnborg ldda [%i5] %asi, %f32 331478b8fecSSam Ravnborg fxor %f48, %f16, %f48 332478b8fecSSam Ravnborg fxor %f50, %f18, %f50 333478b8fecSSam Ravnborg fxor %f52, %f20, %f52 334478b8fecSSam Ravnborg fxor %f54, %f22, %f54 335478b8fecSSam Ravnborg fxor %f56, %f24, %f56 336478b8fecSSam Ravnborg fxor %f58, %f26, %f58 337478b8fecSSam Ravnborg fxor %f60, %f28, %f60 338478b8fecSSam Ravnborg fxor %f62, %f30, %f62 339478b8fecSSam Ravnborg membar #Sync 340478b8fecSSam Ravnborg fxor %f48, %f32, %f48 341478b8fecSSam Ravnborg fxor %f50, %f34, %f50 342478b8fecSSam Ravnborg fxor %f52, %f36, %f52 343478b8fecSSam Ravnborg fxor %f54, %f38, %f54 344478b8fecSSam Ravnborg fxor %f56, %f40, %f56 345478b8fecSSam Ravnborg fxor %f58, %f42, %f58 346478b8fecSSam Ravnborg fxor %f60, %f44, %f60 347478b8fecSSam Ravnborg fxor %f62, %f46, %f62 348478b8fecSSam Ravnborg stda %f48, [%i1] %asi 349478b8fecSSam Ravnborg membar #Sync|#StoreStore|#StoreLoad 350478b8fecSSam Ravnborg wr %g1, %g0, %asi 351478b8fecSSam Ravnborg wr %g0, 0, %fprs 352478b8fecSSam Ravnborg ret 353478b8fecSSam Ravnborg restore 3548695c37dSDavid S. MillerENDPROC(xor_vis_5) 355d3867f04SAl ViroEXPORT_SYMBOL(xor_vis_5) 356478b8fecSSam Ravnborg 357478b8fecSSam Ravnborg /* Niagara versions. */ 3588695c37dSDavid S. MillerENTRY(xor_niagara_2) /* %o0=bytes, %o1=dest, %o2=src */ 359478b8fecSSam Ravnborg save %sp, -192, %sp 360478b8fecSSam Ravnborg prefetch [%i1], #n_writes 361478b8fecSSam Ravnborg prefetch [%i2], #one_read 362478b8fecSSam Ravnborg rd %asi, %g7 363478b8fecSSam Ravnborg wr %g0, ASI_BLK_INIT_QUAD_LDD_P, %asi 364478b8fecSSam Ravnborg srlx %i0, 6, %g1 365478b8fecSSam Ravnborg mov %i1, %i0 366478b8fecSSam Ravnborg mov %i2, %i1 367478b8fecSSam Ravnborg1: ldda [%i1 + 0x00] %asi, %i2 /* %i2/%i3 = src + 0x00 */ 368478b8fecSSam Ravnborg ldda [%i1 + 0x10] %asi, %i4 /* %i4/%i5 = src + 0x10 */ 369478b8fecSSam Ravnborg ldda [%i1 + 0x20] %asi, %g2 /* %g2/%g3 = src + 0x20 */ 370478b8fecSSam Ravnborg ldda [%i1 + 0x30] %asi, %l0 /* %l0/%l1 = src + 0x30 */ 371478b8fecSSam Ravnborg prefetch [%i1 + 0x40], #one_read 372478b8fecSSam Ravnborg ldda [%i0 + 0x00] %asi, %o0 /* %o0/%o1 = dest + 0x00 */ 373478b8fecSSam Ravnborg ldda [%i0 + 0x10] %asi, %o2 /* %o2/%o3 = dest + 0x10 */ 374478b8fecSSam Ravnborg ldda [%i0 + 0x20] %asi, %o4 /* %o4/%o5 = dest + 0x20 */ 375478b8fecSSam Ravnborg ldda [%i0 + 0x30] %asi, %l2 /* %l2/%l3 = dest + 0x30 */ 376478b8fecSSam Ravnborg prefetch [%i0 + 0x40], #n_writes 377478b8fecSSam Ravnborg xor %o0, %i2, %o0 378478b8fecSSam Ravnborg xor %o1, %i3, %o1 379478b8fecSSam Ravnborg stxa %o0, [%i0 + 0x00] %asi 380478b8fecSSam Ravnborg stxa %o1, [%i0 + 0x08] %asi 381478b8fecSSam Ravnborg xor %o2, %i4, %o2 382478b8fecSSam Ravnborg xor %o3, %i5, %o3 383478b8fecSSam Ravnborg stxa %o2, [%i0 + 0x10] %asi 384478b8fecSSam Ravnborg stxa %o3, [%i0 + 0x18] %asi 385478b8fecSSam Ravnborg xor %o4, %g2, %o4 386478b8fecSSam Ravnborg xor %o5, %g3, %o5 387478b8fecSSam Ravnborg stxa %o4, [%i0 + 0x20] %asi 388478b8fecSSam Ravnborg stxa %o5, [%i0 + 0x28] %asi 389478b8fecSSam Ravnborg xor %l2, %l0, %l2 390478b8fecSSam Ravnborg xor %l3, %l1, %l3 391478b8fecSSam Ravnborg stxa %l2, [%i0 + 0x30] %asi 392478b8fecSSam Ravnborg stxa %l3, [%i0 + 0x38] %asi 393478b8fecSSam Ravnborg add %i0, 0x40, %i0 394478b8fecSSam Ravnborg subcc %g1, 1, %g1 395478b8fecSSam Ravnborg bne,pt %xcc, 1b 396478b8fecSSam Ravnborg add %i1, 0x40, %i1 397478b8fecSSam Ravnborg membar #Sync 398478b8fecSSam Ravnborg wr %g7, 0x0, %asi 399478b8fecSSam Ravnborg ret 400478b8fecSSam Ravnborg restore 4018695c37dSDavid S. MillerENDPROC(xor_niagara_2) 402d3867f04SAl ViroEXPORT_SYMBOL(xor_niagara_2) 403478b8fecSSam Ravnborg 4048695c37dSDavid S. MillerENTRY(xor_niagara_3) /* %o0=bytes, %o1=dest, %o2=src1, %o3=src2 */ 405478b8fecSSam Ravnborg save %sp, -192, %sp 406478b8fecSSam Ravnborg prefetch [%i1], #n_writes 407478b8fecSSam Ravnborg prefetch [%i2], #one_read 408478b8fecSSam Ravnborg prefetch [%i3], #one_read 409478b8fecSSam Ravnborg rd %asi, %g7 410478b8fecSSam Ravnborg wr %g0, ASI_BLK_INIT_QUAD_LDD_P, %asi 411478b8fecSSam Ravnborg srlx %i0, 6, %g1 412478b8fecSSam Ravnborg mov %i1, %i0 413478b8fecSSam Ravnborg mov %i2, %i1 414478b8fecSSam Ravnborg mov %i3, %l7 415478b8fecSSam Ravnborg1: ldda [%i1 + 0x00] %asi, %i2 /* %i2/%i3 = src1 + 0x00 */ 416478b8fecSSam Ravnborg ldda [%i1 + 0x10] %asi, %i4 /* %i4/%i5 = src1 + 0x10 */ 417478b8fecSSam Ravnborg ldda [%l7 + 0x00] %asi, %g2 /* %g2/%g3 = src2 + 0x00 */ 418478b8fecSSam Ravnborg ldda [%l7 + 0x10] %asi, %l0 /* %l0/%l1 = src2 + 0x10 */ 419478b8fecSSam Ravnborg ldda [%i0 + 0x00] %asi, %o0 /* %o0/%o1 = dest + 0x00 */ 420478b8fecSSam Ravnborg ldda [%i0 + 0x10] %asi, %o2 /* %o2/%o3 = dest + 0x10 */ 421478b8fecSSam Ravnborg xor %g2, %i2, %g2 422478b8fecSSam Ravnborg xor %g3, %i3, %g3 423478b8fecSSam Ravnborg xor %o0, %g2, %o0 424478b8fecSSam Ravnborg xor %o1, %g3, %o1 425478b8fecSSam Ravnborg stxa %o0, [%i0 + 0x00] %asi 426478b8fecSSam Ravnborg stxa %o1, [%i0 + 0x08] %asi 427478b8fecSSam Ravnborg ldda [%i1 + 0x20] %asi, %i2 /* %i2/%i3 = src1 + 0x20 */ 428478b8fecSSam Ravnborg ldda [%l7 + 0x20] %asi, %g2 /* %g2/%g3 = src2 + 0x20 */ 429478b8fecSSam Ravnborg ldda [%i0 + 0x20] %asi, %o0 /* %o0/%o1 = dest + 0x20 */ 430478b8fecSSam Ravnborg xor %l0, %i4, %l0 431478b8fecSSam Ravnborg xor %l1, %i5, %l1 432478b8fecSSam Ravnborg xor %o2, %l0, %o2 433478b8fecSSam Ravnborg xor %o3, %l1, %o3 434478b8fecSSam Ravnborg stxa %o2, [%i0 + 0x10] %asi 435478b8fecSSam Ravnborg stxa %o3, [%i0 + 0x18] %asi 436478b8fecSSam Ravnborg ldda [%i1 + 0x30] %asi, %i4 /* %i4/%i5 = src1 + 0x30 */ 437478b8fecSSam Ravnborg ldda [%l7 + 0x30] %asi, %l0 /* %l0/%l1 = src2 + 0x30 */ 438478b8fecSSam Ravnborg ldda [%i0 + 0x30] %asi, %o2 /* %o2/%o3 = dest + 0x30 */ 439478b8fecSSam Ravnborg prefetch [%i1 + 0x40], #one_read 440478b8fecSSam Ravnborg prefetch [%l7 + 0x40], #one_read 441478b8fecSSam Ravnborg prefetch [%i0 + 0x40], #n_writes 442478b8fecSSam Ravnborg xor %g2, %i2, %g2 443478b8fecSSam Ravnborg xor %g3, %i3, %g3 444478b8fecSSam Ravnborg xor %o0, %g2, %o0 445478b8fecSSam Ravnborg xor %o1, %g3, %o1 446478b8fecSSam Ravnborg stxa %o0, [%i0 + 0x20] %asi 447478b8fecSSam Ravnborg stxa %o1, [%i0 + 0x28] %asi 448478b8fecSSam Ravnborg xor %l0, %i4, %l0 449478b8fecSSam Ravnborg xor %l1, %i5, %l1 450478b8fecSSam Ravnborg xor %o2, %l0, %o2 451478b8fecSSam Ravnborg xor %o3, %l1, %o3 452478b8fecSSam Ravnborg stxa %o2, [%i0 + 0x30] %asi 453478b8fecSSam Ravnborg stxa %o3, [%i0 + 0x38] %asi 454478b8fecSSam Ravnborg add %i0, 0x40, %i0 455478b8fecSSam Ravnborg add %i1, 0x40, %i1 456478b8fecSSam Ravnborg subcc %g1, 1, %g1 457478b8fecSSam Ravnborg bne,pt %xcc, 1b 458478b8fecSSam Ravnborg add %l7, 0x40, %l7 459478b8fecSSam Ravnborg membar #Sync 460478b8fecSSam Ravnborg wr %g7, 0x0, %asi 461478b8fecSSam Ravnborg ret 462478b8fecSSam Ravnborg restore 4638695c37dSDavid S. MillerENDPROC(xor_niagara_3) 464d3867f04SAl ViroEXPORT_SYMBOL(xor_niagara_3) 465478b8fecSSam Ravnborg 4668695c37dSDavid S. MillerENTRY(xor_niagara_4) /* %o0=bytes, %o1=dest, %o2=src1, %o3=src2, %o4=src3 */ 467478b8fecSSam Ravnborg save %sp, -192, %sp 468478b8fecSSam Ravnborg prefetch [%i1], #n_writes 469478b8fecSSam Ravnborg prefetch [%i2], #one_read 470478b8fecSSam Ravnborg prefetch [%i3], #one_read 471478b8fecSSam Ravnborg prefetch [%i4], #one_read 472478b8fecSSam Ravnborg rd %asi, %g7 473478b8fecSSam Ravnborg wr %g0, ASI_BLK_INIT_QUAD_LDD_P, %asi 474478b8fecSSam Ravnborg srlx %i0, 6, %g1 475478b8fecSSam Ravnborg mov %i1, %i0 476478b8fecSSam Ravnborg mov %i2, %i1 477478b8fecSSam Ravnborg mov %i3, %l7 478478b8fecSSam Ravnborg mov %i4, %l6 479478b8fecSSam Ravnborg1: ldda [%i1 + 0x00] %asi, %i2 /* %i2/%i3 = src1 + 0x00 */ 480478b8fecSSam Ravnborg ldda [%l7 + 0x00] %asi, %i4 /* %i4/%i5 = src2 + 0x00 */ 481478b8fecSSam Ravnborg ldda [%l6 + 0x00] %asi, %g2 /* %g2/%g3 = src3 + 0x00 */ 482478b8fecSSam Ravnborg ldda [%i0 + 0x00] %asi, %l0 /* %l0/%l1 = dest + 0x00 */ 483478b8fecSSam Ravnborg xor %i4, %i2, %i4 484478b8fecSSam Ravnborg xor %i5, %i3, %i5 485478b8fecSSam Ravnborg ldda [%i1 + 0x10] %asi, %i2 /* %i2/%i3 = src1 + 0x10 */ 486478b8fecSSam Ravnborg xor %g2, %i4, %g2 487478b8fecSSam Ravnborg xor %g3, %i5, %g3 488478b8fecSSam Ravnborg ldda [%l7 + 0x10] %asi, %i4 /* %i4/%i5 = src2 + 0x10 */ 489478b8fecSSam Ravnborg xor %l0, %g2, %l0 490478b8fecSSam Ravnborg xor %l1, %g3, %l1 491478b8fecSSam Ravnborg stxa %l0, [%i0 + 0x00] %asi 492478b8fecSSam Ravnborg stxa %l1, [%i0 + 0x08] %asi 493478b8fecSSam Ravnborg ldda [%l6 + 0x10] %asi, %g2 /* %g2/%g3 = src3 + 0x10 */ 494478b8fecSSam Ravnborg ldda [%i0 + 0x10] %asi, %l0 /* %l0/%l1 = dest + 0x10 */ 495478b8fecSSam Ravnborg 496478b8fecSSam Ravnborg xor %i4, %i2, %i4 497478b8fecSSam Ravnborg xor %i5, %i3, %i5 498478b8fecSSam Ravnborg ldda [%i1 + 0x20] %asi, %i2 /* %i2/%i3 = src1 + 0x20 */ 499478b8fecSSam Ravnborg xor %g2, %i4, %g2 500478b8fecSSam Ravnborg xor %g3, %i5, %g3 501478b8fecSSam Ravnborg ldda [%l7 + 0x20] %asi, %i4 /* %i4/%i5 = src2 + 0x20 */ 502478b8fecSSam Ravnborg xor %l0, %g2, %l0 503478b8fecSSam Ravnborg xor %l1, %g3, %l1 504478b8fecSSam Ravnborg stxa %l0, [%i0 + 0x10] %asi 505478b8fecSSam Ravnborg stxa %l1, [%i0 + 0x18] %asi 506478b8fecSSam Ravnborg ldda [%l6 + 0x20] %asi, %g2 /* %g2/%g3 = src3 + 0x20 */ 507478b8fecSSam Ravnborg ldda [%i0 + 0x20] %asi, %l0 /* %l0/%l1 = dest + 0x20 */ 508478b8fecSSam Ravnborg 509478b8fecSSam Ravnborg xor %i4, %i2, %i4 510478b8fecSSam Ravnborg xor %i5, %i3, %i5 511478b8fecSSam Ravnborg ldda [%i1 + 0x30] %asi, %i2 /* %i2/%i3 = src1 + 0x30 */ 512478b8fecSSam Ravnborg xor %g2, %i4, %g2 513478b8fecSSam Ravnborg xor %g3, %i5, %g3 514478b8fecSSam Ravnborg ldda [%l7 + 0x30] %asi, %i4 /* %i4/%i5 = src2 + 0x30 */ 515478b8fecSSam Ravnborg xor %l0, %g2, %l0 516478b8fecSSam Ravnborg xor %l1, %g3, %l1 517478b8fecSSam Ravnborg stxa %l0, [%i0 + 0x20] %asi 518478b8fecSSam Ravnborg stxa %l1, [%i0 + 0x28] %asi 519478b8fecSSam Ravnborg ldda [%l6 + 0x30] %asi, %g2 /* %g2/%g3 = src3 + 0x30 */ 520478b8fecSSam Ravnborg ldda [%i0 + 0x30] %asi, %l0 /* %l0/%l1 = dest + 0x30 */ 521478b8fecSSam Ravnborg 522478b8fecSSam Ravnborg prefetch [%i1 + 0x40], #one_read 523478b8fecSSam Ravnborg prefetch [%l7 + 0x40], #one_read 524478b8fecSSam Ravnborg prefetch [%l6 + 0x40], #one_read 525478b8fecSSam Ravnborg prefetch [%i0 + 0x40], #n_writes 526478b8fecSSam Ravnborg 527478b8fecSSam Ravnborg xor %i4, %i2, %i4 528478b8fecSSam Ravnborg xor %i5, %i3, %i5 529478b8fecSSam Ravnborg xor %g2, %i4, %g2 530478b8fecSSam Ravnborg xor %g3, %i5, %g3 531478b8fecSSam Ravnborg xor %l0, %g2, %l0 532478b8fecSSam Ravnborg xor %l1, %g3, %l1 533478b8fecSSam Ravnborg stxa %l0, [%i0 + 0x30] %asi 534478b8fecSSam Ravnborg stxa %l1, [%i0 + 0x38] %asi 535478b8fecSSam Ravnborg 536478b8fecSSam Ravnborg add %i0, 0x40, %i0 537478b8fecSSam Ravnborg add %i1, 0x40, %i1 538478b8fecSSam Ravnborg add %l7, 0x40, %l7 539478b8fecSSam Ravnborg subcc %g1, 1, %g1 540478b8fecSSam Ravnborg bne,pt %xcc, 1b 541478b8fecSSam Ravnborg add %l6, 0x40, %l6 542478b8fecSSam Ravnborg membar #Sync 543478b8fecSSam Ravnborg wr %g7, 0x0, %asi 544478b8fecSSam Ravnborg ret 545478b8fecSSam Ravnborg restore 5468695c37dSDavid S. MillerENDPROC(xor_niagara_4) 547d3867f04SAl ViroEXPORT_SYMBOL(xor_niagara_4) 548478b8fecSSam Ravnborg 5498695c37dSDavid S. MillerENTRY(xor_niagara_5) /* %o0=bytes, %o1=dest, %o2=src1, %o3=src2, %o4=src3, %o5=src4 */ 550478b8fecSSam Ravnborg save %sp, -192, %sp 551478b8fecSSam Ravnborg prefetch [%i1], #n_writes 552478b8fecSSam Ravnborg prefetch [%i2], #one_read 553478b8fecSSam Ravnborg prefetch [%i3], #one_read 554478b8fecSSam Ravnborg prefetch [%i4], #one_read 555478b8fecSSam Ravnborg prefetch [%i5], #one_read 556478b8fecSSam Ravnborg rd %asi, %g7 557478b8fecSSam Ravnborg wr %g0, ASI_BLK_INIT_QUAD_LDD_P, %asi 558478b8fecSSam Ravnborg srlx %i0, 6, %g1 559478b8fecSSam Ravnborg mov %i1, %i0 560478b8fecSSam Ravnborg mov %i2, %i1 561478b8fecSSam Ravnborg mov %i3, %l7 562478b8fecSSam Ravnborg mov %i4, %l6 563478b8fecSSam Ravnborg mov %i5, %l5 564478b8fecSSam Ravnborg1: ldda [%i1 + 0x00] %asi, %i2 /* %i2/%i3 = src1 + 0x00 */ 565478b8fecSSam Ravnborg ldda [%l7 + 0x00] %asi, %i4 /* %i4/%i5 = src2 + 0x00 */ 566478b8fecSSam Ravnborg ldda [%l6 + 0x00] %asi, %g2 /* %g2/%g3 = src3 + 0x00 */ 567478b8fecSSam Ravnborg ldda [%l5 + 0x00] %asi, %l0 /* %l0/%l1 = src4 + 0x00 */ 568478b8fecSSam Ravnborg ldda [%i0 + 0x00] %asi, %l2 /* %l2/%l3 = dest + 0x00 */ 569478b8fecSSam Ravnborg xor %i4, %i2, %i4 570478b8fecSSam Ravnborg xor %i5, %i3, %i5 571478b8fecSSam Ravnborg ldda [%i1 + 0x10] %asi, %i2 /* %i2/%i3 = src1 + 0x10 */ 572478b8fecSSam Ravnborg xor %g2, %i4, %g2 573478b8fecSSam Ravnborg xor %g3, %i5, %g3 574478b8fecSSam Ravnborg ldda [%l7 + 0x10] %asi, %i4 /* %i4/%i5 = src2 + 0x10 */ 575478b8fecSSam Ravnborg xor %l0, %g2, %l0 576478b8fecSSam Ravnborg xor %l1, %g3, %l1 577478b8fecSSam Ravnborg ldda [%l6 + 0x10] %asi, %g2 /* %g2/%g3 = src3 + 0x10 */ 578478b8fecSSam Ravnborg xor %l2, %l0, %l2 579478b8fecSSam Ravnborg xor %l3, %l1, %l3 580478b8fecSSam Ravnborg stxa %l2, [%i0 + 0x00] %asi 581478b8fecSSam Ravnborg stxa %l3, [%i0 + 0x08] %asi 582478b8fecSSam Ravnborg ldda [%l5 + 0x10] %asi, %l0 /* %l0/%l1 = src4 + 0x10 */ 583478b8fecSSam Ravnborg ldda [%i0 + 0x10] %asi, %l2 /* %l2/%l3 = dest + 0x10 */ 584478b8fecSSam Ravnborg 585478b8fecSSam Ravnborg xor %i4, %i2, %i4 586478b8fecSSam Ravnborg xor %i5, %i3, %i5 587478b8fecSSam Ravnborg ldda [%i1 + 0x20] %asi, %i2 /* %i2/%i3 = src1 + 0x20 */ 588478b8fecSSam Ravnborg xor %g2, %i4, %g2 589478b8fecSSam Ravnborg xor %g3, %i5, %g3 590478b8fecSSam Ravnborg ldda [%l7 + 0x20] %asi, %i4 /* %i4/%i5 = src2 + 0x20 */ 591478b8fecSSam Ravnborg xor %l0, %g2, %l0 592478b8fecSSam Ravnborg xor %l1, %g3, %l1 593478b8fecSSam Ravnborg ldda [%l6 + 0x20] %asi, %g2 /* %g2/%g3 = src3 + 0x20 */ 594478b8fecSSam Ravnborg xor %l2, %l0, %l2 595478b8fecSSam Ravnborg xor %l3, %l1, %l3 596478b8fecSSam Ravnborg stxa %l2, [%i0 + 0x10] %asi 597478b8fecSSam Ravnborg stxa %l3, [%i0 + 0x18] %asi 598478b8fecSSam Ravnborg ldda [%l5 + 0x20] %asi, %l0 /* %l0/%l1 = src4 + 0x20 */ 599478b8fecSSam Ravnborg ldda [%i0 + 0x20] %asi, %l2 /* %l2/%l3 = dest + 0x20 */ 600478b8fecSSam Ravnborg 601478b8fecSSam Ravnborg xor %i4, %i2, %i4 602478b8fecSSam Ravnborg xor %i5, %i3, %i5 603478b8fecSSam Ravnborg ldda [%i1 + 0x30] %asi, %i2 /* %i2/%i3 = src1 + 0x30 */ 604478b8fecSSam Ravnborg xor %g2, %i4, %g2 605478b8fecSSam Ravnborg xor %g3, %i5, %g3 606478b8fecSSam Ravnborg ldda [%l7 + 0x30] %asi, %i4 /* %i4/%i5 = src2 + 0x30 */ 607478b8fecSSam Ravnborg xor %l0, %g2, %l0 608478b8fecSSam Ravnborg xor %l1, %g3, %l1 609478b8fecSSam Ravnborg ldda [%l6 + 0x30] %asi, %g2 /* %g2/%g3 = src3 + 0x30 */ 610478b8fecSSam Ravnborg xor %l2, %l0, %l2 611478b8fecSSam Ravnborg xor %l3, %l1, %l3 612478b8fecSSam Ravnborg stxa %l2, [%i0 + 0x20] %asi 613478b8fecSSam Ravnborg stxa %l3, [%i0 + 0x28] %asi 614478b8fecSSam Ravnborg ldda [%l5 + 0x30] %asi, %l0 /* %l0/%l1 = src4 + 0x30 */ 615478b8fecSSam Ravnborg ldda [%i0 + 0x30] %asi, %l2 /* %l2/%l3 = dest + 0x30 */ 616478b8fecSSam Ravnborg 617478b8fecSSam Ravnborg prefetch [%i1 + 0x40], #one_read 618478b8fecSSam Ravnborg prefetch [%l7 + 0x40], #one_read 619478b8fecSSam Ravnborg prefetch [%l6 + 0x40], #one_read 620478b8fecSSam Ravnborg prefetch [%l5 + 0x40], #one_read 621478b8fecSSam Ravnborg prefetch [%i0 + 0x40], #n_writes 622478b8fecSSam Ravnborg 623478b8fecSSam Ravnborg xor %i4, %i2, %i4 624478b8fecSSam Ravnborg xor %i5, %i3, %i5 625478b8fecSSam Ravnborg xor %g2, %i4, %g2 626478b8fecSSam Ravnborg xor %g3, %i5, %g3 627478b8fecSSam Ravnborg xor %l0, %g2, %l0 628478b8fecSSam Ravnborg xor %l1, %g3, %l1 629478b8fecSSam Ravnborg xor %l2, %l0, %l2 630478b8fecSSam Ravnborg xor %l3, %l1, %l3 631478b8fecSSam Ravnborg stxa %l2, [%i0 + 0x30] %asi 632478b8fecSSam Ravnborg stxa %l3, [%i0 + 0x38] %asi 633478b8fecSSam Ravnborg 634478b8fecSSam Ravnborg add %i0, 0x40, %i0 635478b8fecSSam Ravnborg add %i1, 0x40, %i1 636478b8fecSSam Ravnborg add %l7, 0x40, %l7 637478b8fecSSam Ravnborg add %l6, 0x40, %l6 638478b8fecSSam Ravnborg subcc %g1, 1, %g1 639478b8fecSSam Ravnborg bne,pt %xcc, 1b 640478b8fecSSam Ravnborg add %l5, 0x40, %l5 641478b8fecSSam Ravnborg membar #Sync 642478b8fecSSam Ravnborg wr %g7, 0x0, %asi 643478b8fecSSam Ravnborg ret 644478b8fecSSam Ravnborg restore 6458695c37dSDavid S. MillerENDPROC(xor_niagara_5) 646d3867f04SAl ViroEXPORT_SYMBOL(xor_niagara_5) 647