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