メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

cpu.c

#include <setjmp.h>
#include <signal.h>
#include "cpu_x86.h"

cpu.cのインクルード依存関係図

ソースコードを見る。

関数

static void SSE_not_support (int sig)
int haveUNITa (void)
void setPIII_round (void)
int haveX86_UNIT (void)

変数

static jmp_buf jmpPtr


関数

int haveUNITa void   ) 
 

参照元 haveX86_UNIT().

int haveX86_UNIT void   ) 
 

cpu.c24 行で定義されています。

参照先 haveUNITa(), jmpPtr, MU_tSSE, MU_tSSE2, setPIII_round(), と SSE_not_support().

参照元 dkcAllocMTRand32().

00025 {
00026     static int unit = -1;
00027 
00028     if (unit != -1) return unit;
00029     unit = haveUNITa();
00030 
00031 #if defined(WIN32) && defined(HAVE___TRY) && defined(HAVE_EXCEPTION_EXECUTE_HANDLER) 
00032     if (unit & MU_tSSE) {
00033         __try {
00034             setPIII_round();
00035         }
00036         __except(EXCEPTION_EXECUTE_HANDLER) {
00037             unit &= ~(MU_tSSE|MU_tSSE2);
00038         }
00039     }
00040 #elif defined(__unix__) || defined(WIN32) || defined(__os2__) || defined(__dos__)
00041     if (unit & MU_tSSE) {
00042         int ret;
00043         ret = setjmp(jmpPtr);
00044         if (!ret) {
00045             signal(SIGILL, SSE_not_support);
00046             setPIII_round();
00047             signal(SIGILL, SIG_DFL);
00048         }else{
00049             unit &= ~(MU_tSSE|MU_tSSE2);
00050         }
00051     }
00052 #else
00053     if(unit & MU_tSSE) setPIII_round();
00054 #endif
00055 
00056     return unit;
00057 }

void setPIII_round void   ) 
 

参照元 haveX86_UNIT().

static void SSE_not_support int  sig  )  [static]
 

cpu.c15 行で定義されています。

参照先 jmpPtr.

参照元 haveX86_UNIT().

00016 {
00017     signal(SIGILL, SIG_DFL);
00018     longjmp(jmpPtr, 1);
00019 }


変数

jmp_buf jmpPtr [static]
 

cpu.c13 行で定義されています。

参照元 haveX86_UNIT(), と SSE_not_support().


dKingyoMersenneTwisterLibraryに対してThu Jan 19 05:10:23 2006に生成されました。  doxygen 1.4.4