m5ops.h revision 12423:97aad565ab2c
12579SN/A/*
22579SN/A * Copyright (c) 2016 ARM Limited
32579SN/A * All rights reserved
42579SN/A *
52579SN/A * The license below extends only to copyright in the software and shall
62579SN/A * not be construed as granting a license to any other intellectual
72579SN/A * property including but not limited to intellectual property relating
82579SN/A * to a hardware implementation of the functionality of the software
92579SN/A * licensed hereunder.  You may use the software subject to the license
102579SN/A * terms below provided that you ensure that this notice is replicated
112579SN/A * unmodified and in its entirety in all distributions of the software,
122579SN/A * modified or unmodified, in source code or in binary form.
132579SN/A *
142579SN/A * Copyright (c) 2003-2006 The Regents of The University of Michigan
152579SN/A * All rights reserved.
162579SN/A *
172579SN/A * Redistribution and use in source and binary forms, with or without
182579SN/A * modification, are permitted provided that the following conditions are
192579SN/A * met: redistributions of source code must retain the above copyright
202579SN/A * notice, this list of conditions and the following disclaimer;
212579SN/A * redistributions in binary form must reproduce the above copyright
222579SN/A * notice, this list of conditions and the following disclaimer in the
232579SN/A * documentation and/or other materials provided with the distribution;
242579SN/A * neither the name of the copyright holders nor the names of its
252579SN/A * contributors may be used to endorse or promote products derived from
262579SN/A * this software without specific prior written permission.
272665Ssaidi@eecs.umich.edu *
282665Ssaidi@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
292579SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
302579SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
312599SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
322599SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
332579SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
342579SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
352579SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
362579SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
372579SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
382579SN/A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
392579SN/A *
403113Sgblack@eecs.umich.edu * Authors: Nathan Binkert
413113Sgblack@eecs.umich.edu *          Ali Saidi
423113Sgblack@eecs.umich.edu *          Andreas Sandberg
433113Sgblack@eecs.umich.edu */
443113Sgblack@eecs.umich.edu
453113Sgblack@eecs.umich.edu#ifndef __GEM5_ASM_GENERIC_M5OPS_H__
463113Sgblack@eecs.umich.edu#define __GEM5_ASM_GENERIC_M5OPS_H__
473113Sgblack@eecs.umich.edu
483113Sgblack@eecs.umich.edu#include <gem5/asm/generic/m5op_flags.h>
493113Sgblack@eecs.umich.edu
503113Sgblack@eecs.umich.edu#define M5OP_ARM                0x00
513113Sgblack@eecs.umich.edu#define M5OP_QUIESCE            0x01
523113Sgblack@eecs.umich.edu#define M5OP_QUIESCE_NS         0x02
533113Sgblack@eecs.umich.edu#define M5OP_QUIESCE_CYCLE      0x03
543113Sgblack@eecs.umich.edu#define M5OP_QUIESCE_TIME       0x04
553113Sgblack@eecs.umich.edu#define M5OP_RPNS               0x07
563113Sgblack@eecs.umich.edu#define M5OP_WAKE_CPU           0x09
573113Sgblack@eecs.umich.edu#define M5OP_DEPRECATED1        0x10 // obsolete ivlb
583113Sgblack@eecs.umich.edu#define M5OP_DEPRECATED2        0x11 // obsolete ivle
592579SN/A#define M5OP_DEPRECATED3        0x20 // deprecated exit function
602579SN/A#define M5OP_EXIT               0x21
615543Ssaidi@eecs.umich.edu#define M5OP_FAIL               0x22
625543Ssaidi@eecs.umich.edu#define M5OP_INIT_PARAM         0x30
635543Ssaidi@eecs.umich.edu#define M5OP_LOAD_SYMBOL        0x31
645543Ssaidi@eecs.umich.edu#define M5OP_RESET_STATS        0x40
655543Ssaidi@eecs.umich.edu#define M5OP_DUMP_STATS         0x41
665543Ssaidi@eecs.umich.edu#define M5OP_DUMP_RESET_STATS   0x42
675543Ssaidi@eecs.umich.edu#define M5OP_CHECKPOINT         0x43
685543Ssaidi@eecs.umich.edu#define M5OP_WRITE_FILE         0x4F
695543Ssaidi@eecs.umich.edu#define M5OP_READ_FILE          0x50
705543Ssaidi@eecs.umich.edu#define M5OP_DEBUG_BREAK        0x51
715543Ssaidi@eecs.umich.edu#define M5OP_SWITCH_CPU         0x52
725543Ssaidi@eecs.umich.edu#define M5OP_ADD_SYMBOL         0x53
735543Ssaidi@eecs.umich.edu#define M5OP_PANIC              0x54
745543Ssaidi@eecs.umich.edu
755543Ssaidi@eecs.umich.edu#define M5OP_RESERVED2          0x56 // Reserved for user
762579SN/A#define M5OP_RESERVED3          0x57 // Reserved for user
772579SN/A#define M5OP_RESERVED4          0x58 // Reserved for user
782579SN/A#define M5OP_RESERVED5          0x59 // Reserved for user
792579SN/A
808600Ssteve.reinhardt@amd.com#define M5OP_WORK_BEGIN         0x5a
8111320Ssteve.reinhardt@amd.com#define M5OP_WORK_END           0x5b
8211320Ssteve.reinhardt@amd.com
836640Svince@csl.cornell.edu#define M5OP_SE_SYSCALL         0x60
846640Svince@csl.cornell.edu#define M5OP_SE_PAGE_FAULT      0x61
856640Svince@csl.cornell.edu#define M5OP_DIST_TOGGLE_SYNC   0x62
866640Svince@csl.cornell.edu
876640Svince@csl.cornell.edu// These operations are for critical path annotation
886640Svince@csl.cornell.edu#define M5OP_ANNOTATE           0x55
896640Svince@csl.cornell.edu#define M5OP_AN_BSM             0x1
906640Svince@csl.cornell.edu#define M5OP_AN_ESM             0x2
916640Svince@csl.cornell.edu#define M5OP_AN_BEGIN           0x3
926640Svince@csl.cornell.edu#define M5OP_AN_END             0x4
936640Svince@csl.cornell.edu#define M5OP_AN_Q               0x6
946640Svince@csl.cornell.edu#define M5OP_AN_DQ              0x7
956640Svince@csl.cornell.edu#define M5OP_AN_WF              0x8
966640Svince@csl.cornell.edu#define M5OP_AN_WE              0x9
979141Smarc.orr@gmail.com#define M5OP_AN_RQ              0xA
989141Smarc.orr@gmail.com#define M5OP_AN_WS              0xB
999141Smarc.orr@gmail.com#define M5OP_AN_SQ              0xC
1009141Smarc.orr@gmail.com#define M5OP_AN_AQ              0xD
1019141Smarc.orr@gmail.com#define M5OP_AN_PQ              0xE
1029141Smarc.orr@gmail.com#define M5OP_AN_L               0xF
1039141Smarc.orr@gmail.com#define M5OP_AN_IDENTIFY        0x10
1049141Smarc.orr@gmail.com#define M5OP_AN_GETID           0x11
1059141Smarc.orr@gmail.com
1069141Smarc.orr@gmail.com
1079141Smarc.orr@gmail.com#define M5OP_FOREACH                                            \
1089141Smarc.orr@gmail.com    M5OP(m5_arm, M5OP_ARM, 0);                                  \
1099141Smarc.orr@gmail.com    M5OP(m5_quiesce, M5OP_QUIESCE, 0);                          \
1109141Smarc.orr@gmail.com    M5OP(m5_quiesce_ns, M5OP_QUIESCE_NS, 0);                    \
1119141Smarc.orr@gmail.com    M5OP(m5_quiesce_cycle, M5OP_QUIESCE_CYCLE, 0);              \
1129141Smarc.orr@gmail.com    M5OP(m5_quiesce_time, M5OP_QUIESCE_TIME, 0);                \
1139141Smarc.orr@gmail.com    M5OP(m5_rpns, M5OP_RPNS, 0);                                \
1149141Smarc.orr@gmail.com    M5OP(m5_wake_cpu, M5OP_WAKE_CPU, 0);                        \
1159141Smarc.orr@gmail.com    M5OP(m5_exit, M5OP_EXIT, 0);                                \
1169141Smarc.orr@gmail.com    M5OP(m5_fail, M5OP_FAIL, 0);                                \
1179141Smarc.orr@gmail.com    M5OP(m5_init_param, M5OP_INIT_PARAM, 0);                    \
1189141Smarc.orr@gmail.com    M5OP(m5_load_symbol, M5OP_LOAD_SYMBOL, 0);                  \
1199141Smarc.orr@gmail.com    M5OP(m5_reset_stats, M5OP_RESET_STATS, 0);                  \
1209141Smarc.orr@gmail.com    M5OP(m5_dump_stats, M5OP_DUMP_STATS, 0);                    \
1219141Smarc.orr@gmail.com    M5OP(m5_dump_reset_stats, M5OP_DUMP_RESET_STATS, 0);        \
1229141Smarc.orr@gmail.com    M5OP(m5_checkpoint, M5OP_CHECKPOINT, 0);                    \
1239141Smarc.orr@gmail.com    M5OP(m5_read_file, M5OP_READ_FILE, 0);                      \
1249141Smarc.orr@gmail.com    M5OP(m5_write_file, M5OP_WRITE_FILE, 0);                    \
1259141Smarc.orr@gmail.com    M5OP(m5_debug_break, M5OP_DEBUG_BREAK, 0);                  \
1262579SN/A    M5OP(m5_switch_cpu, M5OP_SWITCH_CPU, 0);                    \
1272579SN/A    M5OP(m5_add_symbol, M5OP_ADD_SYMBOL, 0);                    \
1284188Sgblack@eecs.umich.edu    M5OP(m5_panic, M5OP_PANIC, 0);                              \
1294188Sgblack@eecs.umich.edu    M5OP(m5_work_begin, M5OP_WORK_BEGIN, 0);                    \
1304188Sgblack@eecs.umich.edu    M5OP(m5_work_end, M5OP_WORK_END, 0);                        \
1314188Sgblack@eecs.umich.edu    M5OP(m5_dist_toggle_sync, M5OP_DIST_TOGGLE_SYNC, 0);
1324188Sgblack@eecs.umich.edu
1334188Sgblack@eecs.umich.edu#define M5OP_FOREACH_ANNOTATION                      \
1344188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_bsm, M5OP_AN_BSM);             \
1354188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_esm, M5OP_AN_ESM);             \
1364188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_begin, M5OP_AN_BEGIN);         \
1374188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_end, M5OP_AN_END);             \
1384188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_q, M5OP_AN_Q);                 \
1394188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_dq, M5OP_AN_DQ);               \
1404188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_wf, M5OP_AN_WF);               \
1414188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_we, M5OP_AN_WE);               \
1424188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_rq, M5OP_AN_RQ);               \
1434188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_ws, M5OP_AN_WS);               \
1444188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_sq, M5OP_AN_SQ);               \
1454188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_aq, M5OP_AN_AQ);               \
1464188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_pq, M5OP_AN_PQ);               \
1474188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_l, M5OP_AN_L);                 \
1484188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_identify, M5OP_AN_IDENTIFY);   \
1494188Sgblack@eecs.umich.edu    M5_ANNOTATION(m5a_getid, M5OP_AN_GETID);
1504188Sgblack@eecs.umich.edu
1514188Sgblack@eecs.umich.edu#endif //  __GEM5_ASM_GENERIC_M5OPS_H__
1524188Sgblack@eecs.umich.edu