From 7c96cb069ab3da83014dbcecbc2308a2cfda5d7a Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sun, 14 Jan 2007 12:10:53 +0000 Subject: [PATCH] adding blr opcode (can not found it in the ibm or motorala doc, the primary opcode refens to addi). now we can disambler two opcode the li and blr, add blr to my own asm langues. svn path=/trunk/; revision=25448 --- rosapps/devutils/cputointel/From/PPC/PPC.h | 7 +--- .../devutils/cputointel/From/PPC/PPCBrain.c | 38 +++++++++++++++---- .../devutils/cputointel/From/PPC/PPCBrain.h | 1 + .../devutils/cputointel/From/PPC/PPCopcode.c | 25 ++++++++++++ rosapps/devutils/cputointel/any_op.h | 2 +- rosapps/devutils/cputointel/misc.c | 8 +++- 6 files changed, 67 insertions(+), 14 deletions(-) diff --git a/rosapps/devutils/cputointel/From/PPC/PPC.h b/rosapps/devutils/cputointel/From/PPC/PPC.h index dd7ba1f01fb..84d08abbbd2 100644 --- a/rosapps/devutils/cputointel/From/PPC/PPC.h +++ b/rosapps/devutils/cputointel/From/PPC/PPC.h @@ -12,11 +12,8 @@ CPU_INT PPCBrain( CPU_BYTE *cpu_buffer, /* here we put the prototype for the opcode api that brain need we show a example for it */ CPU_INT PPC_Addx(FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch, CPU_INT mode); - - -CPU_INT PPC_Ld( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, - CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch, - CPU_INT mode); +CPU_INT PPC_Blr( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch, CPU_INT mode); +CPU_INT PPC_Ld( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch, CPU_INT mode); /* Export comment thing see m68k for example * in dummy we do not show it, for it is diffent for each cpu diff --git a/rosapps/devutils/cputointel/From/PPC/PPCBrain.c b/rosapps/devutils/cputointel/From/PPC/PPCBrain.c index e201d587d14..c7b504344cf 100644 --- a/rosapps/devutils/cputointel/From/PPC/PPCBrain.c +++ b/rosapps/devutils/cputointel/From/PPC/PPCBrain.c @@ -53,6 +53,19 @@ CPU_INT PPCBrain( CPU_BYTE *cpu_buffer, CPU_INT retsize; + /* 0x12 = 0001 0010, + 0x10 = 0001 0000 + 0x13 = 0001 0011 + + 0x20 = 0010 0000 0 0000 0010 2 + 0x80 = 1000 0000 0 0000 1000 8 + 0x4e = 0010 1110 E 1110 0010 2 + + 0x20 00 80 4e + 0010 0000 0000 0000 1000 0000 0100 1110 + + */ + /* now we start the process */ while (cpu_pos0) + { + /* own translatons langues */ + if (AllocAny()!=0) /* alloc memory for pMyBrainAnalys */ + { + return -1; + } + pMyBrainAnalys->op = OP_ANY_ret; + pMyBrainAnalys->memAdr=BaseAddress; + } + + return 4; +} + CPU_INT PPC_Ld( FILE *out, CPU_BYTE * cpu_buffer, CPU_UNINT cpu_pos, CPU_UNINT cpu_size, CPU_UNINT BaseAddress, CPU_UNINT cpuarch, diff --git a/rosapps/devutils/cputointel/any_op.h b/rosapps/devutils/cputointel/any_op.h index 1803362d171..badeedf426f 100644 --- a/rosapps/devutils/cputointel/any_op.h +++ b/rosapps/devutils/cputointel/any_op.h @@ -1,7 +1,7 @@ #define OP_ANY_mov 0x00000000 - +#define OP_ANY_ret 0x00000001 typedef struct _BrainAnalys { diff --git a/rosapps/devutils/cputointel/misc.c b/rosapps/devutils/cputointel/misc.c index f75e6ddad04..0236b1c22a2 100644 --- a/rosapps/devutils/cputointel/misc.c +++ b/rosapps/devutils/cputointel/misc.c @@ -161,7 +161,13 @@ return 0; CPU_INT FreeAny() { - PMYBrainAnalys tmp; + PMYBrainAnalys tmp = NULL; + + if (pMyBrainAnalys == NULL) + { + return -1; + } + tmp = (PMYBrainAnalys)pMyBrainAnalys->ptr_prev; while (pMyBrainAnalys != NULL)