* ========== Copyright Header Begin ==========================================
* OpenSPARC T2 Processor File: PCIeMem64Rd.s
* Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved
* 4150 Network Circle, Santa Clara, California 95054, U.S.A.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; version 2 of the License.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* For the avoidance of doubt, and except that if any non-GPL license
* choice is available it will apply instead, Sun elects to use only
* the General Public License version 2 (GPLv2) at this time for any
* software where a choice of GPL license versions is made
* available with the language indicating that GPLv2 or any later version
* may be used, or where a choice of which version of the GPL is applied is
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* ========== Copyright Header End ============================================
#define PCIE_MEM64_OFFSET 0xc800000000
#define ENABLE_PCIE_LINK_TRAINING
#define MAIN_PAGE_HV_ALSO
! the default MEM64 OFFSET is 100000000. It is ORed with the base in the data section stmt
#define MEM64_BASE mpeval(N2_PCIE_BASE_ADDR + MEM64_OFFSET_BASE_REG_DATA)
! a set of defines for which set each of the bits 39:32
#define MEM64_RD_ADR01 mpeval(MEM64_BASE | 0x0100000000 + 0x00)
#define MEM64_RD_ADR02 mpeval(MEM64_BASE | 0x0200000000 + 0x20)
#define MEM64_RD_ADR04 mpeval(MEM64_BASE | 0x0400000000 + 0x40)
#define MEM64_RD_ADR00 mpeval(MEM64_BASE | 0x0000000000 + 0x60)
#define BNE_TEST_FAIL bne test_failed
#define BNE_TEST_FAIL nop
/************************************************************************
************************************************************************/
! select a MEM address in PCI address range and transmit the command to NCU
! 1 byte loads, all 16 offsets
setx MEM64_RD_ADR01, %g1, %g2
nop ! $EV trig_pc_d(1, @VA(.MAIN.byte_os0)) -> printf("\n byte_os0 \n")
! load half-word, 8 offsets within 16 bytes
setx MEM64_RD_ADR02, %g1, %g2
nop ! $EV trig_pc_d(1, @VA(.MAIN.halfwd_os0)) -> printf("\n halfwd_os0 \n")
! Load word, 4 offsets within 16 bytes
setx MEM64_RD_ADR04, %g1, %g2
nop ! $EV trig_pc_d(1, @VA(.MAIN.fullwd_os0)) -> printf("\n fullwd_os0 \n")
setx 0x40414243, %g1, %g4
setx 0x44454647, %g1, %g4
setx 0x48494a4b, %g1, %g4
setx 0x4c4d4e4f, %g1, %g4
! Load dword (8 bytes), 2 offsets within 16 bytes
setx MEM64_RD_ADR00, %g1, %g2
nop ! $EV trig_pc_d(1, @VA(.MAIN.dblwd_os0)) -> printf("\n dblwd_os0 \n")
setx 0x5051525354555657, %g1, %g4
setx 0x58595a5b5c5d5e5f, %g1, %g5
/************************************************************************
DATA0 - DATA3 are expected pio fetch areas
DATAa - DATAc are for diagnosing incorrect pio fetches
************************************************************************/
SECTION .DATAa DATA_VA=0xC000000000
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
.xword 0xc0c0c0c0c0c0c0c0
SECTION .DATAb DATA_VA=0xC100000000
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
.xword 0xc1c1c1c1c1c1c1c1
SECTION .DATAc DATA_VA=0x0100000000
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
.xword 0x0101010101010101
SECTION .DATA0 DATA_VA=mpeval(MEM64_RD_ADR01 | PCIE_MEM64_OFFSET)
.xword 0x1011121314151617
.xword 0x18191a1b1c1d1e1f
.xword 0x1011121314151617
.xword 0x18191a1b1c1d1e1f
SECTION .DATA1 DATA_VA=mpeval(MEM64_RD_ADR02 | PCIE_MEM64_OFFSET)
.xword 0x2021222324252627
.xword 0x28292a2b2c2d2e2f
.xword 0x2021222324252627
.xword 0x28292a2b2c2d2e2f
SECTION .DATA2 DATA_VA=mpeval(MEM64_RD_ADR04 | PCIE_MEM64_OFFSET)
.xword 0x4041424344454647
.xword 0x48494a4b4c4d4e4f
.xword 0x4041424344454647
.xword 0x48494a4b4c4d4e4f
SECTION .DATA3 DATA_VA=mpeval(MEM64_RD_ADR00 | PCIE_MEM64_OFFSET)
.xword 0x5051525354555657
.xword 0x58595a5b5c5d5e5f
.xword 0x5051525354555657
.xword 0x58595a5b5c5d5e5f
/************************************************************************/