paljtokern.S revision 8013
18012Ssaidi@eecs.umich.edu/* 28013Sbinkertn@umich.edu * Copyright (c) 2003, 2004 38013Sbinkertn@umich.edu * The Regents of The University of Michigan 48013Sbinkertn@umich.edu * All Rights Reserved 58013Sbinkertn@umich.edu * 68013Sbinkertn@umich.edu * This code is part of the M5 simulator, developed by Nathan Binkert, 78013Sbinkertn@umich.edu * Erik Hallnor, Steve Raasch, and Steve Reinhardt, with contributions 88013Sbinkertn@umich.edu * from Ron Dreslinski, Dave Greene, Lisa Hsu, Ali Saidi, and Andrew 98013Sbinkertn@umich.edu * Schultz. 108013Sbinkertn@umich.edu * 118013Sbinkertn@umich.edu * Permission is granted to use, copy, create derivative works and 128013Sbinkertn@umich.edu * redistribute this software and such derivative works for any purpose, 138013Sbinkertn@umich.edu * so long as the copyright notice above, this grant of permission, and 148013Sbinkertn@umich.edu * the disclaimer below appear in all copies made; and so long as the 158013Sbinkertn@umich.edu * name of The University of Michigan is not used in any advertising or 168013Sbinkertn@umich.edu * publicity pertaining to the use or distribution of this software 178013Sbinkertn@umich.edu * without specific, written prior authorization. 188013Sbinkertn@umich.edu * 198013Sbinkertn@umich.edu * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE 208013Sbinkertn@umich.edu * UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND WITHOUT 218013Sbinkertn@umich.edu * WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER EXPRESS OR 228013Sbinkertn@umich.edu * IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF 238013Sbinkertn@umich.edu * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE REGENTS OF 248013Sbinkertn@umich.edu * THE UNIVERSITY OF MICHIGAN SHALL NOT BE LIABLE FOR ANY DAMAGES, 258013Sbinkertn@umich.edu * INCLUDING DIRECT, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 268013Sbinkertn@umich.edu * DAMAGES, WITH RESPECT TO ANY CLAIM ARISING OUT OF OR IN CONNECTION 278013Sbinkertn@umich.edu * WITH THE USE OF THE SOFTWARE, EVEN IF IT HAS BEEN OR IS HEREAFTER 288013Sbinkertn@umich.edu * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 298013Sbinkertn@umich.edu */ 308012Ssaidi@eecs.umich.edu 318013Sbinkertn@umich.edu/* 328013Sbinkertn@umich.edu * Copyright 1993 Hewlett-Packard Development Company, L.P. 338013Sbinkertn@umich.edu * 348013Sbinkertn@umich.edu * Permission is hereby granted, free of charge, to any person 358013Sbinkertn@umich.edu * obtaining a copy of this software and associated documentation 368013Sbinkertn@umich.edu * files (the "Software"), to deal in the Software without 378013Sbinkertn@umich.edu * restriction, including without limitation the rights to use, copy, 388013Sbinkertn@umich.edu * modify, merge, publish, distribute, sublicense, and/or sell copies 398013Sbinkertn@umich.edu * of the Software, and to permit persons to whom the Software is 408013Sbinkertn@umich.edu * furnished to do so, subject to the following conditions: 418013Sbinkertn@umich.edu * 428013Sbinkertn@umich.edu * The above copyright notice and this permission notice shall be 438013Sbinkertn@umich.edu * included in all copies or substantial portions of the Software. 448013Sbinkertn@umich.edu * 458013Sbinkertn@umich.edu * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 468013Sbinkertn@umich.edu * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 478013Sbinkertn@umich.edu * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 488013Sbinkertn@umich.edu * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 498013Sbinkertn@umich.edu * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 508013Sbinkertn@umich.edu * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 518013Sbinkertn@umich.edu * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 528013Sbinkertn@umich.edu * SOFTWARE. 538013Sbinkertn@umich.edu */ 548012Ssaidi@eecs.umich.edu 558008Ssaidi@eecs.umich.edu#include "dc21164FromGasSources.h" // DECchip 21164 specific definitions 568008Ssaidi@eecs.umich.edu#include "ev5_defs.h" 578013Sbinkertn@umich.edu#include "fromHudsonOsf.h" // OSF/1 specific definitions 588013Sbinkertn@umich.edu#include "fromHudsonMacros.h" // Global macro definitions 598008Ssaidi@eecs.umich.edu 608008Ssaidi@eecs.umich.edu/* Jump to kernel 618013Sbinkertn@umich.edu * args: 628013Sbinkertn@umich.edu * Kernel address - a0 638013Sbinkertn@umich.edu * PCBB - a1 648013Sbinkertn@umich.edu * First free PFN - a3? 658013Sbinkertn@umich.edu * 668013Sbinkertn@umich.edu * Enable kseg addressing in ICSR 678013Sbinkertn@umich.edu * Enable kseg addressing in MCSR 688013Sbinkertn@umich.edu * Set VTBR -- Set to 1GB as per SRM, or maybe 8GB?? 698013Sbinkertn@umich.edu * Set PCBB -- pass pointer in arg 708013Sbinkertn@umich.edu * Set PTBR -- get it out of PCB 718013Sbinkertn@umich.edu * Set KSP -- get it out of PCB 728013Sbinkertn@umich.edu * 738013Sbinkertn@umich.edu * Jump to kernel address 748013Sbinkertn@umich.edu * 758013Sbinkertn@umich.edu * Kernel args- 768013Sbinkertn@umich.edu * s0 first free PFN 778013Sbinkertn@umich.edu * s1 ptbr 788013Sbinkertn@umich.edu * s2 argc 0 798013Sbinkertn@umich.edu * s3 argv NULL 808013Sbinkertn@umich.edu * s5 osf_param (sysconfigtab) NULL 818008Ssaidi@eecs.umich.edu */ 828008Ssaidi@eecs.umich.edu 838013Sbinkertn@umich.edu .global palJToKern 848013Sbinkertn@umich.edu .text 3 858013Sbinkertn@umich.edupalJToKern: 868008Ssaidi@eecs.umich.edu ALIGN_BRANCH 878008Ssaidi@eecs.umich.edu 888008Ssaidi@eecs.umich.edu ldq_p a0, 0(zero) 898008Ssaidi@eecs.umich.edu ldq_p a1, 8(zero) 908008Ssaidi@eecs.umich.edu ldq_p a3, 16(zero) 918008Ssaidi@eecs.umich.edu 928008Ssaidi@eecs.umich.edu /* Point the Vptbr at 8GB */ 938008Ssaidi@eecs.umich.edu lda t0, 0x1(zero) 948008Ssaidi@eecs.umich.edu sll t0, 33, t0 958008Ssaidi@eecs.umich.edu 968008Ssaidi@eecs.umich.edu mtpr t0, mVptBr // Load Mbox copy 978008Ssaidi@eecs.umich.edu mtpr t0, iVptBr // Load Ibox copy 988008Ssaidi@eecs.umich.edu STALL // don't dual issue the load with mtpr -pb 998008Ssaidi@eecs.umich.edu 1008008Ssaidi@eecs.umich.edu /* Turn on superpage mapping in the mbox and icsr */ 1018008Ssaidi@eecs.umich.edu lda t0, (2<<MCSR_V_SP)(zero) // Get a '10' (binary) in MCSR<SP> 1028008Ssaidi@eecs.umich.edu STALL // don't dual issue the load with mtpr -pb 1038013Sbinkertn@umich.edu mtpr t0, mcsr // Set the super page mode enable bit 1048008Ssaidi@eecs.umich.edu STALL // don't dual issue the load with mtpr -pb 1058008Ssaidi@eecs.umich.edu 1068008Ssaidi@eecs.umich.edu lda t0, 0(zero) 1078008Ssaidi@eecs.umich.edu mtpr t0, dtbAsn 1088008Ssaidi@eecs.umich.edu mtpr t0, itbAsn 1098008Ssaidi@eecs.umich.edu 1108008Ssaidi@eecs.umich.edu LDLI (t1,0x20000000) 1118008Ssaidi@eecs.umich.edu STALL // don't dual issue the load with mtpr -pb 1128013Sbinkertn@umich.edu mfpr t0, icsr // Enable superpage mapping 1138008Ssaidi@eecs.umich.edu STALL // don't dual issue the load with mtpr -pb 1148008Ssaidi@eecs.umich.edu bis t0, t1, t0 1158008Ssaidi@eecs.umich.edu mtpr t0, icsr 1168008Ssaidi@eecs.umich.edu 1178013Sbinkertn@umich.edu STALL // Required stall to update chip ... 1188008Ssaidi@eecs.umich.edu STALL 1198008Ssaidi@eecs.umich.edu STALL 1208008Ssaidi@eecs.umich.edu STALL 1218008Ssaidi@eecs.umich.edu STALL 1228008Ssaidi@eecs.umich.edu 1238008Ssaidi@eecs.umich.edu ldq_p s0, PCB_Q_PTBR(a1) 1248013Sbinkertn@umich.edu sll s0, VA_S_OFF, s0 // Shift PTBR into position 1258008Ssaidi@eecs.umich.edu STALL // don't dual issue the load with mtpr -pb 1268013Sbinkertn@umich.edu mtpr s0, ptPtbr // PHYSICAL MBOX INST -> MT PT20 IN 0,1 1278008Ssaidi@eecs.umich.edu STALL // don't dual issue the load with mtpr -pb 1288008Ssaidi@eecs.umich.edu ldq_p sp, PCB_Q_KSP(a1) 1298008Ssaidi@eecs.umich.edu 1308013Sbinkertn@umich.edu mtpr a0, excAddr // Load the dispatch address. 1318008Ssaidi@eecs.umich.edu STALL // don't dual issue the load with mtpr -pb 1328013Sbinkertn@umich.edu bis a3, zero, a0 // first free PFN 1338013Sbinkertn@umich.edu ldq_p a1, PCB_Q_PTBR(a1) // ptbr 1348013Sbinkertn@umich.edu ldq_p a2, 24(zero) // argc 1358013Sbinkertn@umich.edu ldq_p a3, 32(zero) // argv 1368013Sbinkertn@umich.edu ldq_p a4, 40(zero) // environ 1378013Sbinkertn@umich.edu lda a5, 0(zero) // osf_param 1388008Ssaidi@eecs.umich.edu STALL // don't dual issue the load with mtpr -pb 1398013Sbinkertn@umich.edu mtpr zero, dtbIa // Flush all D-stream TB entries 1408013Sbinkertn@umich.edu mtpr zero, itbIa // Flush all I-stream TB entries 1418008Ssaidi@eecs.umich.edu br zero, 2f 1428008Ssaidi@eecs.umich.edu 1438008Ssaidi@eecs.umich.edu ALIGN_BLOCK 1448008Ssaidi@eecs.umich.edu 1458013Sbinkertn@umich.edu2: NOP 1468013Sbinkertn@umich.edu mtpr zero, icFlush // Flush the icache. 1478008Ssaidi@eecs.umich.edu NOP 1488008Ssaidi@eecs.umich.edu NOP 1498008Ssaidi@eecs.umich.edu 1508013Sbinkertn@umich.edu NOP // Required NOPs ... 1-10 1518008Ssaidi@eecs.umich.edu NOP 1528008Ssaidi@eecs.umich.edu NOP 1538008Ssaidi@eecs.umich.edu NOP 1548008Ssaidi@eecs.umich.edu NOP 1558008Ssaidi@eecs.umich.edu NOP 1568008Ssaidi@eecs.umich.edu NOP 1578008Ssaidi@eecs.umich.edu NOP 1588008Ssaidi@eecs.umich.edu NOP 1598008Ssaidi@eecs.umich.edu NOP 1608008Ssaidi@eecs.umich.edu 1618013Sbinkertn@umich.edu NOP // Required NOPs ... 11-20 1628008Ssaidi@eecs.umich.edu NOP 1638008Ssaidi@eecs.umich.edu NOP 1648008Ssaidi@eecs.umich.edu NOP 1658008Ssaidi@eecs.umich.edu NOP 1668008Ssaidi@eecs.umich.edu NOP 1678008Ssaidi@eecs.umich.edu NOP 1688008Ssaidi@eecs.umich.edu NOP 1698008Ssaidi@eecs.umich.edu NOP 1708008Ssaidi@eecs.umich.edu NOP 1718008Ssaidi@eecs.umich.edu 1728013Sbinkertn@umich.edu NOP // Required NOPs ... 21-30 1738008Ssaidi@eecs.umich.edu NOP 1748008Ssaidi@eecs.umich.edu NOP 1758008Ssaidi@eecs.umich.edu NOP 1768008Ssaidi@eecs.umich.edu NOP 1778008Ssaidi@eecs.umich.edu NOP 1788008Ssaidi@eecs.umich.edu NOP 1798008Ssaidi@eecs.umich.edu NOP 1808008Ssaidi@eecs.umich.edu NOP 1818008Ssaidi@eecs.umich.edu NOP 1828008Ssaidi@eecs.umich.edu 1838013Sbinkertn@umich.edu NOP // Required NOPs ... 31-40 1848008Ssaidi@eecs.umich.edu NOP 1858008Ssaidi@eecs.umich.edu NOP 1868008Ssaidi@eecs.umich.edu NOP 1878008Ssaidi@eecs.umich.edu NOP 1888008Ssaidi@eecs.umich.edu NOP 1898008Ssaidi@eecs.umich.edu NOP 1908008Ssaidi@eecs.umich.edu NOP 1918008Ssaidi@eecs.umich.edu NOP 1928008Ssaidi@eecs.umich.edu NOP 1938008Ssaidi@eecs.umich.edu 1948013Sbinkertn@umich.edu NOP // Required NOPs ... 41-44 1958008Ssaidi@eecs.umich.edu NOP 1968008Ssaidi@eecs.umich.edu NOP 1978008Ssaidi@eecs.umich.edu NOP 1988008Ssaidi@eecs.umich.edu 1998013Sbinkertn@umich.edu hw_rei_stall // Dispatch to kernel 200