14090Ssaidi@eecs.umich.edu/*
24090Ssaidi@eecs.umich.edu * Copyright (c) 2003-2006 The Regents of The University of Michigan
34090Ssaidi@eecs.umich.edu * All rights reserved.
44090Ssaidi@eecs.umich.edu *
54090Ssaidi@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
64090Ssaidi@eecs.umich.edu * modification, are permitted provided that the following conditions are
74090Ssaidi@eecs.umich.edu * met: redistributions of source code must retain the above copyright
84090Ssaidi@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
94090Ssaidi@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
104090Ssaidi@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
114090Ssaidi@eecs.umich.edu * documentation and/or other materials provided with the distribution;
124090Ssaidi@eecs.umich.edu * neither the name of the copyright holders nor the names of its
134090Ssaidi@eecs.umich.edu * contributors may be used to endorse or promote products derived from
144090Ssaidi@eecs.umich.edu * this software without specific prior written permission.
154090Ssaidi@eecs.umich.edu *
164090Ssaidi@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
174090Ssaidi@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
184090Ssaidi@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
194090Ssaidi@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
204090Ssaidi@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
214090Ssaidi@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
224090Ssaidi@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
234090Ssaidi@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
244090Ssaidi@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
254090Ssaidi@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
264090Ssaidi@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
274090Ssaidi@eecs.umich.edu *
284090Ssaidi@eecs.umich.edu * Authors: Nathan Binkert
294090Ssaidi@eecs.umich.edu *          Ali Saidi
304090Ssaidi@eecs.umich.edu */
314090Ssaidi@eecs.umich.edu
324090Ssaidi@eecs.umich.edu#define m5_op 0x2
334090Ssaidi@eecs.umich.edu#define m5_op3 0x37
344090Ssaidi@eecs.umich.edu
3512157Sandreas.sandberg@arm.com#include <gem5/asm/generic/m5ops.h>
364090Ssaidi@eecs.umich.edu
374090Ssaidi@eecs.umich.edu#define INST(func, rs1, rs2, rd) \
384090Ssaidi@eecs.umich.edu        .long (m5_op) << 30 | (rd) << 25 | (m5_op3) << 19 | (func) << 7 |  \
394090Ssaidi@eecs.umich.edu              (rs1) << 14 | (rs2) << 0;
404090Ssaidi@eecs.umich.edu
414090Ssaidi@eecs.umich.edu
424090Ssaidi@eecs.umich.edu#define LEAF(func)                \
434090Ssaidi@eecs.umich.edu        .section ".text";         \
444090Ssaidi@eecs.umich.edu        .align   4;               \
454090Ssaidi@eecs.umich.edu        .global  func;            \
464090Ssaidi@eecs.umich.edu        .type    func, #function; \
474090Ssaidi@eecs.umich.edufunc:
484090Ssaidi@eecs.umich.edu
494090Ssaidi@eecs.umich.edu#define END(func)         \
504090Ssaidi@eecs.umich.edu        .size    func, (.-func)
514090Ssaidi@eecs.umich.edu
5212157Sandreas.sandberg@arm.com#define DEBUGBREAK INST(M5OP_DEBUG_BREAK, 0, 0, 0)
5312157Sandreas.sandberg@arm.com#define M5EXIT INST(M5OP_EXIT, 0, 0, 0)
5412157Sandreas.sandberg@arm.com#define PANIC INST(M5OP_PANIC, 0, 0, 0)
5512157Sandreas.sandberg@arm.com#define READFILE INST(M5OP_READ_FILE, 0, 0, 0)
564090Ssaidi@eecs.umich.edu
574090Ssaidi@eecs.umich.eduLEAF(m5_exit)
584090Ssaidi@eecs.umich.edu    retl
594090Ssaidi@eecs.umich.edu    M5EXIT
604090Ssaidi@eecs.umich.eduEND(m5_exit)
614090Ssaidi@eecs.umich.edu
624090Ssaidi@eecs.umich.eduLEAF(m5_panic)
634090Ssaidi@eecs.umich.edu    retl
644090Ssaidi@eecs.umich.edu    PANIC
654090Ssaidi@eecs.umich.eduEND(m5_panic)
664090Ssaidi@eecs.umich.edu
6712160Sandreas.sandberg@arm.comLEAF(m5_read_file)
684098Ssaidi@eecs.umich.edu    retl
694098Ssaidi@eecs.umich.edu    READFILE
7012160Sandreas.sandberg@arm.comEND(m5_read_file)
714098Ssaidi@eecs.umich.edu
7212160Sandreas.sandberg@arm.comLEAF(m5_debug_break)
734098Ssaidi@eecs.umich.edu    retl
744098Ssaidi@eecs.umich.edu    DEBUGBREAK
7512160Sandreas.sandberg@arm.comEND(m5_debug_break)
764090Ssaidi@eecs.umich.edu
774090Ssaidi@eecs.umich.edu/* !!!!!! All code below here just panics !!!!!! */
7812160Sandreas.sandberg@arm.comLEAF(m5_arm)
794090Ssaidi@eecs.umich.edu    retl
804090Ssaidi@eecs.umich.edu    PANIC
8112160Sandreas.sandberg@arm.comEND(m5_arm)
824090Ssaidi@eecs.umich.edu
8312160Sandreas.sandberg@arm.comLEAF(m5_quiesce)
844090Ssaidi@eecs.umich.edu    retl
854090Ssaidi@eecs.umich.edu    PANIC
8612160Sandreas.sandberg@arm.comEND(m5_quiesce)
874090Ssaidi@eecs.umich.edu
8812160Sandreas.sandberg@arm.comLEAF(m5_quiesce_ns)
894090Ssaidi@eecs.umich.edu    retl
904090Ssaidi@eecs.umich.edu    PANIC
9112160Sandreas.sandberg@arm.comEND(m5_quiesce_ns)
924090Ssaidi@eecs.umich.edu
9312160Sandreas.sandberg@arm.comLEAF(m5_quiesce_cycle)
944090Ssaidi@eecs.umich.edu    retl
954090Ssaidi@eecs.umich.edu    PANIC
9612160Sandreas.sandberg@arm.comEND(m5_quiesce_cycle)
974090Ssaidi@eecs.umich.edu
9812160Sandreas.sandberg@arm.comLEAF(m5_quiesce_time)
994090Ssaidi@eecs.umich.edu    retl
1004090Ssaidi@eecs.umich.edu    PANIC
10112160Sandreas.sandberg@arm.comEND(m5_quiesce_time)
1024090Ssaidi@eecs.umich.edu
10312160Sandreas.sandberg@arm.comLEAF(m5_init_param)
1044090Ssaidi@eecs.umich.edu    retl
1054090Ssaidi@eecs.umich.edu    PANIC
10612160Sandreas.sandberg@arm.comEND(m5_init_param)
1074090Ssaidi@eecs.umich.edu
10812160Sandreas.sandberg@arm.comLEAF(m5_load_symbol)
1094090Ssaidi@eecs.umich.edu    retl
1104090Ssaidi@eecs.umich.edu    PANIC
11112160Sandreas.sandberg@arm.comEND(m5_load_symbol)
1124090Ssaidi@eecs.umich.edu
1134090Ssaidi@eecs.umich.eduLEAF(m5_reset_stats)
1144090Ssaidi@eecs.umich.edu    retl
1154090Ssaidi@eecs.umich.edu    PANIC
1164090Ssaidi@eecs.umich.eduEND(m5_reset_stats)
1174090Ssaidi@eecs.umich.edu
1184090Ssaidi@eecs.umich.eduLEAF(m5_dump_stats)
1194090Ssaidi@eecs.umich.edu    retl
1204090Ssaidi@eecs.umich.edu    PANIC
1214090Ssaidi@eecs.umich.eduEND(m5_dump_stats)
1224090Ssaidi@eecs.umich.edu
12312160Sandreas.sandberg@arm.comLEAF(m5_dump_reset_stats)
1244090Ssaidi@eecs.umich.edu    retl
1254090Ssaidi@eecs.umich.edu    PANIC
12612160Sandreas.sandberg@arm.comEND(m5_dump_reset_stats)
1274090Ssaidi@eecs.umich.edu
1284090Ssaidi@eecs.umich.eduLEAF(m5_checkpoint)
1294090Ssaidi@eecs.umich.edu    retl
1304090Ssaidi@eecs.umich.edu    PANIC
1314090Ssaidi@eecs.umich.eduEND(m5_checkpoint)
1324090Ssaidi@eecs.umich.edu
13312160Sandreas.sandberg@arm.comLEAF(m5_switch_cpu)
1344090Ssaidi@eecs.umich.edu    retl
1354090Ssaidi@eecs.umich.edu    PANIC
13612160Sandreas.sandberg@arm.comEND(m5_switch_cpu)
1374090Ssaidi@eecs.umich.edu
13812160Sandreas.sandberg@arm.comLEAF(m5_add_symbol)
1394090Ssaidi@eecs.umich.edu    retl
1404090Ssaidi@eecs.umich.edu    PANIC
14112160Sandreas.sandberg@arm.comEND(m5_add_symbol)
1424090Ssaidi@eecs.umich.edu
1434090Ssaidi@eecs.umich.eduLEAF(m5_anbegin)
1444090Ssaidi@eecs.umich.edu    retl
1454090Ssaidi@eecs.umich.edu    PANIC
1464090Ssaidi@eecs.umich.eduEND(m5_anbegin)
1474090Ssaidi@eecs.umich.edu
1484090Ssaidi@eecs.umich.eduLEAF(m5_anwait)
1494090Ssaidi@eecs.umich.edu    retl
1504090Ssaidi@eecs.umich.edu    PANIC
1514090Ssaidi@eecs.umich.eduEND(m5_anwait)
1524090Ssaidi@eecs.umich.edu
1534090Ssaidi@eecs.umich.edu
154