m5op_alpha.S revision 4090:08bd6439b907
12632Sstever@eecs.umich.edu/*
22632Sstever@eecs.umich.edu * Copyright (c) 2003-2006 The Regents of The University of Michigan
32632Sstever@eecs.umich.edu * All rights reserved.
42632Sstever@eecs.umich.edu *
52632Sstever@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
62632Sstever@eecs.umich.edu * modification, are permitted provided that the following conditions are
72632Sstever@eecs.umich.edu * met: redistributions of source code must retain the above copyright
82632Sstever@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
92632Sstever@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
102632Sstever@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
112632Sstever@eecs.umich.edu * documentation and/or other materials provided with the distribution;
122632Sstever@eecs.umich.edu * neither the name of the copyright holders nor the names of its
132632Sstever@eecs.umich.edu * contributors may be used to endorse or promote products derived from
142632Sstever@eecs.umich.edu * this software without specific prior written permission.
152632Sstever@eecs.umich.edu *
162632Sstever@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
172632Sstever@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
182632Sstever@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
192632Sstever@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
202632Sstever@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
212632Sstever@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
222632Sstever@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
232632Sstever@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
242632Sstever@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
252632Sstever@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
262632Sstever@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
272632Sstever@eecs.umich.edu *
282632Sstever@eecs.umich.edu * Authors: Nathan Binkert
292632Sstever@eecs.umich.edu *          Ali Saidi
302632Sstever@eecs.umich.edu */
312632Sstever@eecs.umich.edu
322632Sstever@eecs.umich.edu#define m5_op 0x01
332632Sstever@eecs.umich.edu
342632Sstever@eecs.umich.edu#include "m5ops.h"
352632Sstever@eecs.umich.edu
362632Sstever@eecs.umich.edu#define INST(op, ra, rb, func) \
372632Sstever@eecs.umich.edu        .long (((op) << 26) | ((ra) << 21) | ((rb) << 16) | (func))
382632Sstever@eecs.umich.edu
392632Sstever@eecs.umich.edu#define LEAF(func)    \
402632Sstever@eecs.umich.edu        .align 3;     \
412632Sstever@eecs.umich.edu        .globl  func; \
422632Sstever@eecs.umich.edu        .ent    func; \
432632Sstever@eecs.umich.edufunc:
442632Sstever@eecs.umich.edu
452632Sstever@eecs.umich.edu#define RET           \
462632Sstever@eecs.umich.edu        ret     ($26)
472632Sstever@eecs.umich.edu
482632Sstever@eecs.umich.edu#define END(func)     \
492632Sstever@eecs.umich.edu        .end func
502632Sstever@eecs.umich.edu
512632Sstever@eecs.umich.edu#define	ARM(reg) INST(m5_op, reg, 0, arm_func)
522632Sstever@eecs.umich.edu#define QUIESCE INST(m5_op, 0, 0, quiesce_func)
532632Sstever@eecs.umich.edu#define QUIESCENS(r1) INST(m5_op, r1, 0, quiescens_func)
542632Sstever@eecs.umich.edu#define QUIESCECYC(r1) INST(m5_op, r1, 0, quiescecycle_func)
552632Sstever@eecs.umich.edu#define QUIESCETIME INST(m5_op, 0, 0, quiescetime_func)
562632Sstever@eecs.umich.edu#define M5EXIT(reg) INST(m5_op, reg, 0, exit_func)
572632Sstever@eecs.umich.edu#define INITPARAM(reg) INST(m5_op, reg, 0, initparam_func)
582632Sstever@eecs.umich.edu#define LOADSYMBOL(reg) INST(m5_op, reg, 0, loadsymbol_func)
592632Sstever@eecs.umich.edu#define RESET_STATS(r1, r2) INST(m5_op, r1, r2, resetstats_func)
602632Sstever@eecs.umich.edu#define DUMP_STATS(r1, r2) INST(m5_op, r1, r2, dumpstats_func)
612632Sstever@eecs.umich.edu#define DUMPRST_STATS(r1, r2) INST(m5_op, r1, r2, dumprststats_func)
622632Sstever@eecs.umich.edu#define CHECKPOINT(r1, r2) INST(m5_op, r1, r2, ckpt_func)
632632Sstever@eecs.umich.edu#define READFILE INST(m5_op, 0, 0, readfile_func)
642632Sstever@eecs.umich.edu#define DEBUGBREAK INST(m5_op, 0, 0, debugbreak_func)
652632Sstever@eecs.umich.edu#define SWITCHCPU INST(m5_op, 0, 0, switchcpu_func)
662632Sstever@eecs.umich.edu#define ADDSYMBOL(r1,r2) INST(m5_op, r1, r2, addsymbol_func)
672632Sstever@eecs.umich.edu#define PANIC INST(m5_op, 0, 0, panic_func)
682632Sstever@eecs.umich.edu#define AN_BEGIN(r1) INST(m5_op, r1, 0, anbegin_func)
692632Sstever@eecs.umich.edu#define AN_WAIT(r1,r2) INST(m5_op, r1, r2, anwait_func)
702632Sstever@eecs.umich.edu
712632Sstever@eecs.umich.edu        .set noreorder
722632Sstever@eecs.umich.edu
732632Sstever@eecs.umich.edu        .align 4
742632Sstever@eecs.umich.eduLEAF(arm)
752632Sstever@eecs.umich.edu        ARM(16)
762632Sstever@eecs.umich.edu        RET
772632Sstever@eecs.umich.eduEND(arm)
782632Sstever@eecs.umich.edu
792632Sstever@eecs.umich.edu        .align 4
802632Sstever@eecs.umich.eduLEAF(quiesce)
812632Sstever@eecs.umich.edu        QUIESCE
822632Sstever@eecs.umich.edu        RET
832632Sstever@eecs.umich.eduEND(quiesce)
842632Sstever@eecs.umich.edu
852632Sstever@eecs.umich.edu        .align 4
862632Sstever@eecs.umich.eduLEAF(quiesceNs)
872632Sstever@eecs.umich.edu        QUIESCENS(16)
882632Sstever@eecs.umich.edu        RET
892632Sstever@eecs.umich.eduEND(quiesceNs)
902632Sstever@eecs.umich.edu
912632Sstever@eecs.umich.edu        .align 4
922632Sstever@eecs.umich.eduLEAF(quiesceCycle)
932632Sstever@eecs.umich.edu        QUIESCECYC(16)
942632Sstever@eecs.umich.edu        RET
952632Sstever@eecs.umich.eduEND(quiesceCycle)
962632Sstever@eecs.umich.edu
972632Sstever@eecs.umich.edu        .align 4
982632Sstever@eecs.umich.eduLEAF(quiesceTime)
992632Sstever@eecs.umich.edu        QUIESCETIME
1002632Sstever@eecs.umich.edu        RET
1012632Sstever@eecs.umich.eduEND(quiesceTime)
1022632Sstever@eecs.umich.edu
1032632Sstever@eecs.umich.edu        .align 4
1042632Sstever@eecs.umich.eduLEAF(m5_exit)
1052632Sstever@eecs.umich.edu        M5EXIT(16)
1062632Sstever@eecs.umich.edu        RET
1072632Sstever@eecs.umich.eduEND(m5_exit)
1082632Sstever@eecs.umich.edu
1092632Sstever@eecs.umich.edu        .align 4
1102632Sstever@eecs.umich.eduLEAF(m5_initparam)
1112632Sstever@eecs.umich.edu        INITPARAM(0)
1122632Sstever@eecs.umich.edu        RET
1132632Sstever@eecs.umich.eduEND(m5_initparam)
1142632Sstever@eecs.umich.edu
1152632Sstever@eecs.umich.edu        .align 4
1162632Sstever@eecs.umich.eduLEAF(m5_loadsymbol)
1172632Sstever@eecs.umich.edu        LOADSYMBOL(0)
1182632Sstever@eecs.umich.edu        RET
1192632Sstever@eecs.umich.eduEND(m5_loadsymbol)
1202632Sstever@eecs.umich.edu
1212632Sstever@eecs.umich.edu        .align 4
1222632Sstever@eecs.umich.eduLEAF(m5_reset_stats)
1232632Sstever@eecs.umich.edu        RESET_STATS(16, 17)
1242632Sstever@eecs.umich.edu        RET
1252632Sstever@eecs.umich.eduEND(m5_reset_stats)
1262632Sstever@eecs.umich.edu
1272632Sstever@eecs.umich.edu        .align 4
1282632Sstever@eecs.umich.eduLEAF(m5_dump_stats)
1292632Sstever@eecs.umich.edu        DUMP_STATS(16, 17)
1302632Sstever@eecs.umich.edu        RET
1312632Sstever@eecs.umich.eduEND(m5_dump_stats)
1322632Sstever@eecs.umich.edu
1332632Sstever@eecs.umich.edu        .align 4
1342632Sstever@eecs.umich.eduLEAF(m5_dumpreset_stats)
1352632Sstever@eecs.umich.edu        DUMPRST_STATS(16, 17)
1362632Sstever@eecs.umich.edu        RET
1372632Sstever@eecs.umich.eduEND(m5_dumpreset_stats)
1382632Sstever@eecs.umich.edu
1392632Sstever@eecs.umich.edu        .align 4
1402632Sstever@eecs.umich.eduLEAF(m5_checkpoint)
1412632Sstever@eecs.umich.edu        CHECKPOINT(16, 17)
1422632Sstever@eecs.umich.edu        RET
1432632Sstever@eecs.umich.eduEND(m5_checkpoint)
1442632Sstever@eecs.umich.edu
1452632Sstever@eecs.umich.edu        .align 4
1462632Sstever@eecs.umich.eduLEAF(m5_readfile)
1472632Sstever@eecs.umich.edu        READFILE
1482632Sstever@eecs.umich.edu        RET
1492632Sstever@eecs.umich.eduEND(m5_readfile)
1502632Sstever@eecs.umich.edu
1512632Sstever@eecs.umich.edu        .align 4
1522632Sstever@eecs.umich.eduLEAF(m5_debugbreak)
1532632Sstever@eecs.umich.edu        DEBUGBREAK
1542632Sstever@eecs.umich.edu        RET
1552632Sstever@eecs.umich.eduEND(m5_debugbreak)
1562632Sstever@eecs.umich.edu
1572632Sstever@eecs.umich.edu        .align 4
1582632Sstever@eecs.umich.eduLEAF(m5_switchcpu)
1592632Sstever@eecs.umich.edu        SWITCHCPU
1602632Sstever@eecs.umich.edu        RET
1612632Sstever@eecs.umich.eduEND(m5_switchcpu)
1622632Sstever@eecs.umich.edu
1632632Sstever@eecs.umich.edu        .align 4
1642632Sstever@eecs.umich.eduLEAF(m5_addsymbol)
1652632Sstever@eecs.umich.edu        ADDSYMBOL(16, 17)
1662632Sstever@eecs.umich.edu        RET
1672632Sstever@eecs.umich.eduEND(m5_addsymbol)
1682632Sstever@eecs.umich.edu
1692632Sstever@eecs.umich.edu        .align 4
1702632Sstever@eecs.umich.eduLEAF(m5_panic)
1712632Sstever@eecs.umich.edu        PANIC
1722632Sstever@eecs.umich.edu        RET
1732632Sstever@eecs.umich.eduEND(m5_panic)
1742632Sstever@eecs.umich.edu
1752632Sstever@eecs.umich.edu
1762632Sstever@eecs.umich.edu        .align 4
1772632Sstever@eecs.umich.eduLEAF(m5_anbegin)
1782632Sstever@eecs.umich.edu        AN_BEGIN(16)
1792632Sstever@eecs.umich.edu        RET
1802632Sstever@eecs.umich.eduEND(m5_anbegin)
1812632Sstever@eecs.umich.edu
1822632Sstever@eecs.umich.edu
1832632Sstever@eecs.umich.edu        .align 4
1842632Sstever@eecs.umich.eduLEAF(m5_anwait)
1852632Sstever@eecs.umich.edu        AN_WAIT(16,17)
1862632Sstever@eecs.umich.edu        RET
1872632Sstever@eecs.umich.eduEND(m5_anwait)
1882632Sstever@eecs.umich.edu
1892632Sstever@eecs.umich.edu
1902632Sstever@eecs.umich.edu