- 211 名前:login:Penguin mailto:sage [2006/12/19(火) 18:26:53 ID:26YT2lm/]
- Vine4.0のrpmがi486でこける原因がわかりました。rpmio/rpmsw.cにrdtsc命令がベタ書き
されているためでした。疑ってごめんな、gcc、これじゃi386用のコードは吐けないよな。 というわけでbogomipsとuptimeから近似値を作り代用します。以下パッチ、 #defineHP_TIMING_ZERO(Var)(Var) = (0) -#defineHP_TIMING_NOW(Var)__asm__ __volatile__ ("rdtsc" : "=A" (Var)) + +#if defined(__FAKE_RDTSC__) + +#define UPTIME_FILE "/proc/uptime" +#define CPUINFO_FILE "/proc/cpuinfo" +unsigned long long fake_rdtsc(void); + +unsigned long long fake_rdtsc(void) { + + int fd, k = 0, i = 0, i2 = 0, l, m = 0; + unsigned long long f_tsc, cpu_frq; + ssize_t n = 1; + char buf[32], bog[1024], mps[16]; + struct utsname minfo; + + uname(&minfo); + if ( minfo.machine[1] != '3' && minfo.machine[1] != '4' ) { + __asm__ __volatile__ ("rdtsc" : "=A" (f_tsc)); + return f_tsc; + } + + fd = open( CPUINFO_FILE, O_RDONLY );
|

|