Shiyou Yin <[email protected]> 于2023年2月14日周二 20:26写道: > > Replace cpucfg with getauxval to avoid crash in case of > some processor capabilities are not supportted by kernel used. > --- > libavutil/loongarch/cpu.c | 24 ++++++++---------------- > 1 file changed, 8 insertions(+), 16 deletions(-) > > diff --git a/libavutil/loongarch/cpu.c b/libavutil/loongarch/cpu.c > index e4b240bc44..cad8504fde 100644 > --- a/libavutil/loongarch/cpu.c > +++ b/libavutil/loongarch/cpu.c > @@ -21,26 +21,18 @@ > > #include <stdint.h> > #include "cpu.h" > +#include <sys/auxv.h> > > -#define LOONGARCH_CFG2 0x2 > -#define LOONGARCH_CFG2_LSX (1 << 6) > -#define LOONGARCH_CFG2_LASX (1 << 7) > - > -static int cpu_flags_cpucfg(void) > +#define LA_HWCAP_LSX (1<<4) > +#define LA_HWCAP_LASX (1<<5) > +static int cpu_flags_getauxval(void) > { > int flags = 0; > - uint32_t cfg2 = 0; > - > - __asm__ volatile( > - "cpucfg %0, %1 \n\t" > - : "+&r"(cfg2) > - : "r"(LOONGARCH_CFG2) > - ); > + int flag = (int)getauxval(AT_HWCAP); > > - if (cfg2 & LOONGARCH_CFG2_LSX) > + if (flag & LA_HWCAP_LSX) > flags |= AV_CPU_FLAG_LSX; > - > - if (cfg2 & LOONGARCH_CFG2_LASX) > + if (flag & LA_HWCAP_LASX) > flags |= AV_CPU_FLAG_LASX; > > return flags; > @@ -49,7 +41,7 @@ static int cpu_flags_cpucfg(void) > int ff_get_cpu_flags_loongarch(void) > { > #if defined __linux__ > - return cpu_flags_cpucfg(); > + return cpu_flags_getauxval(); > #else > /* Assume no SIMD ASE supported */ > return 0; > -- > 2.20.1 > > _______________________________________________ > ffmpeg-devel mailing list > [email protected] > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > [email protected] with subject "unsubscribe".
LGTM Thanks Steven _______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
