aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2005-12-22 17:09:39 +0000
committerNick Clifton <nickc@redhat.com>2005-12-22 17:09:39 +0000
commit54758c3e398d1e6dccdb60162cd24b0d0abce9a2 (patch)
tree81aa462b76c90efa83c596cc32493b0117289621
parent8e9d1a243cbabb1c407c127c21482c8fc01dda40 (diff)
downloadgdb-54758c3e398d1e6dccdb60162cd24b0d0abce9a2.zip
gdb-54758c3e398d1e6dccdb60162cd24b0d0abce9a2.tar.gz
gdb-54758c3e398d1e6dccdb60162cd24b0d0abce9a2.tar.bz2
Fix PicoJava opcodes
-rw-r--r--opcodes/ChangeLog16
-rw-r--r--opcodes/pj-opc.c124
2 files changed, 78 insertions, 62 deletions
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index 78f495a..0c0ee33 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -1,3 +1,19 @@
+2005-12-22 Laurent Menten <laurent.menten@teledisnet.be>
+
+ * pj-opc.c (jsr, ret, getstatic, putstatic, getfield, putfield,
+ invokevirtual, invokespecial, invokestatic, invokeinterface,
+ goto_w, jsr_w, ldc_quick, ldc_w_quick, ldc2_w_quick,
+ getfield_quick, putfield_quick, getfield2_quick, putfield2_quick,
+ getstatic_quick, putstatic_quick, getstatic2_quick,
+ putstatic2_quick, invokevirtual_quick, invokenonvirtual_quick,
+ invokesuper_quick, invokestatic_quick, invokeinterface_quick,
+ aastore_quick, new_quick, anewarray_quick, multianewarray_quick,
+ checkcast_quick, instanceof_quick, invokevirtiual_quick_w,
+ getfield_quick_w, putfield_quick_w, nonnull_quick,
+ agetfield_quick, aputfield_quick, agetstatic_quick,
+ aputstatic_quick, aldc_quick, aldc_w_quick, exit_sync_method): Fix
+ opcodes.
+
2005-12-16 Nathan Sidwell <nathan@codesourcery.com>
Second part of ms1 to mt renaming.
diff --git a/opcodes/pj-opc.c b/opcodes/pj-opc.c
index 0a86a83..119607e 100644
--- a/opcodes/pj-opc.c
+++ b/opcodes/pj-opc.c
@@ -2,20 +2,19 @@
Copyright 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
Contributed by Steve Chamberlain of Transmeta (sac@pobox.com).
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
#include "sysdep.h"
#include "opcode/pj.h"
@@ -190,8 +189,8 @@ const pj_opc_info_t pj_opc_info[512] =
{ 0xa5, -1, 3, {O_R16, O_N}, {"if_acmpeq"}},
{ 0xa6, -1, 3, {O_R16, O_N}, {"if_acmpne"}},
{ 0xa7, -1, 3, {O_R16, O_N}, {"goto"}},
-{ 0xa8, -1, 3, {O_N, O_N}, {"jsr"}},
-{ 0xa9, -1, 2, {O_N, O_N}, {"ret"}},
+{ 0xa8, -1, 3, {O_R16, O_N}, {"jsr"}},
+{ 0xa9, -1, 2, {O_U8, O_N}, {"ret"}},
{ 0xaa, -1, 1, {O_N, O_N}, {"tableswitch"}},
{ 0xab, -1, 1, {O_N, O_N}, {"lookupswitch"}},
{ 0xac, -1, 1, {O_N, O_N}, {"ireturn"}},
@@ -200,14 +199,14 @@ const pj_opc_info_t pj_opc_info[512] =
{ 0xaf, -1, 1, {O_N, O_N}, {"dreturn"}},
{ 0xb0, -1, 1, {O_N, O_N}, {"areturn"}},
{ 0xb1, -1, 1, {O_N, O_N}, {"return"}},
-{ 0xb2, -1, 3, {O_N, O_N}, {"getstatic"}},
-{ 0xb3, -1, 3, {O_N, O_N}, {"putstatic"}},
-{ 0xb4, -1, 3, {O_N, O_N}, {"getfield"}},
-{ 0xb5, -1, 3, {O_N, O_N}, {"putfield"}},
-{ 0xb6, -1, 3, {O_N, O_N}, {"invokevirtual"}},
-{ 0xb7, -1, 3, {O_N, O_N}, {"invokespecial"}},
-{ 0xb8, -1, 3, {O_N, O_N}, {"invokestatic"}},
-{ 0xb9, -1, 5, {O_N, O_N}, {"invokeinterface"}},
+{ 0xb2, -1, 3, {O_U16, O_N}, {"getstatic"}},
+{ 0xb3, -1, 3, {O_U16, O_N}, {"putstatic"}},
+{ 0xb4, -1, 3, {O_U16, O_N}, {"getfield"}},
+{ 0xb5, -1, 3, {O_U16, O_N}, {"putfield"}},
+{ 0xb6, -1, 3, {O_U16, O_N}, {"invokevirtual"}},
+{ 0xb7, -1, 3, {O_U16, O_N}, {"invokespecial"}},
+{ 0xb8, -1, 3, {O_U16, O_N}, {"invokestatic"}},
+{ 0xb9, -1, 5, {O_U16, O_U8}, {"invokeinterface"}},
{ 0xba, -1, 1, {O_N, O_N}, {"bad_ba"}},
{ 0xbb, -1, 3, {O_N, O_N}, {"new"}},
{ 0xbc, -1, 2, {O_N, O_N}, {"newarray"}},
@@ -222,43 +221,43 @@ const pj_opc_info_t pj_opc_info[512] =
{ 0xc5, -1, 4, {O_N, O_N}, {"multianewarray"}},
{ 0xc6, -1, 3, {O_N, O_N}, {"ifnull"}},
{ 0xc7, -1, 3, {O_N, O_N}, {"ifnonnull"}},
-{ 0xc8, -1, 5, {O_N, O_N}, {"goto_w"}},
-{ 0xc9, -1, 5, {O_N, O_N}, {"jsr_w"}},
-{ 0xca, -1, 1, {O_N, O_N}, {"breakpoint"}},
-{ 0xcb, -1, 1, {O_N, O_N}, {"bytecode"}},
-{ 0xcc, -1, 1, {O_N, O_N}, {"try"}},
-{ 0xcd, -1, 1, {O_N, O_N}, {"endtry"}},
-{ 0xce, -1, 1, {O_N, O_N}, {"catch"}},
-{ 0xcf, -1, 1, {O_N, O_N}, {"var"}},
-{ 0xd0, -1, 1, {O_N, O_N}, {"endvar"}},
-{ 0xd1, -1, 1, {O_N, O_N}, {"bad_d1"}},
-{ 0xd2, -1, 1, {O_N, O_N}, {"bad_d2"}},
-{ 0xd3, -1, 1, {O_N, O_N}, {"bad_d3"}},
-{ 0xd4, -1, 1, {O_N, O_N}, {"bad_d4"}},
-{ 0xd5, -1, 1, {O_N, O_N}, {"bad_d5"}},
-{ 0xd6, -1, 1, {O_N, O_N}, {"bad_d6"}},
-{ 0xd7, -1, 1, {O_N, O_N}, {"bad_d7"}},
-{ 0xd8, -1, 1, {O_N, O_N}, {"bad_d8"}},
-{ 0xd9, -1, 1, {O_N, O_N}, {"bad_d9"}},
-{ 0xda, -1, 1, {O_N, O_N}, {"bad_da"}},
+{ 0xc8, -1, 5, {O_R32, O_N}, {"goto_w"}},
+{ 0xc9, -1, 5, {O_R32, O_N}, {"jsr_w"}},
+{ 0xca, -1, 3, {O_N, O_N}, {"breakpoint"}},
+{ 0xcb, -1, 2, {O_U8, O_N}, {"ldc_quick"}},
+{ 0xcc, -1, 3, {O_U16, O_N}, {"ldc_w_quick"}},
+{ 0xcd, -1, 3, {O_U16, O_N}, {"ldc2_w_quick"}},
+{ 0xce, -1, 3, {O_U16, O_N}, {"getfield_quick"}},
+{ 0xcf, -1, 3, {O_U16, O_N}, {"putfield_quick"}},
+{ 0xd0, -1, 3, {O_U16, O_N}, {"getfield2_quick"}},
+{ 0xd1, -1, 3, {O_U16, O_N}, {"putfield2_quick"}},
+{ 0xd2, -1, 3, {O_U16, O_N}, {"getstatic_quick"}},
+{ 0xd3, -1, 3, {O_U16, O_N}, {"putstatic_quick"}},
+{ 0xd4, -1, 3, {O_U16, O_N}, {"getstatic2_quick"}},
+{ 0xd5, -1, 3, {O_U16, O_N}, {"putstatic2_quick"}},
+{ 0xd6, -1, 3, {O_U16, O_N}, {"invokevirtual_quick"}},
+{ 0xd7, -1, 3, {O_U16, O_N}, {"invokenonvirtual_quick"}},
+{ 0xd8, -1, 3, {O_U16, O_N}, {"invokesuper_quick"}},
+{ 0xd9, -1, 3, {O_U16, O_N}, {"invokestatic_quick"}},
+{ 0xda, -1, 3, {O_U16, O_N}, {"invokeinterface_quick"}},
{ 0xdb, -1, 1, {O_N, O_N}, {"bad_db"}},
-{ 0xdc, -1, 1, {O_N, O_N}, {"bad_dc"}},
-{ 0xdd, -1, 1, {O_N, O_N}, {"bad_dd"}},
-{ 0xde, -1, 1, {O_N, O_N}, {"bad_de"}},
-{ 0xdf, -1, 1, {O_N, O_N}, {"bad_df"}},
-{ 0xe0, -1, 1, {O_N, O_N}, {"bad_e0"}},
-{ 0xe1, -1, 1, {O_N, O_N}, {"bad_e1"}},
-{ 0xe2, -1, 1, {O_N, O_N}, {"bad_e2"}},
-{ 0xe3, -1, 1, {O_N, O_N}, {"bad_e3"}},
-{ 0xe4, -1, 1, {O_N, O_N}, {"bad_e4"}},
-{ 0xe5, -1, 1, {O_N, O_N}, {"bad_e5"}},
-{ 0xe6, -1, 1, {O_N, O_N}, {"bad_e6"}},
-{ 0xe7, -1, 1, {O_N, O_N}, {"bad_e7"}},
-{ 0xe8, -1, 1, {O_N, O_N}, {"bad_e8"}},
-{ 0xe9, -1, 1, {O_N, O_N}, {"bad_e9"}},
-{ 0xea, -1, 1, {O_N, O_N}, {"bad_ea"}},
-{ 0xeb, -1, 1, {O_N, O_N}, {"bad_eb"}},
-{ 0xec, -1, 1, {O_N, O_N}, {"bad_ec"}},
+{ 0xdc, -1, 1, {O_N, O_N}, {"aastore_quick"}},
+{ 0xdd, -1, 3, {O_U16, O_N}, {"new_quick"}},
+{ 0xde, -1, 3, {O_U16, O_N}, {"anewarray_quick"}},
+{ 0xdf, -1, 3, {O_U16, O_N}, {"multianewarray_quick"}},
+{ 0xe0, -1, 3, {O_U16, O_N}, {"checkcast_quick"}},
+{ 0xe1, -1, 3, {O_U16, O_N}, {"instanceof_quick"}},
+{ 0xe2, -1, 3, {O_U16, O_N}, {"invokevirtiual_quick_w"}},
+{ 0xe3, -1, 3, {O_U16, O_N}, {"getfield_quick_w"}},
+{ 0xe4, -1, 3, {O_U16, O_N}, {"putfield_quick_w"}},
+{ 0xe5, -1, 1, {O_N, O_N}, {"nonnull_quick"}},
+{ 0xe6, -1, 3, {O_U16, O_N}, {"agetfield_quick"}},
+{ 0xe7, -1, 3, {O_U16, O_N}, {"aputfield_quick"}},
+{ 0xe8, -1, 3, {O_U16, O_N}, {"agetstatic_quick"}},
+{ 0xe9, -1, 3, {O_U16, O_N}, {"aputstatic_quick"}},
+{ 0xea, -1, 2, {O_U8, O_N}, {"aldc_quick"}},
+{ 0xeb, -1, 3, {O_U16, O_N}, {"aldc_w_quick"}},
+{ 0xec, -1, 1, {O_N, O_N}, {"exit_sync_method"}},
{ 0xed, -1, 3, {O_16, O_N}, {"sethi"}},
{ 0xee, -1, 3, {O_U8, O_8}, {"load_word_index"}},
{ 0xef, -1, 3, {O_U8, O_8}, {"load_short_index"}},
@@ -277,6 +276,7 @@ const pj_opc_info_t pj_opc_info[512] =
{ 0xfc, -1, 1, {O_N, O_N}, {"bad_fc"}},
{ 0xfd, -1, 1, {O_N, O_N}, {"bad_fd"}},
{ 0xfe, -1, 1, {O_N, O_N}, {"bad_fe"}},
+
{ 0xff, 0x00, 2, {O_N, O_N}, {"load_ubyte"}},
{ 0xff, 0x01, 2, {O_N, O_N}, {"load_byte"}},
{ 0xff, 0x02, 2, {O_N, O_N}, {"load_char"}},
@@ -451,10 +451,10 @@ const pj_opc_info_t pj_opc_info[512] =
{ 0xff, 0xab, 2, {O_N, O_N}, {"bad"}},
{ 0xff, 0xac, 2, {O_N, O_N}, {"bad"}},
{ 0xff, 0xad, 2, {O_N, O_N}, {"bad"}},
-{ 0xff, 0xae, 2, {O_N, O_N}, {"tm_putchar"}},
-{ 0xff, 0xaf, 2, {O_N, O_N}, {"tm_exit"}},
-{ 0xff, 0xb0, 2, {O_N, O_N}, {"tm_trap"}},
-{ 0xff, 0xb1, 2, {O_N, O_N}, {"tm_minfo"}},
+{ 0xff, 0xae, 2, {O_N, O_N}, {"bad"}}, /*LM_FIXED*/
+{ 0xff, 0xaf, 2, {O_N, O_N}, {"bad"}}, /*LM_FIXED*/
+{ 0xff, 0xb0, 2, {O_N, O_N}, {"bad"}}, /*LM_FIXED*/
+{ 0xff, 0xb1, 2, {O_N, O_N}, {"bad"}}, /*LM_FIXED*/
{ 0xff, 0xb2, 2, {O_N, O_N}, {"bad"}},
{ 0xff, 0xb3, 2, {O_N, O_N}, {"bad"}},
{ 0xff, 0xb4, 2, {O_N, O_N}, {"bad"}},