diff --git a/c/src/lib/libcpu/powerpc/ChangeLog b/c/src/lib/libcpu/powerpc/ChangeLog index 616a5baf5e..90cee6a3fa 100644 --- a/c/src/lib/libcpu/powerpc/ChangeLog +++ b/c/src/lib/libcpu/powerpc/ChangeLog @@ -1,3 +1,8 @@ +2007-12-06 Till Straumann + + * shared/include/cpuIdent.h, shared/include/cpuIdent.c: + added feature check for 603 'TLBMISS exception GPRS shadowing'. + 2007-12-06 Till Straumann * new-exceptions/raw_exception.c, new-exceptions/raw_exception.h: diff --git a/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.c b/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.c index c1c0fd5da8..d1b5b74f77 100644 --- a/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.c +++ b/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.c @@ -131,7 +131,20 @@ ppc_cpu_id_t get_ppc_cpu_type() switch ( current_ppc_cpu ) { case PPC_860: - current_ppc_features.has_16byte_clne =1; + current_ppc_features.has_16byte_clne = 1; + default: + break; + } + + switch ( current_ppc_cpu ) { + case PPC_603e: + case PPC_603ev: + case PPC_603le: + case PPC_e300c1: + case PPC_e300c2: + case PPC_e300c3: + case PPC_8240: + current_ppc_features.has_shadowed_gprs = 1; default: break; } diff --git a/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.h b/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.h index 9ed72607f3..c0763f98d1 100644 --- a/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.h +++ b/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.h @@ -63,6 +63,7 @@ typedef struct { unsigned is_60x : 1; unsigned has_8_bats : 1; unsigned has_epic : 1; + unsigned has_shadowed_gprs : 1; } ppc_feature_t; extern ppc_feature_t current_ppc_features; @@ -90,6 +91,7 @@ _PPC_FEAT_DECL(is_bookE) _PPC_FEAT_DECL(is_60x) _PPC_FEAT_DECL(has_8_bats) _PPC_FEAT_DECL(has_epic) +_PPC_FEAT_DECL(has_shadowed_gprs) #undef _PPC_FEAT_DECL #endif /* ASM */