112161Sandreas.sandberg@arm.com/* 212161Sandreas.sandberg@arm.com * Copyright (c) 2003-2006 The Regents of The University of Michigan 312161Sandreas.sandberg@arm.com * All rights reserved. 412161Sandreas.sandberg@arm.com * 512161Sandreas.sandberg@arm.com * Redistribution and use in source and binary forms, with or without 612161Sandreas.sandberg@arm.com * modification, are permitted provided that the following conditions are 712161Sandreas.sandberg@arm.com * met: redistributions of source code must retain the above copyright 812161Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer; 912161Sandreas.sandberg@arm.com * redistributions in binary form must reproduce the above copyright 1012161Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer in the 1112161Sandreas.sandberg@arm.com * documentation and/or other materials provided with the distribution; 1212161Sandreas.sandberg@arm.com * neither the name of the copyright holders nor the names of its 1312161Sandreas.sandberg@arm.com * contributors may be used to endorse or promote products derived from 1412161Sandreas.sandberg@arm.com * this software without specific prior written permission. 1512161Sandreas.sandberg@arm.com * 1612161Sandreas.sandberg@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1712161Sandreas.sandberg@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1812161Sandreas.sandberg@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1912161Sandreas.sandberg@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2012161Sandreas.sandberg@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2112161Sandreas.sandberg@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2212161Sandreas.sandberg@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2312161Sandreas.sandberg@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2412161Sandreas.sandberg@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2512161Sandreas.sandberg@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2612161Sandreas.sandberg@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2712161Sandreas.sandberg@arm.com * 2812161Sandreas.sandberg@arm.com * Authors: Nathan Binkert 2912161Sandreas.sandberg@arm.com * Ali Saidi 3012161Sandreas.sandberg@arm.com */ 3112161Sandreas.sandberg@arm.com 3212161Sandreas.sandberg@arm.com#ifndef __GEM5_M5OP_H__ 3312161Sandreas.sandberg@arm.com#define __GEM5_M5OP_H__ 3412161Sandreas.sandberg@arm.com 3512161Sandreas.sandberg@arm.com#ifdef __cplusplus 3612161Sandreas.sandberg@arm.comextern "C" { 3712161Sandreas.sandberg@arm.com#endif 3812161Sandreas.sandberg@arm.com 3912161Sandreas.sandberg@arm.com#include <stdint.h> 4012161Sandreas.sandberg@arm.com 4112161Sandreas.sandberg@arm.com#include <gem5/asm/generic/m5op_flags.h> 4212161Sandreas.sandberg@arm.com 4312161Sandreas.sandberg@arm.comvoid m5_arm(uint64_t address); 4412161Sandreas.sandberg@arm.comvoid m5_quiesce(void); 4512161Sandreas.sandberg@arm.comvoid m5_quiesce_ns(uint64_t ns); 4612161Sandreas.sandberg@arm.comvoid m5_quiesce_cycle(uint64_t cycles); 4712161Sandreas.sandberg@arm.comuint64_t m5_quiesce_time(void); 4812161Sandreas.sandberg@arm.comuint64_t m5_rpns(); 4912161Sandreas.sandberg@arm.comvoid m5_wake_cpu(uint64_t cpuid); 5012161Sandreas.sandberg@arm.com 5112161Sandreas.sandberg@arm.comvoid m5_exit(uint64_t ns_delay); 5212161Sandreas.sandberg@arm.comvoid m5_fail(uint64_t ns_delay, uint64_t code); 5312161Sandreas.sandberg@arm.comuint64_t m5_init_param(uint64_t key_str1, uint64_t key_str2); 5412161Sandreas.sandberg@arm.comvoid m5_checkpoint(uint64_t ns_delay, uint64_t ns_period); 5512161Sandreas.sandberg@arm.comvoid m5_reset_stats(uint64_t ns_delay, uint64_t ns_period); 5612161Sandreas.sandberg@arm.comvoid m5_dump_stats(uint64_t ns_delay, uint64_t ns_period); 5712161Sandreas.sandberg@arm.comvoid m5_dump_reset_stats(uint64_t ns_delay, uint64_t ns_period); 5812161Sandreas.sandberg@arm.comuint64_t m5_read_file(void *buffer, uint64_t len, uint64_t offset); 5912161Sandreas.sandberg@arm.comuint64_t m5_write_file(void *buffer, uint64_t len, uint64_t offset, 6012161Sandreas.sandberg@arm.com const char *filename); 6112161Sandreas.sandberg@arm.comvoid m5_debug_break(void); 6212161Sandreas.sandberg@arm.comvoid m5_switch_cpu(void); 6312161Sandreas.sandberg@arm.comvoid m5_dist_toggle_sync(void); 6412161Sandreas.sandberg@arm.comvoid m5_add_symbol(uint64_t addr, char *symbol); 6512423Sjang.hanhwi@gmail.comvoid m5_load_symbol(); 6612161Sandreas.sandberg@arm.comvoid m5_panic(void); 6712161Sandreas.sandberg@arm.comvoid m5_work_begin(uint64_t workid, uint64_t threadid); 6812161Sandreas.sandberg@arm.comvoid m5_work_end(uint64_t workid, uint64_t threadid); 6912161Sandreas.sandberg@arm.com 7012161Sandreas.sandberg@arm.com// These operations are for critical path annotation 7112161Sandreas.sandberg@arm.comvoid m5a_bsm(char *sm, const void *id, int flags); 7212161Sandreas.sandberg@arm.comvoid m5a_esm(char *sm); 7312161Sandreas.sandberg@arm.comvoid m5a_begin(int flags, char *st); 7412161Sandreas.sandberg@arm.comvoid m5a_end(void); 7512161Sandreas.sandberg@arm.comvoid m5a_q(const void *id, char *q, int count); 7612161Sandreas.sandberg@arm.comvoid m5a_dq(const void *id, char *q, int count); 7712161Sandreas.sandberg@arm.comvoid m5a_wf(const void *id, char *q, char *sm, int count); 7812161Sandreas.sandberg@arm.comvoid m5a_we(const void *id, char *q, char *sm, int count); 7912161Sandreas.sandberg@arm.comvoid m5a_ws(const void *id, char *q, char *sm); 8012161Sandreas.sandberg@arm.comvoid m5a_sq(const void *id, char *q, int count, int flags); 8112161Sandreas.sandberg@arm.comvoid m5a_aq(const void *id, char *q, int count); 8212161Sandreas.sandberg@arm.comvoid m5a_pq(const void *id, char *q, int count); 8312161Sandreas.sandberg@arm.comvoid m5a_l(char *lsm, const void *id, char *sm); 8412161Sandreas.sandberg@arm.comvoid m5a_identify(uint64_t id); 8512161Sandreas.sandberg@arm.comuint64_t m5a_getid(void); 8612161Sandreas.sandberg@arm.com 8712161Sandreas.sandberg@arm.com#ifdef __cplusplus 8812161Sandreas.sandberg@arm.com} 8912161Sandreas.sandberg@arm.com#endif 9012161Sandreas.sandberg@arm.com#endif // __GEM5_M5OP_H__ 91