jni_gem5Op.c revision 11358
18547Sprakash.ramrakhyani@arm.com/* 28547Sprakash.ramrakhyani@arm.com * Copyright (c) 2010 ARM Limited 38547Sprakash.ramrakhyani@arm.com * All rights reserved 48547Sprakash.ramrakhyani@arm.com * 58547Sprakash.ramrakhyani@arm.com * The license below extends only to copyright in the software and shall 68547Sprakash.ramrakhyani@arm.com * not be construed as granting a license to any other intellectual 78547Sprakash.ramrakhyani@arm.com * property including but not limited to intellectual property relating 88547Sprakash.ramrakhyani@arm.com * to a hardware implementation of the functionality of the software 98547Sprakash.ramrakhyani@arm.com * licensed hereunder. You may use the software subject to the license 108547Sprakash.ramrakhyani@arm.com * terms below provided that you ensure that this notice is replicated 118547Sprakash.ramrakhyani@arm.com * unmodified and in its entirety in all distributions of the software, 128547Sprakash.ramrakhyani@arm.com * modified or unmodified, in source code or in binary form. 138547Sprakash.ramrakhyani@arm.com * 148547Sprakash.ramrakhyani@arm.com * Redistribution and use in source and binary forms, with or without 158547Sprakash.ramrakhyani@arm.com * modification, are permitted provided that the following conditions are 168547Sprakash.ramrakhyani@arm.com * met: redistributions of source code must retain the above copyright 178547Sprakash.ramrakhyani@arm.com * notice, this list of conditions and the following disclaimer; 188547Sprakash.ramrakhyani@arm.com * redistributions in binary form must reproduce the above copyright 198547Sprakash.ramrakhyani@arm.com * notice, this list of conditions and the following disclaimer in the 208547Sprakash.ramrakhyani@arm.com * documentation and/or other materials provided with the distribution; 218547Sprakash.ramrakhyani@arm.com * neither the name of the copyright holders nor the names of its 228547Sprakash.ramrakhyani@arm.com * contributors may be used to endorse or promote products derived from 238547Sprakash.ramrakhyani@arm.com * this software without specific prior written permission. 248547Sprakash.ramrakhyani@arm.com * 258547Sprakash.ramrakhyani@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 268547Sprakash.ramrakhyani@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 278547Sprakash.ramrakhyani@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 288547Sprakash.ramrakhyani@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 298547Sprakash.ramrakhyani@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 308547Sprakash.ramrakhyani@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 318547Sprakash.ramrakhyani@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 328547Sprakash.ramrakhyani@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 338547Sprakash.ramrakhyani@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 348547Sprakash.ramrakhyani@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 358547Sprakash.ramrakhyani@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 368547Sprakash.ramrakhyani@arm.com * 378547Sprakash.ramrakhyani@arm.com * Authors: Prakash Ramrakhyani 388547Sprakash.ramrakhyani@arm.com */ 398547Sprakash.ramrakhyani@arm.com 408547Sprakash.ramrakhyani@arm.com#include <stdint.h> 418547Sprakash.ramrakhyani@arm.com 428547Sprakash.ramrakhyani@arm.com#include "jni_gem5Op.h" 438547Sprakash.ramrakhyani@arm.com#include "m5op.h" 448547Sprakash.ramrakhyani@arm.com 458547Sprakash.ramrakhyani@arm.com/** 468547Sprakash.ramrakhyani@arm.com C library interface for gem5Op JNI 478547Sprakash.ramrakhyani@arm.com 488547Sprakash.ramrakhyani@arm.com*/ 498547Sprakash.ramrakhyani@arm.com 508547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 518547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_arm(JNIEnv *env, jobject obj, jlong j_address) 528547Sprakash.ramrakhyani@arm.com{ 538547Sprakash.ramrakhyani@arm.com arm(j_address); 548547Sprakash.ramrakhyani@arm.com} 558547Sprakash.ramrakhyani@arm.com 568547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 578547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_quiesce(JNIEnv *env, jobject obj) 588547Sprakash.ramrakhyani@arm.com{ 598547Sprakash.ramrakhyani@arm.com quiesce(); 608547Sprakash.ramrakhyani@arm.com} 618547Sprakash.ramrakhyani@arm.com 628547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 638547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_quiesceNs(JNIEnv *env, jobject obj, jlong j_ns) 648547Sprakash.ramrakhyani@arm.com{ 658547Sprakash.ramrakhyani@arm.com quiesceNs(j_ns); 668547Sprakash.ramrakhyani@arm.com} 678547Sprakash.ramrakhyani@arm.com 688547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 698547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_quiesceCycle(JNIEnv *env, jobject obj, jlong j_cycles) 708547Sprakash.ramrakhyani@arm.com{ 718547Sprakash.ramrakhyani@arm.com quiesceCycle(j_cycles); 728547Sprakash.ramrakhyani@arm.com} 738547Sprakash.ramrakhyani@arm.com 748547Sprakash.ramrakhyani@arm.comJNIEXPORT jlong JNICALL 758547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_quiesceTime(JNIEnv *env, jobject obj) 768547Sprakash.ramrakhyani@arm.com{ 778547Sprakash.ramrakhyani@arm.com uint64_t time = quiesceTime(); 788547Sprakash.ramrakhyani@arm.com if (time & 0x8000000000000000ULL) 798547Sprakash.ramrakhyani@arm.com printf("Truncated return value from quiesceTime() to 63 bits\n"); 808547Sprakash.ramrakhyani@arm.com return (time & 0x7FFFFFFFFFFFFFFFULL); 818547Sprakash.ramrakhyani@arm.com} 828547Sprakash.ramrakhyani@arm.com 838547Sprakash.ramrakhyani@arm.comJNIEXPORT jlong JNICALL 848547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_rpns(JNIEnv *env, jobject obj) 858547Sprakash.ramrakhyani@arm.com{ 868547Sprakash.ramrakhyani@arm.com uint64_t time = rpns(); 878547Sprakash.ramrakhyani@arm.com if (time & 0x8000000000000000ULL) 888547Sprakash.ramrakhyani@arm.com printf("Truncated return value from rpns() to 63 bits\n"); 898547Sprakash.ramrakhyani@arm.com return (time & 0x7FFFFFFFFFFFFFFFULL); 908547Sprakash.ramrakhyani@arm.com} 918547Sprakash.ramrakhyani@arm.com 928547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 938547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_wakeCPU(JNIEnv *env, jobject obj, jlong j_cpuid) 948547Sprakash.ramrakhyani@arm.com{ 958547Sprakash.ramrakhyani@arm.com wakeCPU(j_cpuid); 968547Sprakash.ramrakhyani@arm.com} 978547Sprakash.ramrakhyani@arm.com 988547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 998547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_exit(JNIEnv *env, jobject obj, jlong j_ns_delay) 1008547Sprakash.ramrakhyani@arm.com{ 1018547Sprakash.ramrakhyani@arm.com m5_exit(j_ns_delay); 1028547Sprakash.ramrakhyani@arm.com} 1038547Sprakash.ramrakhyani@arm.com 10411358Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 10511358Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_fail(JNIEnv *env, jobject obj, jlong j_ns_delay, jlong j_code) 10611358Sprakash.ramrakhyani@arm.com{ 10711358Sprakash.ramrakhyani@arm.com m5_fail(j_ns_delay, j_code); 10811358Sprakash.ramrakhyani@arm.com} 10911358Sprakash.ramrakhyani@arm.com 1108547Sprakash.ramrakhyani@arm.comJNIEXPORT jlong JNICALL 11111358Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_initparam(JNIEnv *env, jobject obj, jlong j_key_str1, 11211358Sprakash.ramrakhyani@arm.com jlong j_key_str2) 1138547Sprakash.ramrakhyani@arm.com{ 11411358Sprakash.ramrakhyani@arm.com uint64_t param = m5_initparam(j_key_str1, j_key_str2); 1158547Sprakash.ramrakhyani@arm.com if (param & 0x8000000000000000ULL) 1168547Sprakash.ramrakhyani@arm.com printf("Truncated return value from m_initparam() to 63 bits\n"); 1178547Sprakash.ramrakhyani@arm.com return (param & 0x7FFFFFFFFFFFFFFFULL); 1188547Sprakash.ramrakhyani@arm.com} 1198547Sprakash.ramrakhyani@arm.com 1208547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 1218547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_checkpoint(JNIEnv *env, jobject obj, 1228547Sprakash.ramrakhyani@arm.com jlong j_ns_delay, jlong j_ns_period) 1238547Sprakash.ramrakhyani@arm.com{ 1248547Sprakash.ramrakhyani@arm.com m5_checkpoint(j_ns_delay, j_ns_period); 1258547Sprakash.ramrakhyani@arm.com} 1268547Sprakash.ramrakhyani@arm.com 1278547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 1288547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_reset_1stats(JNIEnv *env, jobject obj, 1298547Sprakash.ramrakhyani@arm.com jlong j_ns_delay, jlong j_ns_period) 1308547Sprakash.ramrakhyani@arm.com{ 1318547Sprakash.ramrakhyani@arm.com m5_reset_stats(j_ns_delay, j_ns_period); 1328547Sprakash.ramrakhyani@arm.com} 1338547Sprakash.ramrakhyani@arm.com 1348547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 1358547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_dump_1stats(JNIEnv *env, jobject obj, 1368547Sprakash.ramrakhyani@arm.com jlong j_ns_delay, jlong j_ns_period) 1378547Sprakash.ramrakhyani@arm.com{ 1388547Sprakash.ramrakhyani@arm.com m5_dump_stats(j_ns_delay, j_ns_period); 1398547Sprakash.ramrakhyani@arm.com} 1408547Sprakash.ramrakhyani@arm.com 1418547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 1428547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_dumpreset_1stats(JNIEnv *env, jobject obj, 1438547Sprakash.ramrakhyani@arm.com jlong j_ns_delay, jlong j_ns_period) 1448547Sprakash.ramrakhyani@arm.com{ 1458547Sprakash.ramrakhyani@arm.com m5_dumpreset_stats(j_ns_delay, j_ns_period); 1468547Sprakash.ramrakhyani@arm.com} 1478547Sprakash.ramrakhyani@arm.com 1488547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 1498547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_debugbreak(JNIEnv *env, jobject obj) 1508547Sprakash.ramrakhyani@arm.com{ 1518547Sprakash.ramrakhyani@arm.com m5_debugbreak(); 1528547Sprakash.ramrakhyani@arm.com} 1538547Sprakash.ramrakhyani@arm.com 1548547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 1558547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_switchcpu (JNIEnv *env, jobject obj) 1568547Sprakash.ramrakhyani@arm.com{ 1578547Sprakash.ramrakhyani@arm.com m5_switchcpu(); 1588547Sprakash.ramrakhyani@arm.com} 1598547Sprakash.ramrakhyani@arm.com 1608547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 1618547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_panic(JNIEnv *env, jobject obj) 1628547Sprakash.ramrakhyani@arm.com{ 1638547Sprakash.ramrakhyani@arm.com m5_panic(); 1648547Sprakash.ramrakhyani@arm.com} 1658547Sprakash.ramrakhyani@arm.com 1668547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 1678547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_work_1begin(JNIEnv *env, jobject obj, 1688547Sprakash.ramrakhyani@arm.com jlong j_workid, jlong j_threadid) 1698547Sprakash.ramrakhyani@arm.com{ 1708547Sprakash.ramrakhyani@arm.com m5_work_begin(j_workid, j_threadid); 1718547Sprakash.ramrakhyani@arm.com} 1728547Sprakash.ramrakhyani@arm.com 1738547Sprakash.ramrakhyani@arm.comJNIEXPORT void JNICALL 1748547Sprakash.ramrakhyani@arm.comJava_jni_gem5Op_work_1end(JNIEnv *env, jobject obj, 1758547Sprakash.ramrakhyani@arm.com jlong j_workid, jlong j_threadid) 1768547Sprakash.ramrakhyani@arm.com{ 1778547Sprakash.ramrakhyani@arm.com m5_work_end(j_workid, j_threadid); 1788547Sprakash.ramrakhyani@arm.com} 1798547Sprakash.ramrakhyani@arm.com 180