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