15613161c2
with the simulator. This program is generally compiled as the name m5 and installed in /usr/local/bin This command uses opcodes that are invalid on a normal system, so don't expect it to do anything on a real system. --HG-- extra : convert_revision : fcbae99d4b0d38ff4a9950f1ab53923baa1f667a
66 lines
No EOL
1.1 KiB
ArmAsm
66 lines
No EOL
1.1 KiB
ArmAsm
#include <machine/asm.h>
|
|
#include <regdef.h>
|
|
|
|
#define m5_op 0x01
|
|
#define arm_func 0x00
|
|
#define quiesce_func 0x01
|
|
#define ivlb_func 0x10
|
|
#define ivle_func 0x11
|
|
#define m5exit_func 0x20
|
|
#define initparam_func 0x30
|
|
#define resetstats_func 0x40
|
|
|
|
#define INST(op, ra, rb, func) \
|
|
.long (((op) << 26) | ((ra) << 21) | ((rb) << 16) | (func))
|
|
|
|
#define ARM(reg) INST(m5_op, reg, 0, arm_func)
|
|
#define QUIESCE() INST(m5_op, 0, 0, quiesce_func)
|
|
#define IVLB(reg) INST(m5_op, reg, 0, ivlb_func)
|
|
#define IVLE(reg) INST(m5_op, reg, 0, ivle_func)
|
|
#define M5_EXIT() INST(m5_op, 0, 0, m5exit_func)
|
|
#define INITPARAM(reg) INST(m5_op, reg, 0, initparam_func)
|
|
#define RESETSTATS() INST(m5_op, 0, 0, resetstats_func)
|
|
|
|
.set noreorder
|
|
|
|
.align 4
|
|
LEAF(arm)
|
|
ARM(16)
|
|
RET
|
|
END(arm)
|
|
|
|
.align 4
|
|
LEAF(quiesce)
|
|
QUIESCE()
|
|
RET
|
|
END(quiesce)
|
|
|
|
.align 4
|
|
LEAF(ivlb)
|
|
IVLB(16)
|
|
RET
|
|
END(ivlb)
|
|
|
|
.align 4
|
|
LEAF(ivle)
|
|
IVLE(16)
|
|
RET
|
|
END(ivle)
|
|
|
|
.align 4
|
|
LEAF(m5exit)
|
|
M5_EXIT()
|
|
RET
|
|
END(m5exit)
|
|
|
|
.align 4
|
|
LEAF(initparam)
|
|
INITPARAM(0)
|
|
RET
|
|
END(initparam)
|
|
|
|
.align 4
|
|
LEAF(resetstats)
|
|
RESETSTATS()
|
|
RET
|
|
END(resetstats) |