Skip to content

Commit

Permalink
cputlb: Fix regression with TCG interpreter (bug 1310324)
Browse files Browse the repository at this point in the history
Commit 0f842f8 replaced GETPC_EXT() which
was derived from GETPC() by GETRA_EXT() without fixing cputlb.c. A later
patch replaced GETRA_EXT() by GETRA() in exec/softmmu_template.h which
is included in cputlb.c.

The TCG interpreter failed because the values returned by GETRA() were no
longer explicitly set to 0. The redefinition of GETRA() introduced here
fixes this.

In addition, GETPC_ADJ which is also used in exec/softmmu_template.h is
set to 0. Both changes reduce the compiled code size for cputlb.c by more
than 100 bytes, so the normal TCG without interpreter also profits from
the reduced code size and slightly faster code.

Cc: [email protected]
Reported-by: Giovanni Mascellani <[email protected]>
Signed-off-by: Stefan Weil <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
  • Loading branch information
stweil authored and bonzini committed Jun 5, 2014
1 parent e00fcfe commit 7e4e886
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions cputlb.c
Original file line number Diff line number Diff line change
Expand Up @@ -331,8 +331,10 @@ tb_page_addr_t get_page_addr_code(CPUArchState *env1, target_ulong addr)
}

#define MMUSUFFIX _cmmu
#undef GETPC
#define GETPC() ((uintptr_t)0)
#undef GETPC_ADJ
#define GETPC_ADJ 0
#undef GETRA
#define GETRA() ((uintptr_t)0)
#define SOFTMMU_CODE_ACCESS

#define SHIFT 0
Expand Down

0 comments on commit 7e4e886

Please sign in to comment.