bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: LOGID 193153: Power-elf problems - IBM PowerPC 440 Star IP


From: Duncan Irving
Subject: Re: LOGID 193153: Power-elf problems - IBM PowerPC 440 Star IP
Date: Thu, 12 Feb 2004 15:09:34 -0500
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1

Problem was found with version of GNU assembler , I was using version 2.14 package and had the problem described below, I fetched version 2.13 and all compiles properly now!

I was using the package GNU assembler listed below on Linux RH 7.2 and I could not compile the tlbwe or tlbre PowerPC booke instructions.

> powerpc-elf-as -version
GNU assembler 2.14 20030612
Copyright 2002 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License.  This program has absolutely no warranty.
This assembler was configured for a target of `powerpc-elf'.

I've attached the failing source code for debuging version 2.14

Thanks,

   Duncan Irving


--
Senior Silicon Verification Engineer
Seaway Networks One Chrysalis Way, Suite 300
Ottawa, Ontario, K2G 6P9
Tel: 613-723-9161 ext 4063
Fax: 613-723-8244



address@hidden wrote:

Dear Duncan Irving,

We received email regarding "Power-elf problems - IBM PowerPC 440 Star IP


A log has been opened for your issue  and  assigned  to a Support Center Engr.

The LOGID of this call is LOGID : 193153


For future support requests, please open your call by using "Enter A Call" at http://solvnet.synopsys.com/EnterACall.
"Enter A Call" is the fastest way to get support for new requests.

               __________________________


When corresponding with the Synopsys Support Center (address@hidden) about this 
issue, please include the LOGID number in the subject line.

Example:
Subject:  LOGID XXXXXX : testcase included


Regards,
Abra Lusk

Synopsys Support Center (North America)
  Web: http://www.synopsys.com/support/support.html  (for FASTEST response!)
  Phone : 800-245-8005, 650-584-4200
  Email : address@hidden
Have you used SolvNET, our on-line knowledgebase ?
http://www.synopsys.com/   Click on SolvNET


From: "Dwight Eddy" <address@hidden>
To: "Support_Center_HLD" <address@hidden>
Subject: FW: Power-elf problems
Date: Thu, 12 Feb 2004 11:02:09 -0500

1.      
Please open a new support call for Duncan Irving
at Seaway Networks. He is using the DW_IBM440 Verification IP
on Linux RH 7.2 and can not compile has assembler code.

Please contact Duncan directly and copy me on all email

Thanks, your quick attention will be appreciated. He
tried to contact me while I have been traveling.

---------------
Dwight Eddy                     Synopsys
Staff Application Consultant 377 Simarano Drive Verification Specialist Suite 300
Tel:    508-263-8094            Marlborough, Ma 01752
Fax: 508-263-8090 email: address@hidden Cell: 603-785-8160 http://www.synopsys.com
Ottawa: 613-221-8621            http://solvnet.synopsys.com
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Web Support           : http://solvnet.synopsys.com/EnterACall  
Support Center : (800) 245-8005 or address@hidden --=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-



-----Original Message-----
From: Duncan Irving [mailto:address@hidden
Sent: Wednesday, February 11, 2004 10:22 AM
To: address@hidden
Subject: Power-elf problems


Dwight,

Thanks for your help in getting the simulation's started, I'm now executing the testcases provided with the PowerPC core kit, I would like to add some of my own testcase and I'm trying to follow the power-elf compile options but I'm getting the following problems, I'm wondering if you could provide me with some help to resolve these?

These errors occurred on one of the testcases provide in the kit? So I don't think it's a coding issue, could it be a tool/OS issue?

Any help would be greatly appreciated, Thanks,

   Duncan

powerpc-elf-as -als=PPC440.dcba.7.1.4.o.lst -m booke -I. -o PPC440.dcba.7.1.4.o PPC440.dcba.7.1.4.s
./sysini.s: Assembler messages:
./sysini.s:578: Error: junk at end of line: `r0,r5,0'
./sysini.s:796: Error: junk at end of line: `r4,r3,0'
./sysini.s:797: Error: junk at end of line: `r5,r3,1'
./sysini.s:798: Error: junk at end of line: `r6,r3,2'
PPC440.dcba.7.1.4.s:50: Error: junk at end of line: `r12,r11,0'
PPC440.dcba.7.1.4.s:52: Error: junk at end of line: `r12,r11,1'
PPC440.dcba.7.1.4.s:54: Error: junk at end of line: `r12,r11,2'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r4,r3,0'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r5,r3,1'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r6,r3,2'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r4,r3,0'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r5,r3,1'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r6,r3,2'


2.      Power-elf problems
From: "Duncan Irving" <address@hidden>
To: <address@hidden>
Subject: Power-elf problems
Date: Wed, 11 Feb 2004 10:22:16 -0500

Dwight,

Thanks for your help in getting the simulation's started, I'm now executing the testcases provided with the PowerPC core kit, I would like to add some of my own testcase and I'm trying to follow the power-elf compile options but I'm getting the following problems, I'm wondering if you could provide me with some help to resolve these?

These errors occurred on one of the testcases provide in the kit? So I don't think it's a coding issue, could it be a tool/OS issue?

Any help would be greatly appreciated, Thanks,

   Duncan

powerpc-elf-as -als=PPC440.dcba.7.1.4.o.lst -m booke -I. -o PPC440.dcba.7.1.4.o PPC440.dcba.7.1.4.s
./sysini.s: Assembler messages:
./sysini.s:578: Error: junk at end of line: `r0,r5,0'
./sysini.s:796: Error: junk at end of line: `r4,r3,0'
./sysini.s:797: Error: junk at end of line: `r5,r3,1'
./sysini.s:798: Error: junk at end of line: `r6,r3,2'
PPC440.dcba.7.1.4.s:50: Error: junk at end of line: `r12,r11,0'
PPC440.dcba.7.1.4.s:52: Error: junk at end of line: `r12,r11,1'
PPC440.dcba.7.1.4.s:54: Error: junk at end of line: `r12,r11,2'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r4,r3,0'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r5,r3,1'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r6,r3,2'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r4,r3,0'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r5,r3,1'
PPC440.dcba.1.1.4.s:99: Error: junk at end of line: `r6,r3,2'





# 
# ************************************************************************** 
# 
#  Copyright (c) International Business Machines Corporation, 2002. 
# 
#  This file contains trade secrets and other proprietary and confidential 
#  information of International Business Machines Corporation which are 
#  protected by copyright and other intellectual property rights and shall 
#  not be reproduced, transferred to other documents, disclosed to others, 
#  or used for any purpose except as specifically authorized in writing by 
#  International Business Machines Corporation. This notice must be 
#  contained as part of this text at all times. 
# 
# ************************************************************************** 
#

 # Start-up function for an embedded environment
 # The size of this program is approximately 400 bytes plus wee need to 
allocate interrupt handlers
 # ie., another 4096 bytes. So, the initial page size should be 5 KB

  .file       "sysini.s"

 
#------------------------------------------------------------------------------#
 # Macros for use in testcases                                                  
#
 
#------------------------------------------------------------------------------#
.macro EPILOG                                    # sets pass and fail detection 
values for testfixture

pass:
  .p2alignl   4,0x60000000
  b           S12345                             # Success: Branch around 
NOPs...
  nop                                            # Move away one cache line...
  nop                                            # .

S12345:
 # Set up entry 1 in TLB                         # Modify to map tlb(1)
  addi        r3,r0,0x0001                       # tlb entry number
  addis       r4,r0,0x0000
  ori         r4,r4,0x0250                       # EPN = '00000Xs', V=1(Valid), 
TM=0 (Normal mode??), Size=1MB
  addis       r5,r0,0x0000
  ori         r5,r5,0x0000                       # RPN = '00000Xs', 6'b0, ERPN 
= 4'b0000
  addi        r6,r0,0x083f                       # 16'b0, U0-U3=0, 
WIMGE=5b'10000, 1'b0, UX/UW/UR/SX/SW/SR = 0x3f (enabled)
  tlbwe       r4,r3,0                            # Write word 0 of TLB Entry
  tlbwe       r5,r3,1                            # Write word 1 of TLB Entry
  tlbwe       r6,r3,2                            # Write word 2 of TLB Entry
  isync
  addis       r2,r0,0xC00D                       # Load SPRG3 and DBDR with 
0xC00DF00D...
  ori         r2,r2,0xF00D                       # .
  ori         r7,r0,0x0010                       # .
  stwx        r2,r0,r7                           # .
  mtspr       SPRG3,r2                           # .
  mtspr       DBDR,r2                            # .
  b           setepidb                           # Setup Debug and wait for 
JTAG to take control...

ERROR:
 # Set up entry 1 in TLB                         # Modify to map tlb(1)
  addi        r3,r0,0x0001                       # tlb entry number
  addis       r4,r0,0x0000
  ori         r4,r4,0x0250                       # EPN = '00000Xs', V=1(Valid), 
TM=0 (Normal mode??), Size=1MB
  addis       r5,r0,0x0000
  ori         r5,r5,0x0000                       # RPN = '00000Xs', 6'b0, ERPN 
= 4'b0000
  addi        r6,r0,0x083f                       # 16'b0, U0-U3=0, 
WIMGE=5b'10000, 1'b0, UX/UW/UR/SX/SW/SR = 0x3f (enabled)
  tlbwe       r4,r3,0                            # Write word 0 of TLB Entry
  tlbwe       r5,r3,1                            # Write word 1 of TLB Entry
  tlbwe       r6,r3,2                            # Write word 2 of TLB Entry
  isync
  addis       r2,r0,0xDEAD                       # Failure: Load SPRG3 and DBDR 
with 0xDEADBEEF...
  ori         r2,r2,0xBEEF                       # .
  ori         r7,r0,0x0010                       # .
  stwx        r2,r0,r7                           # .
  mtspr       SPRG3,r2                           # .
  mtspr       DBDR,r2                            # .

setepidb:
  addi        2,0,0x0000                         # Make sure all Debug Events 
are off...
  mtspr       DBCR0,r2
  addi        r2,r0,0xFFFFFFFF                   # Reset the DBSR...
  mtspr       DBSR,r2                            # .
  addis       r2,r0,0x8004                       # Put JTAG in External Mode, 
freeze timers...
  mtspr       DBCR0,r2
  addis       r2,r0,0x0810                       # Force unconditional, 
imprecise Debug Event...
  mtspr       DBSRS,r2                           # .
  .p2alignl   4,0x60000000
  b           $                                  # Loop and wait for JTAG to 
take control...
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  .p2alignl   4,0x60000000
.endm

.macro FAILTEST                                  # Used by unexpected interrupt 
routines to fail the testcase
  addis       r2,r0,0xDEAD                       # Failure: Load SPRG3 and DBDR 
with 0xDEADBEEF...
  ori         r2,r2,0xBEEF                       # .
  mtspr       SPRG3,r2                           # .
  mtspr       DBDR,r2                            # .
  addi        r2,r0,0x0000                       # Make sure all Debug Events 
are off...
  mtspr       DBCR0,r2
  addi        r2,r0,0xFFFFFFFF                   # Reset the DBSR...
  mtspr       DBSR,r2                            # .
  addis       r2,r0,0x8004                       # Put JTAG in External Mode, 
freeze timers...
  mtspr       DBCR0,r2
  addis       r2,r0,0x0810                       # Force unconditional, 
imprecise Debug Event...
  mtspr       DBSRS,r2                           # .
  b           $                                  # Loop and wait for JTAG to 
take control...
.endm

#============= Instructions not supported by assembler codes as macros 
==========================

.macro DCCCI RA,RB
  .long 0x7c000000 | (\RA<<16) | (\RB<<11) | (454<<1)
.endm
.macro DLMZB RA,RS,RB
  .long 0x7c000000 | (\RS<<21) | (\RA<<16) | (\RB<<11) | (78<<1)
.endm
.macro DLMZBDOT RA,RS,RB
  .long 0x7c000000 | (\RS<<21) | (\RA<<16) | (\RB<<11) | (78<<1) | 1
.endm
.macro ICCCI RA,RB
  .long 0x7c000000 | (\RA<<16) | (\RB<<11) | (966<<1)
.endm
.macro ICREAD RA,RB
  .long 0x7c000000 | (\RA<<16) | (\RB<<11) | (998<<1)
.endm
.macro ISEL RT,RA,RB,CRb
  .long 0x7c000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (\CRb<<6) | (15<<1)
.endm
.macro DCREAD RT,RA,RB
  .long 0x7C000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (486<<1)
.endm
.macro RFMCI
  .long 0x4c000000 | (38<<1)
.endm
.macro TLBSX RT,RA,RB
  .long 0x7C000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (914<<1)
.endm
.macro TLBSXDOT RT,RA,RB
  .long 0x7C000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (914<<1) | 1
.endm
.macro MACCHW RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (172<<1)
.endm
.macro MACCHWDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (172<<1) | 1
.endm
.macro MACCHWO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (172<<1)
.endm
.macro MACCHWODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (172<<1) | 1
.endm
.macro MACCHWS RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (236<<1)
.endm
.macro MACCHWSDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (236<<1) | 1
.endm
.macro MACCHWSO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (236<<1)
.endm
.macro MACCHWSODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (236<<1) | 1
.endm
.macro MACCHWSU RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (204<<1)
.endm
.macro MACCHWSUDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (204<<1) | 1
.endm
.macro MACCHWSUO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (204<<1)
.endm
.macro MACCHWSUODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (204<<1) | 1
.endm
.macro MACCHWU RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (140<<1)
.endm
.macro MACCHWUDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (140<<1) | 1
.endm
.macro MACCHWUO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (140<<1)
.endm
.macro MACCHWUODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (140<<1) | 1
.endm
.macro MACHHW RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (44<<1)
.endm
.macro MACHHWDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (44<<1) | 1
.endm
.macro MACHHWO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (44<<1)
.endm
.macro MACHHWODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (44<<1) | 1
.endm
.macro MACHHWS RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (108<<1)
.endm
.macro MACHHWSDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (108<<1) | 1
.endm
.macro MACHHWSO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (108<<1)
.endm
.macro MACHHWSODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (108<<1) | 1
.endm
.macro MACHHWSU RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (76<<1)
.endm
.macro MACHHWSUDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (76<<1) | 1
.endm
.macro MACHHWSUO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (76<<1)
.endm
.macro MACHHWSUODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (76<<1) | 1
.endm
.macro MACHHWU RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (12<<1)
.endm
.macro MACHHWUDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (12<<1) | 1
.endm
.macro MACHHWUO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (12<<1)
.endm
.macro MACHHWUODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (12<<1) | 1
.endm
.macro MACLHW RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (428<<1)
.endm
.macro MACLHWDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (428<<1) | 1
.endm
.macro MACLHWO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (428<<1)
.endm
.macro MACLHWODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (428<<1) | 1
.endm
.macro MACLHWS RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (492<<1)
.endm
.macro MACLHWSDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (492<<1) | 1
.endm
.macro MACLHWSO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (492<<1)
.endm
.macro MACLHWSODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (492<<1) | 1
.endm
.macro MACLHWSU RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (460<<1)
.endm
.macro MACLHWSUDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (460<<1) | 1
.endm
.macro MACLHWSUO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (460<<1)
.endm
.macro MACLHWSUODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (460<<1) | 1
.endm
.macro MACLHWU RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (396<<1)
.endm
.macro MACLHWUDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (396<<1) | 1
.endm
.macro MACLHWUO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (396<<1)
.endm
.macro MACLHWUODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (396<<1) | 1
.endm
.macro MULHHW RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (40<<1)
.endm
.macro MULHHWDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (40<<1) | 1
.endm
.macro MULHHWU RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (8<<1)
.endm
.macro MULHHWUDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (8<<1) | 1
.endm
.macro MULCHW RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (168<<1)
.endm
.macro MULCHWDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (168<<1) | 1
.endm
.macro MULCHWU RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (136<<1)
.endm
.macro MULCHWUDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (136<<1) | 1
.endm
.macro MULLHW RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (424<<1)
.endm
.macro MULLHWDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (424<<1) | 1
.endm
.macro MULLHWU RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (392<<1)
.endm
.macro MULLHWUDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (392<<1) | 1
.endm
.macro NMACCHW RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (174<<1)
.endm
.macro NMACCHWDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (174<<1) | 1
.endm
.macro NMACCHWO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (174<<1)
.endm
.macro NMACCHWODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (174<<1) | 1
.endm
.macro NMACCHWS RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (238<<1)
.endm
.macro NMACCHWSDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (238<<1) | 1
.endm
.macro NMACCHWSO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (238<<1)
.endm
.macro NMACCHWSODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (238<<1) | 1
.endm
.macro NMACHHW RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (46<<1)
.endm
.macro NMACHHWDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (46<<1) | 1
.endm
.macro NMACHHWO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (46<<1)
.endm
.macro NMACHHWODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (46<<1) | 1
.endm
.macro NMACHHWS RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (110<<1)
.endm
.macro NMACHHWSDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (110<<1) | 1
.endm
.macro NMACHHWSO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (110<<1)
.endm
.macro NMACHHWSODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (110<<1) | 1
.endm
.macro NMACLHW RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (430<<1)
.endm
.macro NMACLHWDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (430<<1) | 1
.endm
.macro NMACLHWO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (430<<1)
.endm
.macro NMACLHWODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (430<<1) | 1
.endm
.macro NMACLHWS RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (494<<1)
.endm
.macro NMACLHWSDOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (494<<1) | 1
.endm
.macro NMACLHWSO RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (494<<1)
.endm
.macro NMACLHWSODOT RT,RA,RB
  .long 0x10000000 | (\RT<<21) | (\RA<<16) | (\RB<<11) | (1<<10) | (494<<1) | 1
.endm

 
#------------------------------------------------------------------------------#
 # END OF MACRO DEFINITIONS                                                     
#
 
#------------------------------------------------------------------------------#
 
#------------------------------------------------------------------------------#
 # General Purpose Registers...                                                 
#
 
#------------------------------------------------------------------------------#
  .set        r0,0
  .set        r1,1
  .set        r2,2
  .set        r3,3
  .set        r4,4
  .set        r5,5
  .set        r6,6
  .set        r7,7
  .set        r8,8
  .set        r9,9
  .set        r10,10
  .set        r11,11
  .set        r12,12
  .set        r13,13
  .set        r14,14
  .set        r15,15
  .set        r16,16
  .set        r17,17
  .set        r18,18
  .set        r19,19
  .set        r20,20
  .set        r21,21
  .set        r22,22
  .set        r23,23
  .set        r24,24
  .set        r25,25
  .set        r26,26
  .set        r27,27
  .set        r28,28
  .set        r29,29
  .set        r30,30
  .set        r31,31
 
#------------------------------------------------------------------------------#
 # Special Purpose Registers...                                                 
#
 
#------------------------------------------------------------------------------#
  .set        XER,0x0001                         # Fixed Point Exception 
Register
  .set        LR,0x0008                          # Link Register
  .set        CTR,0x0009                         # Count Register
  .set        DEC,0x0016                         # DECrementer
  .set        SRR0,0x001A                        # Save/Restore Register 0
  .set        SRR1,0x001B                        # Save/Restore Register 1
  .set        PID,0x0030                         # Processor ID Register
  .set        DECAR,0x0036                       # DECrementer Auto Reload
  .set        CSRR0,0x003A                       # Critical Save/Restore 
Register 0
  .set        CSRR1,0x003B                       # Critical Save/Restore 
Register 1
  .set        DEAR,0x003D                        # Data Error Address Register 
NEWADDR
  .set        ESR,0x003E                         # Error Syndrome Register     
NEWADDR
  .set        IVPR,0x003F                        # Interrupt Vector Prefix 
Register
  .set        USPRG0,0x0100                      # User Special Purpose Reg 
General 0
  .set        SPRG4,0x0104                       # SPR General 4
  .set        SPRG5,0x0105                       # SPR General 5
  .set        SPRG6,0x0106                       # SPR General 6
  .set        SPRG7,0x0107                       # SPR General 7
  .set        TBL,0x010C                         # Time Base Low (Read)
  .set        TBU,0x010D                         # Time Base High (Read)
  .set        SPRG0,0x0110                       # SPR General 0
  .set        SPRG1,0x0111                       # SPR General 1
  .set        SPRG2,0x0112                       # SPR General 2
  .set        SPRG3,0x0113                       # SPR General 3
  .set        SPRG4W,0x0114                      # Special Purpose Reg General 
4 (Write)
  .set        SPRG5W,0x0115                      # Special Purpose Reg General 
4 (Write)
  .set        SPRG6W,0x0116                      # Special Purpose Reg General 
4 (Write)
  .set        SPRG7W,0x0117                      # Special Purpose Reg General 
4 (Write)
  .set        TBLW,0x011C                        # Time Base Low (Write)
  .set        TBUW,0x011D                        # Time Base High (Write)
  .set        PIR,0x011E                         # Processor Identification 
Register         
  .set        PVR,0x011F                         # Processor Version Register
  .set        DBSR,0x0130                        # Debug Status Register
  .set        DBCR0,0x0134                       # Debug Control Register 0
  .set        DBCR1,0x0135                       # Debug Control Register 1
  .set        DBCR2,0x0136                       # Debug Control Register 2
  .set        IAC1,0x0138                        # Instruction Address Compare 
Register 1
  .set        IAC2,0x0139                        # Instruction Address Compare 
Register 2
  .set        IAC3,0x013A                        # Instruction Address Compare 
Register 3
  .set        IAC4,0x013B                        # Instruction Address Compare 
Register 4
  .set        DAC1,0x013C                        # Data Address Compare 
Register 1
  .set        DAC2,0x013D                        # Data Address Compare 
Register 2
  .set        DVC1,0x013E                        # Data Value Compare Register 1
  .set        DVC2,0x013F                        # Data Value Compare Register 2
  .set        TSR,0x0150                         # Timer Status Register
  .set        TCR,0x0154                         # Timer Control Register
  .set        IVOR0,0x0190                       # Interrupt Vector Offset 
Register 0
  .set        IVOR1,0x0191                       # Interrupt Vector Offset 
Register 1
  .set        IVOR2,0x0192                       # Interrupt Vector Offset 
Register 2
  .set        IVOR3,0x0193                       # Interrupt Vector Offset 
Register 3
  .set        IVOR4,0x0194                       # Interrupt Vector Offset 
Register 4
  .set        IVOR5,0x0195                       # Interrupt Vector Offset 
Register 5
  .set        IVOR6,0x0196                       # Interrupt Vector Offset 
Register 6
  .set        IVOR7,0x0197                       # Interrupt Vector Offset 
Register 7
  .set        IVOR8,0x0198                       # Interrupt Vector Offset 
Register 8
  .set        IVOR9,0x0199                       # Interrupt Vector Offset 
Register 9
  .set        IVOR10,0x019A                      # Interrupt Vector Offset 
Register 10
  .set        IVOR11,0x019B                      # Interrupt Vector Offset 
Register 11
  .set        IVOR12,0x019C                      # Interrupt Vector Offset 
Register 12
  .set        IVOR13,0x019D                      # Interrupt Vector Offset 
Register 13
  .set        IVOR14,0x019E                      # Interrupt Vector Offset 
Register 14
  .set        IVOR15,0x019F                      # Interrupt Vector Offset 
Register 15
  .set        MCSRR0,0x23A                       # Machine Check Save Restore 
Register 0
  .set        MCSRR1,0x23B                       # Machine Check Save Restroe 
Register 1
  .set        MCSR,0x23C                         # Machine Check Status Register
  .set        DBSRS,0x0330                       # Debug Status Register (Set 
Address)
  .set        TSRS,0x0350                        # Timer Status Register (Set 
Address)
  .set        INV0,0x0370                        # Instruction cache Normal 
Victim 0
  .set        INV1,0x0371                        # Instruction cache Normal 
Victim 1
  .set        INV2,0x0372                        # Instruction cache Normal 
Victim 2
  .set        INV3,0x0373                        # Instruction cache Normal 
Victim 3
  .set        ITV0,0x0374                        # Instruction cache Transient 
Victim 0
  .set        ITV1,0x0375                        # Instruction cache Transient 
Victim 1
  .set        ITV2,0x0376                        # Instruction cache Transient 
Victim 2
  .set        ITV3,0x0377                        # Instruction cache Transient 
Victim 3
  .set        CCR1,0x0378                        # Core Configuration Register 1
  .set        DNV0,0x0390                        # Data cache Normal Victim 0
  .set        DNV1,0x0391                        # Data cache Normal Victim 1
  .set        DNV2,0x0392                        # Data cache Normal Victim 2
  .set        DNV3,0x0393                        # Data cache Normal Victim 3
  .set        DTV0,0x0394                        # Data cache Transient Victim 0
  .set        DTV1,0x0395                        # Data cache Transient Victim 1
  .set        DTV2,0x0396                        # Data cache Transient Victim 2
  .set        DTV3,0x0397                        # Data cache Transient Victim 3
  .set        DVLIM,0x0398                       # Data Cache Victim Limit
  .set        IVLIM,0x0399                       # Instruction Cache Victim 
Limit
  .set        DCDBTRL,0x039C                     # Data Cache Debug Tag Reg Low
  .set        DCDBTRH,0x039D                     # Data Cache Debug Tag Reg High
  .set        ICDBTRL,0x039E                     # Instruction Cache Debug Tag 
Reg Low
  .set        ICDBTRH,0x039F                     # Instruction Cache Debug Tag 
Reg High
  .set        MMUCR,0x03B2                       # MMU Control Register
  .set        CCR0,0x03B3                        # Core Configuration Register
  .set        TIAR,0x03D0                        # Trace Instruction Address 
Register
  .set        TCTR,0x03D1                        # Trace Count Register
  .set        TLR,0x03D2                         # Trace Link Register
  .set        ICDBDR,0x03D3                      # I-Cache Debug Data Register
  .set        CDBCR,0x03D7                       # Cache Debug Control Register
  .set        PIT,0x03DB                         # Programmable Interval Timer 
Register
  .set        TBHI,0x03DC                        # Time Base High Register
  .set        TBLO,0x03DD                        # Time Base Low Register
  .set        DBCR,0x03F2                        # Debug Control Register
  .set        DBDR,0x03F3                        # Debug Data Register

# Testbench Registers

  .set        DCR_CREG_ADDR,0x00F0
  .set        JTAG_CREG_ADDR,0x0030
  .set        JTAG_DREG_ADDR,0x0040
  .set        CLK_ON_PERIOD,0x0001
  .set        CLK_OFF_PERIOD,0x0002
  .set        READ_JTAG_FIFO,0x0004
  .set        BYPASS,0x0006
  .include    "intr_handlers.s"
  .section    .control, "aw"
  .globl      _start
  .p2alignl   2, 0x60000000

 
_start:
  .global     sysini_PR
sysini_PR:
 # SYSINI INITIALIZATION =======================================================
  mfspr       r3,DBSR                            # get DBSR into R3 -- contains 
MRR (most recent reset) field in bits [2:3]
  mtspr       DBDR,r3                            # put the value of DBSR into 
the DBDR so it can be read by JTAG
 # UTLB Invalidation code:
  addi        r0,r0,0
  mtcrf       0xFF,r0                            #init condition register with 
contents of GPR0 (should be '0')
  ba          initutlb                           # branch to initialize UTLB 
(not a conditional branch)

initutlb:
  addi        r5,r0,63                           # skipping init utlb entry 0
  mtspr       CTR,r5
  mtmsr       r0                                 # Not enough distance between 
the mtctr and the bdnz
  nop                                            # Use nops to fill DISS and 
PDCD until mtmsr confirms in IWB
  nop                                            # mtmsr causes context 
synchronization
  nop
  nop
  nop
  nop
  .p2alignl   4, 0x60000000
  addi        r5,r0,0x0001                       # begin at TLB entry 1 (with 
Seamless, entry in UTLB is still boot code)
invalidate_TLB:
  tlbwe       r0,r5,0                            # Set Valid bit (and all 
others)=0
  addi        r5,r5,1                            # increment entry number
  bc          16,0,invalidate_TLB

 ###############################################################################
 # Setup Initial Boot ROM TLB Entry as cachable
 ###############################################################################
  addi        r0,r0,0x0000
  mtspr       PID,r0                             # TID =0x00
  mtspr       MMUCR,r0

 # Set up entry 0 in TLB                          # Modify to map tlb(0)
  addi        r3,r0,0x0000                       # tlb entry number
  addis       r4,r0,0xfff0
  ori         r4,r4,0x0250                       # EPN = 'FFF00Xs', V=1(Valid), 
TM=0 (Normal mode??), Size=1MB
  addis       r5,r0,0xfff0
  ori         r5,r5,0x0000                       # RPN = 'FFF00Xs', 6'b0, ERPN 
= 4'b0000
  addi        r6,r0,0x083f                       # 16'b0, U0-U3=0, 
WIMGE=5b'10000, 1'b0, UX/UW/UR/SX/SW/SR = 0x3f (enabled)
  bl          mttlb

init_GPR:
 # Init GPRs
  addi        r0,r0,0x0000
  addi        r1,r0,0x0000
  addi        r2,r0,0x0000
  addi        r3,r0,0x0000
  addi        r4,r0,0x0000
  addi        r5,r0,0x0000
  addi        r6,r0,0x0000
  addi        r7,r0,0x0000
  addi        r8,r0,0x0000
  addi        r9,r0,0x0000
  addi        r10,r0,0x0000
  addi        r11,r0,0x0000
  addi        r12,r0,0x0000
  addi        r13,r0,0x0000
  addi        r14,r0,0x0000
  addi        r15,r0,0x0000
  addi        r16,r0,0x0000
  addi        r17,r0,0x0000
  addi        r18,r0,0x0000
  addi        r19,r0,0x0000
  addi        r20,r0,0x0000
  addi        r21,r0,0x0000
  addi        r22,r0,0x0000
  addi        r23,r0,0x0000
  addi        r24,r0,0x0000
  addi        r25,r0,0x0000
  addi        r26,r0,0x0000
  addi        r27,r0,0x0000
  addi        r28,r0,0x0000
  addi        r29,r0,0x0000
  addi        r30,r0,0x0000
  addi        r31,r0,0x0000

  mtspr       PID,r0      # TID =0x00
  mtspr       MMUCR,r0

 # clear CCR0 but set bits 17:18 (GICBT:GDCBT)
  addi        r5,r0,0x6000
  mtspr       CCR0,r5

 # Invalidate caches
  ICCCI r0,r0
  DCCCI r0,r0

 # Zero out the Victim registers
  mtspr       INV0,r0
  mtspr       INV1,r0
  mtspr       INV2,r0
  mtspr       INV3,r0

  mtspr       ITV0,r0
  mtspr       ITV1,r0
  mtspr       ITV2,r0
  mtspr       ITV3,r0

 # Set small D-cache Normal Victim values to max, Leave Transient such that 
there is overlap
  addis       r5,r0,0x3F3F
  ori         r5,r5,0x3F3F
  mtspr       DNV0,r5
  mtspr       DNV1,r5
  mtspr       DNV2,r5
  mtspr       DNV3,r5

  mtspr       DTV0,r0
  mtspr       DTV1,r0
  mtspr       DTV2,r0
  mtspr       DTV3,r0

 # Initialize the I-cache Victim Limit registers
  addis       r5,r0,0x0001                       # TOOR (2:9)=0, TCEILING 
(13:20) = 63
  ori         r5,r5,0xf800                       # NFLOOR (24:31) = 0
  mtspr       IVLIM,r5

 # Initialize the D-cache Victim Limit registers
  addis       r5,r0,0x0001                       # TOOR (2:9)=0, TCEILING 
(13:20) = 63
  ori         r5,r5,0xf83C                       # NFLOOR (24:31) = 60
  mtspr       DVLIM,r5

 # initialize ITLB and DTLB
  isync

 ###############################################################################

 # Setting IVPR
  addis       r4,0,address@hidden
  mtspr       IVPR,r4
 # Setting IVOR0 register, interrupt vector for Critical Input
  ori         r4,r0,address@hidden
  mtspr       IVOR0,r4

 # Setting IVOR1 register, Interrupt vector for Machine Check
  ori         r4,r0,address@hidden
  mtspr       IVOR1,r4

 # Setting IVOR2 register, Interrupt vector for Data Storage
  ori         r4,r0,address@hidden
  mtspr       IVOR2,r4

 # Setting IVOR3 register, Interrupt vector for Instruction Storage
  ori         r4,r0,address@hidden
  mtspr       IVOR3,r4

 # Setting IVOR4 register, Interrupt vector for External Input
  ori         r4,r0,address@hidden
  mtspr       IVOR4,r4

 # Setting IVOR5 register, Interrupt vector for Alignment
  ori        r4,r0,address@hidden
  mtspr      IVOR5,r4

 # Setting IVOR6 register, Interrupt vector for Program
  ori         r4,r0,address@hidden
  mtspr       IVOR6,r4

 # Setting IVOR7 register, Interrupt vector for FP unavailable
  ori         r4,r0,address@hidden
  mtspr       IVOR7,r4

 # Setting IVOR8 register, Interrupt vector for System Call
  ori         r4,r0,address@hidden
  mtspr       IVOR8,r4

 # Setting IVOR9 register, Interrupt vector for APU unavailable
  ori         r4,r0,address@hidden
  mtspr       IVOR9,r4

 # Setting IVOR10 register, Interrupt vector for Decrementer
  ori         r4,r0,address@hidden
  mtspr       IVOR10,r4

 # Setting IVOR11 register, Interrupt vector for Fixed Interval Timer
  ori         r4,r0,address@hidden
  mtspr       IVOR11,r4

 # Setting IVOR12 register, Interrupt vector for Watchdog Timer
  ori         r4,r0,address@hidden
  mtspr       IVOR12,r4

 # Setting IVOR13 register, Interrupt vector for DTLB miss
  ori         r4,r0,address@hidden
  mtspr       IVOR13,r4

 # Setting IVOR14 register, Interrupt vector for ITLB miss
  ori         r4,r0,address@hidden
  mtspr       IVOR14,r4

 # Setting IVOR15 register, Interrupt vector for Debug
  ori         r4,r0,address@hidden
  mtspr       IVOR15,r4

 # Clear CTR to avoid X's on predict w/CTR as condition
   mtspr      CTR,r0

 # clear XER
  mtspr       XER,r0
  mcrxr       0

 ###############################################################################
 # CLEAR OUT GPRs used above =========================================

ZeroRegs:
  addi        r3,r0,0x0000
  addi        r4,r0,0x0000
  addi        r5,r0,0x0000
  addi        r6,r0,0x0000

 # PUNCH IT, CHEWIE ! --------------------------------------------------
  ba _testcase_start
  nop
  nop


 ###############################################################################
 # TLB setup function
 ###############################################################################
 
#!-------------------------------------------------------------------------------
 #! Function:     mttlb
 #! Description:  write 3 tlb entries
 #!
 #!         MTTLB, entry, ws0_val, ws1_val, ws2_val
 #!         assumption : pid is already loaded from the STID field
 #!         of the MMUCR, not from the value of the TLB Word0.
 #!         the MMUCR must be setup prior to calling this function
 #!         defaults pid_val =0,  mmucr_val=0
 #!         r3 entry   (0-63)
 #!         r4 ws0_val
 #!         r5 ws1_val
 #!         r6 ws2_val
 #!
 #! Input:
 #! Output:       none
 
#!-------------------------------------------------------------------------------

  .p2alignl   4, 0x60000000
  .global     mttlb
mttlb:
  tlbwe       r4,r3,0                            # Write word 0 of TLB Entry
  tlbwe       r5,r3,1                            # Write word 1 of TLB Entry
  tlbwe       r6,r3,2                            # Write word 2 of TLB Entry
  bclr        20,0
  .size       mttlb,.-mttlb

 ###############################################################################
 # Reset vector for PowerPC embedded
 ###############################################################################
  .section    .reset_vec, "wa"
  .global     sys_reset

sys_reset :
  nop
  nop
  nop
  ba          _start
#.end
## **************************************************************************
##
##  Copyright (c) International Business Machines Corporation, 2002.
##
##  This file contains trade secrets and other proprietary and confidential
##  information of International Business Machines Corporation which are
##  protected by copyright and other intellectual property rights and shall
##  not be reproduced, transferred to other documents, disclosed to others,
##  or used for any purpose except as specifically authorized in writing by
##  International Business Machines Corporation. This notice must be
##  contained as part of this text at all times.
##
## **************************************************************************
##
## This test verifies that the DCBA instruction is a NOP
##
##**************************************************************************

  .file       "PPC440.dcba.1.1.4.s"              # Change this name to your 
test name
  .include    "sysini.s"                         # Always include sysini.s
  .global     _testcase_start                    # This makes the address of 
the code segment globally accessible
  .text                                          # This is a text type section 
meaning the compiler fills nops for unused space
  .p2alignl   4,0x60000000
_testcase_start:                                 # The label that gives the 
address for the code segment

#####################
#                   #
# CODE START        #
#                   #
#####################

  xor         r0,r0,r0                           # Zero r0
  mtspr       XER,r0                             # Set XER to known state
  mtcrf       0xff,r0                            # Set CR to known state
  addis       r3,r0,address@hidden  # GPR 3 will contain the data segment 
address
  ori         r3,r3,address@hidden  # .
  addis       r4,r0,address@hidden            # GPR 4 will contain the code 
segment address
  ori         r4,r4,address@hidden            # .

#@&  TESTCASE BEGINS:

# In addition to TLB entry 0 set up by Sysini, we need to set up
# TLB entry 2 for non-cacheable access with same RPN but different EPN.

  addi        r11,r0,0x0002                      # set up TLB entry 2
  mtspr       PID,r0                             # Process ID 0
  addis       r12,r0,0xeff0                      # EPN = 'EFFXs', V=1, TS=0, 
Size=1MB
  ori         r12,r12,0x0250                     # .
  mtspr       MMUCR,r0                           # clear MMUCR
  tlbwe       r12,r11,0                          # write TLB word 0
  addis       r12,r0,0xfff0                      # RPN = 'FFFXs', 6'b0, 
ERPN=4'b0
  tlbwe       r12,r11,1                          # write TLB word 1
  addi        r12,r0,0x043f                      # 16'b0, U0-U3=0, 
WIMGE=5b'01000, 1'b0, UX/UW/UR/SX/SW/SR = 0x3f (enabled)
  tlbwe       r12,r11,2                          # write TLB word 2
  isync                                          # context sync

# Clear the D-Cache

  DCCCI 0,0

  addis       r13,r0,0x0001                      # clear bits [26:31] (normal 
floor values)
  ori         r13,r13,0xf800                     # of DVLM. This will enable 
all 16 of the
  mtspr       DVLIM,r13                          # normal victim counters for 
the entire 64
                                                 # entries of each DCA element.

# This also sets up the DVLIM reg with the Transient Floor set to 0 and the
# Transient Ceiling set to 63 to allow the entire cache to be used.

# Set up the Normal Victim registers to the incremented values
  addis       r6,r0,0x0104
  ori         r6,r6,0x070a
  mtspr       DNV0,r6

  addis       r7,r0,0x0d10
  ori         r7,r7,0x1316
  mtspr       DNV1,r7

  addis       r8,r0,0x191c
  ori         r8,r8,0x1f22
  mtspr       DNV2,r8

  addis       r9,r0,0x2528
  ori         r9,r9,0x2b2e
  mtspr       DNV3,r9

# 16 load words: each loads a cache line
  addi        r5,r3,Table1
  addi        r11,r0,0x0010                      # touch 16 lines
  mtspr       CTR,r11
loop1:
  lwz         r12,0(r5)
  addi        r5,r5,0x0020                       # point to next line
  bc          16,0,loop1                         # branch back till counter is 
zero

  msync
  isync

# 16 lines of store words (16x8=128 words) (non-cacheable)
  addis       r3,r0,0xefff
  ori         r3,r3,0x0000
  addi        r5,r3,Table1
  addi        r10,r3,Table2
  addi        r11,r0,128                         # load decimal 128 into r11
  mtspr       CTR,r11
loop2:
  lwz         r12,0(r10)
  stw         r12,0(r5)
  addi        r5,r5,0x0004                       # point to next word
  addi        r10,r10,0x0004                     # point to next word
  bc          16,0,loop2                         # branch back till counter is 
zero

  msync
  isync

# Verify data is stored
  addi        r11,r3,Table1
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x5010                      # expected data
  ori         r13,r13,0x5010                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x2577                      # expected data
  ori         r13,r13,0x2577                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x2222                      # expected data
  ori         r13,r13,0x2222                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0xaaaa                      # expected data
  ori         r13,r13,0xaaaa                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x2211                      # expected data
  ori         r13,r13,0x2211                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x1f72                      # expected data
  ori         r13,r13,0x1f72                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0xcfcf                      # expected data
  ori         r13,r13,0xcfcf                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0xfcfc                      # expected data
  ori         r13,r13,0xfcfc                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0xbbaa                      # expected data
  ori         r13,r13,0xbbaa                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x99aa                      # expected data
  ori         r13,r13,0x99aa                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x3344                      # expected data
  ori         r13,r13,0x3344                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x4499                      # expected data
  ori         r13,r13,0x4499                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x1010                      # expected data
  ori         r13,r13,0x1010                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x2525                      # expected data
  ori         r13,r13,0x2525                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x8888                      # expected data
  ori         r13,r13,0x8888                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0xbbbb                      # expected data
  ori         r13,r13,0xbbbb                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal

  msync
  isync

# Verify correct data is in cache (choose few random locations)
# Check that valid bit is set and no dirty bits are set

  addi        r11,r0,0x0200                      # Bank 0, subbank 0, index 01
  msync
  DCREAD      r13,r0,r11
  addis       r12,r0,0x3d40
  ori         r12,r12,0x5010
  cmp         0,0,r13,r12                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r15,r0,0x0080
  mfspr       r14,DCDBTRH
  and         r14,r14,r15                        # filter bit 24
  cmpi        0,0,r14,0x0080                     # see if the V bit is ON, (bit 
24)
  bcl         4,2,ERROR                          # fail if not equal
  addi        r16,r0,0x00f0
  mfspr       r17,DCDBTRL
  and         r17,r17,r16                        # filter bits 24-27
  cmpi        0,0,r17,0x0000                     # see if no dirty bits are set
  bcl         4,2,ERROR                          # fail if not equal

  addi        r11,r11,0x1ea0                     # Bank 1, subbank 1, index 10
  msync
  DCREAD      r13,r0,r11
  addis       r12,r0,0x3d40
  ori         r12,r12,0x1f72
  cmp         0,0,r13,r12                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r15,r0,0x0080
  mfspr       r14,DCDBTRH
  and         r14,r14,r15                        # filter bit 24
  cmpi        0,0,r14,0x0080                     # see if the V bit is ON, (bit 
24)
  bcl         4,2,ERROR                          # fail if not equal
  addi        r16,r0,0x00f0
  mfspr       r17,DCDBTRL
  and         r17,r17,r16                        # filter bits 24-27
  cmpi        0,0,r17,0x0000                     # see if no dirty bits are set
  bcl         4,2,ERROR                          # fail if not equal

  addi        r11,r11,0x1ea0                     # Bank 2, subbank 2, index 1F
  msync
  DCREAD      r13,r0,r11
  addis       r12,r0,0x3d40
  ori         r12,r12,0x3344
  cmp         0,0,r13,r12                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r15,r0,0x0080
  mfspr       r14,DCDBTRH
  and         r14,r14,r15                        # filter bit 24
  cmpi        0,0,r14,0x0080                     # see if the V bit is ON, (bit 
24)
  bcl         4,2,ERROR                          # fail if not equal
  addi        r16,r0,0x00f0
  mfspr       r17,DCDBTRL
  and         r17,r17,r16                        # filter bits 24-27
  cmpi        0,0,r17,0x0000                     # see if no dirty bits are set
  bcl         4,2,ERROR                          # fail if not equal

  addi        r11,r11,0x1ea0                     # Bank 3, subbank 3, index 2E
  msync
  DCREAD      r13,r0,r11
  addis       r12,r0,0x3d40
  ori         r12,r12,0xbbbb
  cmp         0,0,r13,r12                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r15,r0,0x0080
  mfspr       r14,DCDBTRH
  and         r14,r14,r15                        # filter bit 24
  cmpi        0,0,r14,0x0080                     # see if the V bit is ON, (bit 
24)
  bcl         4,2,ERROR                          # fail if not equal
  addi        r16,r0,0x00f0
  mfspr       r17,DCDBTRL
  and         r17,r17,r16                        # filter bits 24-27
  cmpi        0,0,r17,0x0000                     # see if no dirty bits are set
  bcl         4,2,ERROR                          # fail if not equal


# 16 dcba to non-cacheable Hit

  addi        r5,r3,Table1
  addi        r11,r0,0x0010
  mtspr       CTR,r11
loop3:
  dcba        0,r5
  addi        r5,r5,0x0020                       # point to next line
  bc          16,0,loop3

# 16 dcba to cacheable Hit

  addis       r3,r0,0xffff
  ori         r3,r3,0x0000
  addi        r5,r3,Table1
  addi        r11,r0,0x0010
  mtspr       CTR,r11
loop4:
  dcba        0,r5
  addi        r5,r5,0x0020                       # point to next line
  bc          16,0,loop4

# Verify correct data is still in the cache (choose few random locations)
# Check that valid bit is set and no dirty bits are set

  addi        r11,r0,0x0200                      # Bank 0, subbank 0, index 01
  msync
  DCREAD      r13,r0,r11
  addis       r12,r0,0x3d40
  ori         r12,r12,0x5010
  cmp         0,0,r13,r12                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r15,r0,0x0080
  mfspr       r14,DCDBTRH
  and         r14,r14,r15                        # filter bit 24
  cmpi        0,0,r14,0x0080                     # see if the V bit is ON, (bit 
24)
  bcl         4,2,ERROR                          # fail if not equal
  addi        r16,r0,0x00f0
  mfspr       r17,DCDBTRL
  and         r17,r17,r16                        # filter bits 24-27
  cmpi        0,0,r17,0x0000                     # see if no dirty bits are set
  bcl         4,2,ERROR                          # fail if not equal

  addi        r11,r11,0x1ea0                     # Bank 1, subbank 1, index 10
  msync
  DCREAD      r13,r0,r11
  addis       r12,r0,0x3d40
  ori         r12,r12,0x1f72
  cmp         0,0,r13,r12                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r15,r0,0x0080
  mfspr       r14,DCDBTRH
  and         r14,r14,r15                        # filter bit 24
  cmpi        0,0,r14,0x0080                     # see if the V bit is ON, (bit 
24)
  bcl         4,2,ERROR                          # fail if not equal
  addi        r16,r0,0x00f0
  mfspr       r17,DCDBTRL
  and         r17,r17,r16                        # filter bits 24-27
  cmpi        0,0,r17,0x0000                     # see if no dirty bits are set
  bcl         4,2,ERROR                          # fail if not equal

  addi        r11,r11,0x1ea0                     # Bank 2, subbank 2, index 1F
  msync
  DCREAD      r13,r0,r11
  addis       r12,r0,0x3d40
  ori         r12,r12,0x3344
  cmp         0,0,r13,r12                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r15,r0,0x0080
  mfspr       r14,DCDBTRH
  and         r14,r14,r15                        # filter bit 24
  cmpi        0,0,r14,0x0080                     # see if the V bit is ON, (bit 
24)
  bcl         4,2,ERROR                          # fail if not equal
  addi        r16,r0,0x00f0
  mfspr       r17,DCDBTRL
  and         r17,r17,r16                        # filter bits 24-27
  cmpi        0,0,r17,0x0000                     # see if no dirty bits are set
  bcl         4,2,ERROR                          # fail if not equal

  addi        r11,r11,0x1ea0                     # Bank 3, subbank 3, index 2E
  msync
  DCREAD      r13,r0,r11
  addis       r12,r0,0x3d40
  ori         r12,r12,0xbbbb
  cmp         0,0,r13,r12                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r15,r0,0x0080
  mfspr       r14,DCDBTRH
  and         r14,r14,r15                        # filter bit 24
  cmpi        0,0,r14,0x0080                     # see if the V bit is ON, (bit 
24)
  bcl         4,2,ERROR                          # fail if not equal
  addi        r16,r0,0x00f0
  mfspr       r17,DCDBTRL
  and         r17,r17,r16                        # filter bits 24-27
  cmpi        0,0,r17,0x0000                     # see if no dirty bits are set
  bcl         4,2,ERROR                          # fail if not equal

# 16 lines of load word (non-cacheable)
# Verify data is loaded

  addis       r3,r0,0xefff
  ori         r3,r3,0x0000

  addi        r11,r3,Table1
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x5010                      # expected data
  ori         r13,r13,0x5010                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x2577                      # expected data
  ori         r13,r13,0x2577                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x2222                      # expected data
  ori         r13,r13,0x2222                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0xaaaa                      # expected data
  ori         r13,r13,0xaaaa                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x2211                      # expected data
  ori         r13,r13,0x2211                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x1f72                      # expected data
  ori         r13,r13,0x1f72                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0xcfcf                      # expected data
  ori         r13,r13,0xcfcf                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0xfcfc                      # expected data
  ori         r13,r13,0xfcfc                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0xbbaa                      # expected data
  ori         r13,r13,0xbbaa                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x99aa                      # expected data
  ori         r13,r13,0x99aa                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x3344                      # expected data
  ori         r13,r13,0x3344                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x4499                      # expected data
  ori         r13,r13,0x4499                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x1010                      # expected data
  ori         r13,r13,0x1010                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x2525                      # expected data
  ori         r13,r13,0x2525                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0x8888                      # expected data
  ori         r13,r13,0x8888                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal
  addi        r11,r11,0x0020                     # point to next line
  lwz         r12,0(r11)                         # load and check data
  addis       r13,r0,0xbbbb                      # expected data
  ori         r13,r13,0xbbbb                     # .
  cmp         0,0,r12,r13                        # Are they equal?
  bcl         4,2,ERROR                          # fail if not equal

  msync
  isync

# Clear the D-Cache

  DCCCI       0,0

# Set up the Normal Victim registers to the incremented values
  addis       r6,r0,0x0104
  ori         r6,r6,0x070a
  mtspr       DNV0,r6

  addis       r7,r0,0x0d10
  ori         r7,r7,0x1316
  mtspr       DNV1,r7

  addis       r8,r0,0x191c
  ori         r8,r8,0x1f22
  mtspr       DNV2,r8

  addis       r9,r0,0x2528
  ori         r9,r9,0x2b2e
  mtspr       DNV3,r9

# 16 dcba to cacheable miss

  addis       r3,r0,0xffff
  ori         r3,r3,0x0000

  addi        r5,r3,Table2
  addi        r11,r0,0x0010
  mtspr       CTR,r11
loop5:
  dcba        0,r5
  addi        r5,r5,0x0020                       # point to next line
  bc          16,0,loop5

# 16 dcba to non-cacheable miss

  addis       r3,r0,0xefff
  ori         r3,r3,0x0000
  addi        r5,r3,Table2
  addi        r11,r0,0x0010
  mtspr       CTR,r11
loop6:
  dcba        0,r5
  addi        r5,r5,0x0020                       # point to next line
  bc          16,0,loop6

# Verify the Valid bit is reset for each line

  addi        r11,r0,0x0200                      # Bank 0, subbank 0, index 01
  msync
  DCREAD      r13,r0,r11
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  addis       r15,r0,0xffff
  ori         r15,r15,0xff7f
  mfspr       r14,DCDBTRH
  or          r14,r14,r15                        # filter bit 24
  cmp         0,0,r14,r15                        # see if the V bit is OFF, 
(bit 24)
  bcl         4,2,ERROR                          # fail if not equal

  addi        r11,r11,0x1ea0                     # Bank 1, subbank 1, index 10
  msync
  DCREAD      r13,r0,r11
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  addis       r15,r0,0xffff
  ori         r15,r15,0xff7f
  mfspr       r14,DCDBTRH
  or          r14,r14,r15                        # filter bit 24
  cmp         0,0,r14,r15                        # see if the V bit is OFF, 
(bit 24)
  bcl         4,2,ERROR                          # fail if not equal

  addi        r11,r11,0x1ea0                     # Bank 2, subbank 2, index 1F
  msync
  DCREAD      r13,r0,r11
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  addis       r15,r0,0xffff
  ori         r15,r15,0xff7f
  mfspr       r14,DCDBTRH
  or          r14,r14,r15                        # filter bit 24
  cmp         0,0,r14,r15                        # see if the V bit is OFF, 
(bit 24)
  bcl         4,2,ERROR                          # fail if not equal

  addi        r11,r11,0x1ea0                     # Bank 3, subbank 3, index 2E
  msync
  DCREAD      r13,r0,r11
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  addis       r15,r0,0xffff
  ori         r15,r15,0xff7f
  mfspr       r14,DCDBTRH
  or          r14,r14,r15                        # filter bit 24
  cmp         0,0,r14,r15                        # see if the V bit is OFF, 
(bit 24)
  bcl         4,2,ERROR                          # fail if not equal

# ***** End of test ******

EPILOG

#------------------------------------------------------------------------------#
# Data Area...                                                                 #
#------------------------------------------------------------------------------#
  .data
  .global     PPC440.dcba.1.1.4_data_RW
PPC440.dcba.1.1.4_data_RW:
# data area

#==============================================================================#
# Random data for the test                                                     #
#==============================================================================#

Table1.d:

# first line:

  .long       0x3D405010,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 2-nd line:

  .long       0x3D402577,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 3-rd line:

  .long       0x3D402222,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 4-th line:

  .long       0x3D40aaaa,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 5-th line:

  .long       0x3D402211,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 6-th line:

  .long       0x3D401f72,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 7-th line:

  .long       0x3D40cfcf,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 8-th line:

  .long       0x3D40fcfc,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 9-th line:

  .long       0x3D40bbaa,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 10-th line:

  .long       0x3D4099aa,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 11-th line:

  .long       0x3D403344,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 12-th line:

  .long       0x3D404499,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 13-th line:

  .long       0x3D401010,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 14-th line:

  .long       0x3D402525,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 15-th line:

  .long       0x3D408888,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 16-th line:

  .long       0x3D40bbbb,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

Table2.d:

# first line:

  .long       0x50105010,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 2-nd line:

  .long       0x25772577,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 3-rd line:

  .long       0x22222222,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 4-th line:

  .long       0xaaaaaaaa,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 5-th line:

  .long       0x22112211,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 6-th line:

  .long       0x1f721f72,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 7-th line:

  .long       0xcfcfcfcf,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 8-th line:

  .long       0xfcfcfcfc,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 9-th line:

  .long       0xbbaabbaa,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 10-th line:

  .long       0x99aa99aa,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 11-th line:

  .long       0x33443344,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 12-th line:

  .long       0x44994499,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 13-th line:

  .long       0x10101010,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 14-th line:

  .long       0x25252525,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 15-th line:

  .long       0x88888888,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

# 16-th line:

  .long       0xbbbbbbbb,  0x60000000,  0x60000000,  0x60000000
  .long       0x60000000,  0x60000000,  0x60000000,  0x4e800020

#Generate offsets for data
  .set        Table1,Table1.d-PPC440.dcba.1.1.4_data_RW
  .set        Table2,Table2.d-PPC440.dcba.1.1.4_data_RW

reply via email to

[Prev in Thread] Current Thread [Next in Thread]