Add FPU instructions.
Fix command mode error. Update/FIx help pages. Fix "make re" error.
This commit is contained in:
parent
e2976733c3
commit
284cf435d6
2
Makefile
2
Makefile
|
@ -82,7 +82,7 @@ fclean: clean
|
|||
@ printf "$(red)Delete binary files$(nocolor)\n"
|
||||
rm -f $(EXEC)
|
||||
|
||||
re: fclean all install
|
||||
re: fclean all
|
||||
|
||||
|
||||
|
||||
|
|
348
include/opcode.h
348
include/opcode.h
|
@ -386,9 +386,236 @@ static const struct opcode opcode[] = {
|
|||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
//TODO
|
||||
//TODO ADD FPU INSTRUCTIONS
|
||||
//TODO
|
||||
{
|
||||
.name = "fabs fr%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b1111000001011101,
|
||||
.arg_mask = {
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fadd fr%d,fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000000000,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fcmp/eq fr%d,fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000000100,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fcmp/gt fr%d,fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000000101,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fdiv fr%d,fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000000011,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fldi0 fr%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b1111000010001101,
|
||||
.arg_mask = {
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fldi1 fr%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b1111000010011101,
|
||||
.arg_mask = {
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "flds fr%d,FPUL",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b1111000000011101,
|
||||
.arg_mask = {
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "float FPUL,fr%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b1111000000101101,
|
||||
.arg_mask = {
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fmac FR0,fr%d,fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000001110,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fmov fr%d,fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000001100,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fmov.s @(r0,r%d),fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000000110,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fmov.s @r%d+,fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000001001,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fmov.s @r%d,fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000001000,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fmov.s fr%d,@(r0,r%d)",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000000111,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fmov.s fr%d,@-r%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000001011,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fmov.s fr%d,@r%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000001010,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fmul fr%d,fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000000010,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fneg fr%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b1111000001001101,
|
||||
.arg_mask = {
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fsqrt fr%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b1111000001101101,
|
||||
.arg_mask = {
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fsts FPUL,fr%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b1111000000001101,
|
||||
.arg_mask = {
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "fsub fr%d,fr%d",
|
||||
.mask = 0b1111000000001111,
|
||||
.code = 0b1111000000000001,
|
||||
.arg_mask = {
|
||||
0b0000000011110000,
|
||||
0b0000111100000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "ftrc fr%d,FPUL",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b1111000000111101,
|
||||
.arg_mask = {
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "jmp @r%d",
|
||||
.mask = 0b1111000011111111,
|
||||
|
@ -740,9 +967,26 @@ static const struct opcode opcode[] = {
|
|||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
//TODO
|
||||
//TODO ADD "LDS rm,FPSCR" AND "LDS rm,FPUL"
|
||||
//TODO
|
||||
{
|
||||
.name = "lds r%d,FPSCR",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b0100000001101010,
|
||||
.arg_mask ={
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "lds r%d,FPUL",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b0100000001011010,
|
||||
.arg_mask ={
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "lds r%d,MACH",
|
||||
.mask = 0b1111000011111111,
|
||||
|
@ -833,9 +1077,26 @@ static const struct opcode opcode[] = {
|
|||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
//TODO
|
||||
//TODO ADD "lds.l @rm+,FPSCR" and "lds.l @rm+,FPUL"
|
||||
//TODO
|
||||
{
|
||||
.name = "lds.l @r%d+,FPSCR",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b0100000001100110,
|
||||
.arg_mask ={
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "lds.l @r%d+,FPUL",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b0100000001010110,
|
||||
.arg_mask ={
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "lds.l @r%d+,MACH",
|
||||
.mask = 0b1111000011111111,
|
||||
|
@ -1476,9 +1737,26 @@ static const struct opcode opcode[] = {
|
|||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
//TODO
|
||||
//TODO ADD "setrc rm" and "setrc #imm"
|
||||
//TODO
|
||||
{
|
||||
.name = "setrc r%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b0100000000010100,
|
||||
.arg_mask ={
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "setrc #h'%x",
|
||||
.mask = 0b1111111100000000,
|
||||
.code = 0b1000001000000000,
|
||||
.arg_mask ={
|
||||
0b0000000011111111,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "sets",
|
||||
.mask = 0b1111111111111111,
|
||||
|
@ -1949,9 +2227,26 @@ static const struct opcode opcode[] = {
|
|||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
//TODO
|
||||
//TODO add "sts fpscr,rn" and "sts fpul,rn"
|
||||
//TODO
|
||||
{
|
||||
.name = "sts FPSCR,r%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b0000000001101010,
|
||||
.arg_mask ={
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "sts FPUL,r%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b0000000001011010,
|
||||
.arg_mask ={
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "sts MACH,r%d",
|
||||
.mask = 0b1111000011111111,
|
||||
|
@ -2042,9 +2337,26 @@ static const struct opcode opcode[] = {
|
|||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
//TODO
|
||||
//TODO add "sts.l fpscr,@-rn" and "sts.l fpul,@-rn"
|
||||
//TODO
|
||||
{
|
||||
.name = "sts.l FPSCR,@-r%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b0100000001100010,
|
||||
.arg_mask ={
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "sts.l FPUL,@-r%d",
|
||||
.mask = 0b1111000011111111,
|
||||
.code = 0b0100000001010010,
|
||||
.arg_mask ={
|
||||
0b0000111100000000,
|
||||
0b0000000000000000,
|
||||
0b0000000000000000
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "sts.l MACH,@-r%d",
|
||||
.mask = 0b1111000011111111,
|
||||
|
|
|
@ -29,13 +29,20 @@ CMDBLOCK("jmp", &address_jump,
|
|||
"Area P2 - 500Mo - MMU disable\n"
|
||||
"0xa0000000 : ROM (no cache)\n"
|
||||
"0xa8000000 : RAM (no cache)\n"
|
||||
"Area P3 - 500Mo - MMU ebable\n"
|
||||
"Area P3 - 500Mo - MMU enable\n"
|
||||
"?????? CRASH ??????\n"
|
||||
"Area P4 - 500Mo - MMU ~enable\n"
|
||||
"Area P4 - 500Mo - MMU disable\n"
|
||||
"0xe0000000 : Store queue area\n"
|
||||
"0xe4000000 : MMU disable\n"
|
||||
"0xe5000000 : On chip RAM\n"
|
||||
"0xe6000000 : MMU disable\n"
|
||||
"0xf0000000 : Instr. cache addr\n"
|
||||
"0xf1000000 : Instr. cache data\n"
|
||||
"0xf2000000 : Instr. TLB addr\n"
|
||||
"0xf3000000 : Instr. TLB data\n"
|
||||
"0xf4000000 : Operand cache addr\n"
|
||||
"0xf5000000 : Operand cache data\n"
|
||||
"0xf6000000 : TLB/PMB cache addr\n"
|
||||
"0xf7000000 : TLB/PMB cache data\n"
|
||||
"0xfc000000 : Control register\n"
|
||||
);
|
||||
|
||||
static INLINE int check_address(char *str)
|
||||
|
|
|
@ -41,7 +41,7 @@ static void ram_jump(int argc, char **argv, struct session_s *session, char *inf
|
|||
return;
|
||||
}
|
||||
if (!strcmp(argv[1], "p0"))
|
||||
session->anchor = 0x08000000;
|
||||
session->anchor = 0x08100000;
|
||||
if (!strcmp(argv[1], "p1"))
|
||||
session->anchor = 0x88000000;
|
||||
if (!strcmp(argv[1], "p2"))
|
||||
|
|
|
@ -34,8 +34,11 @@ static int check_special(unsigned int key, struct vhex_s *vhex, struct session_s
|
|||
{
|
||||
if (!(key == KEY_OPTN || key == KEY_SHIFT || key == KEY_ALPHA))
|
||||
return (-1);
|
||||
if (vhex->insert.mode == LETTER)
|
||||
if (vhex->insert.mode == LETTER){
|
||||
vhex->insert.mode = NUMBER;
|
||||
if (key == KEY_ALPHA)
|
||||
return (0);
|
||||
}
|
||||
if (key == KEY_OPTN){
|
||||
if (session->mode != COMMAND){
|
||||
memset(vhex->info, '\0', CMD_LENGHT_MAX);
|
||||
|
@ -95,6 +98,8 @@ static int check_alphanum(unsigned int key, struct vhex_s *vhex, struct session_
|
|||
buf = (vhex->insert.mode == NUMBER) ? '0' + i : 'a' + i;
|
||||
strcat(vhex->insert.cmd, &buf);
|
||||
}
|
||||
if (vhex->insert.mode == LETTER)
|
||||
vhex->insert.mode = NUMBER;
|
||||
vhex->history.offset = 0;
|
||||
return (0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue