/pcivme-3.2/pvmon/pvmon.c |
---|
0,0 → 1,1728 |
//------------------------------------------------------------------------------------------- |
// pvmon.c - the body of a simple tool to access VME BUS resources |
// |
// (c) 1999-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// $Log: pvmon.c,v $ |
// Revision 1.6 2002/11/14 19:57:56 klaus |
// improvement, still bugs active |
// |
// Revision 1.5 2002/10/20 18:07:48 klaus |
// mostly working alpha version |
// |
// Revision 1.4 2002/10/20 11:49:33 klaus |
// first parts working |
// |
// Revision 1.3 2002/10/19 09:47:30 klaus |
// first success compiling project |
// |
// Revision 1.2 2002/10/19 09:44:38 klaus |
// first success compiling project |
// |
// Revision 1.1.1.1 2002/10/18 22:14:29 klaus |
// |
// first parts written and published from |
// Sven Hannover, Sven Tuecke, Klaus Hitschler, Ralf Dux 1991 |
// |
//------------------------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <unistd.h> |
#include <sys/types.h> |
#include <sys/ioctl.h> |
#include <sys/stat.h> |
#include <fcntl.h> |
#include <errno.h> |
#include <setjmp.h> |
#include <signal.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <time.h> |
#include <slang.h> |
#include <../driver/vme.h> /* constants about VME BUS */ |
#include <mbuffer.h> /* simple message buffering */ |
#include <pcilibLx.h> /* device access functions */ |
//------------------------------------------------------------------------------------------- |
// DEFINES |
// |
#define VERSION "6.0Lx" |
#define True 1 |
#define False 0 |
#if !defined(FALSE) || !defined(TRUE) |
#define FALSE False |
#define TRUE True |
#endif |
#define DEVPATH " - No input neccessary!" // not used |
#define DEFDEVICENAME "/dev/vmemm_1" |
#define DEFAULT_ADDRESS 0x00000000 // default VME window base address |
#define DEFAULT_MODIFIER Std_NoPriv_Data // default address modifier |
#define DEFAULT_TYPE sizeof(char) // default data BUS access width |
#define MAX_TIMEOUT_LOOPS 100000 // maximum loops for waiting reset finished |
//------------------------------------------------------------------------------------------- |
// TYPEDEFS |
// |
typedef char STRG[BUFFERLENGTH]; /* Allgemeiner Stringtyp */ |
//------------------------------------------------------------------------------------------- |
// LOCALS |
// |
static char UpCase(char Zchn); |
static char *ParaStr(int Num); |
static unsigned long ParaNum(int Num); |
static void SetModifier(void); |
static void PrintItem(unsigned long Addr, char Mode, unsigned char *Asc); |
static char GetZug(char *Zug); |
static void Dump(void); |
static char GetStrg(STRG Stg, int Len); |
static void Examine(void); |
static void Move(void); |
static void Fill(void); |
static void Hilfe(void); |
static int InitAt(char *szDevicePath, int *nInterfaceHandle); |
static void CfgName(STRG Stg); |
static void LoadKonfig(void); |
static void Konfig(void); |
static void ReadIrqVect(void); |
static void JumpToDos(void); |
static void Raus(void); |
static void SearchPort(char *Art, |
int Anz, |
unsigned short modf, |
void(*SFunc)(int nHandle, unsigned long Adr,unsigned short AModifier)); |
static void SearchPorts(void); |
static unsigned GibNum(char **PSt,char Anz); |
static int _ReadFile(void); |
static void SeekPatt(void); |
static void TestSet(void); |
static void ResetVme(void); |
static int OutHex(FILE *OuF, int Siz, unsigned long Adr, int Typ, char Buf[]); |
static int _WriteFile(void); |
static void ShowModifier(int Mode); |
static void ShowRegister(void); |
static int HauptMenue(STRG Stg); |
static void MyExit(int); |
static void SysFail(void); |
//------------------------------------------------------------------------------------------- |
// EXTERNALS |
// |
//------------------------------------------------------------------------------------------- |
// GLOBALS |
// |
static unsigned short AdrMode = Short_NoPriv; /* Mein initialer Adressmodifier */ |
static char DefZug = 'B'; /* Default Zugriff */ |
static char DefVec = 'B'; /* Default Zugriff IrqVecs */ |
static char **ArgV; /* ArgV aus main() */ |
static STRG InStg; /* Allgemeiner Eingabestring */ |
static char *TsT; |
static char Abbruch = 0; /* verzweig wg. SIGINT */ |
static int nInterfaceHandle; /* handle of device */ |
static char *cszDevicePath; /* path of device */ |
static int WordMode; /* mode of VME path operation */ |
static char localBuffer[BUFFERLENGTH] = DEFDEVICENAME; |
//------------------------------------------------------------------------------------------- |
// FUNCTIONS |
// |
//----------------------------------------------------------------------------- |
// functions to emulate for this platform |
static int getch(void) |
{ |
return SLang_getkey(); |
} |
static void strlwr(char *str) |
{ |
int i; |
char *ptr = str; |
for (i = 0; ((i < BUFFERLENGTH) && (*ptr)); i++) |
{ |
*ptr = tolower(*ptr); |
ptr++; |
} |
} |
static int _gets(char *str) |
{ |
if (fgets(str, BUFFERLENGTH, (FILE *)stdin) == NULL) |
return EINVAL; |
else |
{ |
// remove '\n' from string |
int i; |
char *ptr = str; |
for (i = 0; i < BUFFERLENGTH; i++, ptr++) |
{ |
if (*ptr == '\n') |
{ |
*ptr = 0; |
break; |
} |
} |
return 0; |
} |
} |
//----------------------------------------------------------------------------- |
// get out of here |
static void Raus(void) |
{ |
DeInit_Interface(nInterfaceHandle); |
exit(0); |
} |
//----------------------------------------------------------------------------- |
// return the uppercase char |
static char UpCase(char Zchn) /* Upcase eines Zeichens */ |
{ |
return((Zchn >= 'a' && Zchn <= 'z') ? Zchn - 0x20 : Zchn); |
} |
//----------------------------------------------------------------------------- |
// get the n-th parameter as string |
static char *ParaStr(int Num) /* Hole n-ten Parameter */ |
{ /* als String aus InStg */ |
char *PSt; /* Evt. Ergebnis NULL bei (Num>1) */ |
PSt=InStg; /* Fange bei InStg[0] an */ |
if (Num > 1) |
{ /* Folgeparameter: suche Anfang */ |
if (*PSt!='\0') |
{ /* Leerstring ignorieren */ |
PSt++; |
switch (*PSt) |
{ /* Teste evt. Modusparameter */ |
case 'L': |
case 'W': |
case 'B': |
case 'X': |
case 'H':PSt++; |
} |
if (*PSt==' ') PSt++; /* Evt. Delimiter ueberspringen */ |
} |
if (*PSt=='\0') PSt=NULL; /* Kein weiterer Parameter da */ |
else |
{ |
while (PSt!=NULL && Num>2) |
{ |
PSt=strchr(PSt, ' '); /* Suche nach Delimiter */ |
if (PSt!=NULL) PSt++; /* Delimiter ueberspringen */ |
Num--; /* Naechster Parameter da */ |
} /* while */ |
} /* else */ |
} /* if */ |
return(PSt); |
} |
//----------------------------------------------------------------------------- |
// get the n-th parameter as unsigned long |
static unsigned long ParaNum(int Num) /* Hole n-ten Parameter */ |
{ /* als Zahl aus InStg */ |
unsigned long Erg; |
char *PSt; |
PSt=ParaStr(Num); /* Hole Parameterstring */ |
Erg=0; /* Hole Word aus String */ |
if (PSt!=NULL) sscanf(PSt, "%lx", &Erg); |
return(Erg); |
} |
//----------------------------------------------------------------------------- |
// set the address modifier for following accesses |
static void SetModifier(void) /* Neuen Adressmodifier setzen */ |
{ |
int Idx; |
if (ParaStr(1)[1]=='H') |
{ /* Wenn Hilfsfunktion gewuenscht */ |
if (ParaStr(2)==NULL) |
{ /* Noch ein Parameter da? */ |
for (Idx=0; Idx<0x40; Idx++) |
{ /* Nein: Liste ausgeben */ |
ShowModifier(Idx); |
if ((Idx == 0x10) || (Idx == 0x20) || (Idx == 0x30)) |
{ |
printf("\n go on ?\r"); |
getch(); |
} |
} |
printf("\n"); |
} |
else ShowModifier((int)ParaNum(2)); /* Nur gewuenschten Mode anzeigen */ |
} |
else |
{ |
if (ParaStr(2) != NULL) |
{ |
if (ParaStr(1)[1] == 'M') |
{ |
AdrMode=(int)ParaNum(3) & 0x3f; |
} |
else |
{ |
AdrMode=(int)ParaNum(2) & 0x3f; /* Adressmodifier merken */ |
} |
} |
ShowModifier(AdrMode); /* Status Adressmodifier zeigen */ |
} /* else */ |
} |
//----------------------------------------------------------------------------- |
// print out an item |
static void PrintItem(unsigned long Addr, char Mode, unsigned char *Asc) |
{ |
unsigned long xl; |
unsigned int xi; |
unsigned char xc; |
switch (Mode) |
{ |
case 'L': xl=ReadLong(nInterfaceHandle, Addr, AdrMode); |
if (GetError(nInterfaceHandle)) |
{ |
ClearError(nInterfaceHandle); printf("******** "); |
} |
else |
{ |
printf("%08lx ", xl); |
if (Asc != NULL) *(unsigned long *)Asc=xl; |
} |
break; |
case 'W': xi=ReadWord(nInterfaceHandle, Addr, AdrMode); |
if (GetError(nInterfaceHandle)) |
{ |
ClearError(nInterfaceHandle); printf("**** "); |
} |
else |
{ |
printf("%04hx ", xi); |
if (Asc != NULL) *(unsigned short *)Asc=xi; |
} |
break; |
case 'B': xc=ReadByte(nInterfaceHandle, Addr, AdrMode); |
if (GetError(nInterfaceHandle)) |
{ |
ClearError(nInterfaceHandle); printf("**"); |
} |
else |
{ |
printf("%02hx", xc); |
if (Asc != NULL) *Asc=xc; |
} |
break; |
}; /* switch */ |
} |
//----------------------------------------------------------------------------- |
// test whether byte word or long access |
static char GetZug(char *Zug) /* Moduszeichen feststellen */ |
{ |
switch (ParaStr(1)[1]) |
{ /* Moduszchn ist angegeben */ |
case 'L': |
case 'W': |
case 'B':*Zug = ParaStr(1)[1]; /* Neues Moduszchn festlegen */ |
} |
return(*Zug); |
} |
//----------------------------------------------------------------------------- |
// get or set SYSFAIL |
static void SysFail(void) |
{ |
if (ParaStr(2) != NULL) |
{ |
if (ParaNum(2) > 0) |
SetSfail(nInterfaceHandle); |
else |
ClrSfail(nInterfaceHandle); |
} |
if (PollSfail(nInterfaceHandle)) |
printf("SYSFAIL deasserted\n"); |
else |
printf("SYSFAIL asserted\n"); |
} |
//----------------------------------------------------------------------------- |
// dump a range of memory |
static void Dump(void) /* Ausgabe eines Bereichs */ |
{ |
static unsigned long DefVon=0; /* Default Addr fuer Dump */ |
unsigned long Bis; /* Bis wohin ausgeben */ |
unsigned int Len; /* Wieviel Bytes/Ausgabe */ |
unsigned int Idx; /* Index */ |
char Asc[16]; /* ohne static gehts bei dw nicht */ |
if (ParaStr(2) != NULL) /* Von-Adresse angegeben? */ |
DefVon=ParaNum(2); |
Len=1; |
switch (GetZug(&DefZug)) |
{ /* Zugriffsmodus festlegen */ |
case 'L':Len+=2; /* Auf Long-Adresse biegen */ |
case 'W':Len++; /* Auf Wort-Adresse biegen */ |
} |
DefVon&=-(long)Len; /* Adressen geradebiegen */ |
if (ParaStr(3) != NULL) |
{ /* Bis-Adresse angegeben? */ |
Bis=ParaNum(3); |
} |
else |
Bis=(DefVon+0x7f) | 0x0f; /* Default fuer Bis errechnen */ |
printf("%08lx: ", DefVon); |
for (Idx=0; Idx < (DefVon & 0x0f)/Len*(2*Len+1); Idx++) |
printf(" "); |
memset(Asc, ' ', sizeof(Asc)); /* Initialize String to Spaces */ |
while ((True) && (!Abbruch)) |
{ |
PrintItem(DefVon, DefZug, /* Gebe eine Speicherstelle aus */ |
&Asc[DefVon & 0x0f]); /* Merke Zeichen in Asc */ |
DefVon+=Len; /* Zaehler erhoehen */ |
if ((DefVon > Bis) || (!(DefVon & 0x0f))) |
{ |
printf(" "); |
for (Idx=0; Idx < sizeof(Asc); Idx++) |
{ |
if (Asc[Idx] < ' ') printf("."); /* Ascii-String ausgeben */ |
else printf("%c", Asc[Idx]); /* Ctrl-Zeichen als Punkte */ |
} |
printf("\n"); |
if (DefVon <= Bis) |
{ |
printf("%08lx: ", DefVon); /* Neue Zeile bei 16er-Grenze */ |
memset(Asc, ' ', sizeof(Asc)); /* Init String */ |
} |
else return; /* Ausstieg */ |
} |
else |
{ /* Sonst Leerzeichen ausgeben */ |
printf(((DefVon & 0x0f) == 0x08) ? "|":" "); |
} |
} /* while */ |
} |
//----------------------------------------------------------------------------- |
// read a string with editing functions |
static char GetStrg(STRG Stg, int Len) /* Lese String ein bis Spc */ |
{ |
int Idx; /* Zugriffsindex */ |
char Zch; /* Eingabezeichen */ |
Idx=0; /* Vorne anfangen */ |
do |
{ |
Zch=(char)getch(); /* Hole ein Zeichen */ |
if ((unsigned char)Zch >' ' && Zch!='\t') |
{ |
if (Idx<Len) |
{ |
printf("%c",Zch); /* Zeichen ok, Ausgeben */ |
Stg[Idx++]=Zch; /* Zeichen ablegen */ |
} |
} |
else |
{ |
switch (Zch) |
{ |
case '\b':if (Idx) |
{ /* Backspace=Delete? */ |
Idx--; /* Loesche Zeichen aus String */ |
printf("\b \b"); /* und vom Bildschirm */ |
} |
case '\t': |
case '\r':break; /* Return? Endezeichen 13 */ |
default:Zch=0; /* Ende mit Endezeichen 0 */ |
} /* switch */ |
} /* else */ |
} while (Zch && Zch!='\r' && Zch!='\n'); |
Stg[Idx]='\0'; /* Stringende eintragen */ |
return(Zch); /* Returncode = Abschlusstaste */ |
} |
//----------------------------------------------------------------------------- |
// examine a memory location |
static void Examine(void) /* Speicherbereich aendern */ |
{ |
unsigned long DefVon; /* Anfangsadresse */ |
unsigned long Inh; /* Neuer Inhalt */ |
int Len; /* Item-Laenge */ |
int Idx; /* Index */ |
char End; /* Endmodus */ |
STRG Stg; /* Eingabestring */ |
if (ParaStr(2)!=NULL) |
{ /* Adresse benoetigt */ |
Len=1; |
switch (GetZug(&DefZug)) |
{ /* Zugriffsmodus festlegen */ |
case 'L':Len+=2; /* Auf Long-Adresse biegen */ |
case 'W':Len++; /* Auf Wort-Adresse biegen */ |
} |
DefVon=ParaNum(2) & -(long)Len; /* Adressen geradebiegen */ |
if (ParaStr(3)!=NULL) |
{ /* Wert angegeben? */ |
Inh=ParaNum(3); /* Hole auszugebenden Wert */ |
switch (DefZug) |
{ |
case 'L': WriteLong(nInterfaceHandle, DefVon,Inh,AdrMode); |
break; |
case 'W': WriteWord(nInterfaceHandle, DefVon,(short)Inh,AdrMode); |
break; |
case 'B': WriteByte(nInterfaceHandle, DefVon,(char)Inh,AdrMode); |
break; |
}; /* switch */ |
if (GetError(nInterfaceHandle)) |
{ /* Fehlerpruefung: VME-Transfer ok? */ |
ClearError(nInterfaceHandle); /* Zuruecksetzen Fehlerflag */ |
printf("Error\n"); /* Zugriff gescheitert */ |
} |
} |
else |
{ |
SLang_init_tty(-1, 0, 1); |
SLtt_get_terminfo(); |
End='\n'; /* Bei Einstieg drucke Adresse */ |
do |
{ |
if (End=='\n' || End=='\177' || !(DefVon % 8)) |
{ |
if (End!='\n') printf("\n"); /* Bei Einstieg nicht <CRLF> */ |
printf("%08lx: ", DefVon); /* Adresse ausgeben */ |
} |
PrintItem(DefVon,DefZug,NULL); /* Gebe eine Speicherstelle aus */ |
printf("."); |
SLtt_flush_output(); |
End=GetStrg(Stg,Len << 1); /* Hole begrenzte Eingabezeile */ |
for (Idx=strlen(Stg); Idx<2+(Len << 1); Idx++) |
printf(" "); |
if (sscanf(Stg,"%lx",&Inh)>0) |
{ /* Hexzahl rausholen und ausgeben */ |
switch (DefZug) |
{ |
case 'L': WriteLong(nInterfaceHandle, DefVon,Inh,AdrMode); |
break; |
case 'W': WriteWord(nInterfaceHandle, DefVon,(short)Inh,AdrMode); |
break; |
case 'B': WriteByte(nInterfaceHandle, DefVon,(char)Inh,AdrMode); |
break; |
}; /* switch */ |
if (GetError(nInterfaceHandle)) |
ClearError(nInterfaceHandle);/* Fehlerpruefung: VME-Transfer ok? */ |
} /* if sscanf */ |
if (End == '\177') DefVon-=Len;/* Naechste Speicherzelle ansteuern */ |
else DefVon+=Len; |
} while (End!='\r'); |
/* Ende bei <CR> */ |
printf("\n"); |
SLang_reset_tty(); |
} /* else */ |
} /* if */ |
else printf("\a"); /* Fehler: zuwenig Parameter */ |
} |
//----------------------------------------------------------------------------- |
// fill a range of memory |
static void Fill(void) /* Fuellt Speicherbereich mit Wert */ |
{ |
char DefZug; /* Zugriffsart */ |
int Len; /* Item Laenge */ |
unsigned long Idx; /* Index */ |
unsigned long End; /* Endadresse */ |
unsigned long Patt; /* Fuellmuster */ |
unsigned char Merk_error = 0; /* Haelt error flag */ |
DefZug=' '; /* Modus muss angeben werden */ |
if (GetZug(&DefZug)!=' ' && ParaStr(4)!=NULL) |
{ |
Len=1; |
switch (GetZug(&DefZug)) |
{ /* Zugriffsmodus festlegen */ |
case 'L':Len+=2; /* Auf Long-Adresse biegen */ |
case 'W':Len++; /* Auf Wort-Adresse biegen */ |
} |
Idx=ParaNum(2) & -(long)Len; /* Adressen geradebiegen */ |
End=ParaNum(3); /* Endadresse festlegen */ |
Patt=ParaNum(4); /* Pattern merken (geht schneller) */ |
while ((Idx<=End) && (!Abbruch)) |
{ |
switch (DefZug) |
{ |
case 'L':WriteLong(nInterfaceHandle, Idx, Patt, AdrMode); |
break; |
case 'W':WriteWord(nInterfaceHandle, Idx, (short)Patt, AdrMode); |
break; |
case 'B':WriteByte(nInterfaceHandle, Idx, (char)Patt, AdrMode); |
break; |
} /* switch */ |
if (GetError(nInterfaceHandle)) |
{ |
ClearError(nInterfaceHandle); /* Fehler abfangen */ |
Merk_error = 1; |
} |
if ((Idx & 0xffl)==0) |
{ /* Ermoegliche Ctrl-C */ |
printf("\r"); |
} |
Idx+=Len; |
} /* while */ |
if (Merk_error) printf("--> Memory fill failed\a\n"); |
} |
else printf("\a"); |
} |
//----------------------------------------------------------------------------- |
// moves a range of memory |
static void Move(void) /* Schiebt Speicherbereich */ |
{ |
char DefZug; /* Zugriffsart */ |
int Len; /* Item Laenge */ |
unsigned long Idx; /* Index */ |
unsigned long End; /* Endadresse */ |
unsigned long Dest; /* Zieladresse */ |
unsigned long Wert; /* Kopiewert */ |
unsigned char Merk_error = 0; /* Haelt error flag */ |
DefZug=' '; /* Modus muss angeben werden */ |
if (GetZug(&DefZug)!=' ' && ParaStr(4)!=NULL) |
{ |
Len=1; |
switch (GetZug(&DefZug)) |
{ /* Zugriffsmodus festlegen */ |
case 'L':Len+=2; /* Auf Long-Adresse biegen */ |
case 'W':Len++; /* Auf Wort-Adresse biegen */ |
} |
Idx=ParaNum(2) & -(long)Len; /* Adressen geradebiegen */ |
End=ParaNum(3); /* Endadresse festlegen */ |
Dest=ParaNum(4); /* Zieladresse setzen */ |
while ((Idx<=End) && (!Abbruch)) |
{ |
switch (DefZug) |
{ |
case 'L': { |
Wert = ReadLong(nInterfaceHandle, Idx, AdrMode); |
WriteLong(nInterfaceHandle, Dest, Wert, AdrMode); |
} |
break; |
case 'W': { |
Wert = ReadWord(nInterfaceHandle, Idx, AdrMode); |
WriteWord(nInterfaceHandle, Dest, (short)Wert, AdrMode); |
} |
break; |
case 'B': { |
Wert = ReadByte(nInterfaceHandle, Idx, AdrMode); |
WriteByte(nInterfaceHandle, Dest, (char)Wert, AdrMode); |
} |
break; |
} /* switch */ |
if (GetError(nInterfaceHandle)) |
{ |
ClearError(nInterfaceHandle); /* Fehler abfangen */ |
Merk_error = 1; |
} |
if ((Idx & 0xffl)==0) |
{ /* Ermoegliche Ctrl-C */ |
printf("\r"); |
} |
Idx+=Len; |
Dest+=Len; |
} /* while */ |
if (Merk_error) printf("--> Memory move failed\a\n"); |
} |
else printf("\a"); |
} |
//----------------------------------------------------------------------------- |
// print out help to user |
static void Hilfe(void) |
{ |
printf("a[h] [adrmode]\t\t: Change address modifiers, h=help\n"); |
printf("c\t\t\t: Configure interface\n"); |
printf("d[m] [start] [end]\t: Dump memory area\n"); |
printf("e[m] <start> [value]\t: Examine or change memory area\n"); |
printf("f<m> <start> <end> <x>\t: Fill memory from <start> til <end> with <x>\n"); |
printf("g<m> <st> <en> [l] [x]\t: Generate random memory test. (loop l, seed x)\n"); |
printf("h\t\t\t: This help\n"); |
printf("i\t\t\t: Interface init\n"); |
printf("l[m]\t\t\t: Get VME interrupt status/ID\n"); |
printf("m<m> <src> <end> <dest>\t: Move memory area\n"); |
printf("o\t\t\t: Jump to OS\n"); |
printf("p[adrmode]\t\t: Port search\n"); |
printf("q\t\t\t: Quit program\n"); |
printf("r[x] <f> <start> [end]\t: Read file <f> to VME, x= x or s (HEX)\n"); |
printf("s[m] <start> <end> <p>\t: Search pattern <p>=different Items\n"); |
printf("t <start>\t\t: TAS emulation, 'Test and Set' bit 7\n"); |
printf("v\t\t\t: Generate VME SYSRESET\n"); |
printf("w[x] <f> <start> <end>\t: Write VME into file <f>, h=Intel Hex\n"); |
printf("x <start> [val]\t\t: Read/Write to interface register @ start\n"); |
printf("y[1/0]\t\t\t: Read/set/clear SYSFAIL\n"); |
printf("z[0..2]\t\t\t: Show interface internals\n"); |
printf("\n"); |
printf("m = mode, e.g. b=byte, w=word, l=long (double) word; h = help, x= hex\n"); |
printf("start(address), end(address), src=source, dest=destination, []=option\n"); |
} |
//----------------------------------------------------------------------------- |
// initialize the interface to VME |
static int InitAt(char *szDevicePath, int *nIfcNum) /* Gibt bei Fehler False aus */ |
{ |
int result; |
if (result = Init_Interface(szDevicePath, AdrMode, nIfcNum)) /* Pruefung des Interfaces */ |
{ |
printf("\n"); |
switch (result) |
{ |
case ENXIO: |
printf("Can't find interface driver path!\n"); |
printf("Please <q>uit or <c>onfigure interface!\n"); |
return FALSE; |
case ENOENT: |
printf("Can't find interface driver!\n"); |
printf("Please <q>uit or <c>onfigure interface!\n"); |
return FALSE; |
case ENODEV: |
printf("VMEMM #%d not connected or VME crate switched off!\n", nInterfaceHandle); |
printf("Please check connection or switch VME crate on or <c>onfigure.\n"); |
printf("Then <q>uit and restart again.\n"); |
return FALSE; |
default: |
printf("Unknown error '%d' occured!\n", result); |
printf("Please check the hardware and software setup and restart again.\n"); |
return FALSE; |
} |
} |
return(True); /* Kein Fehler */ |
} |
//----------------------------------------------------------------------------- |
// get the name of the configuration file |
static void CfgName(STRG Stg) /* Ermittelt Namen Config-File */ |
{ |
Stg[0]='\0'; |
if (ArgV[0] != NULL) |
{ |
strcpy(Stg,ArgV[0]); |
if (strrchr(Stg,'/')!=NULL) /* Versuche Dateinamen abzutrennen */ |
*(strrchr(Stg,'/')+1)='\0'; /* So daß nur Pfad uebrigbleibt */ |
else Stg[0]='\0'; /* Kein Pfad: String ist leer */ |
} |
strcat(Stg,"pvmon.cfg"); /* Mache einen Dateinamen */ |
} |
//----------------------------------------------------------------------------- |
// read in contents of configuration file |
static void LoadKonfig(void) /* Wenn Config-Datei da, lese ein */ |
{ |
STRG Stg; |
FILE *InF; |
char c; |
__u32 dwLocalAdrMode; |
CfgName(Stg); /* Hole Dateinamen nach InS */ |
if ((InF=fopen(Stg,"rt"))!=NULL) |
{ /* Wenn das oeffnen geklappt hat */ |
fscanf(InF,"%*[^=]%*1s%s",Stg); |
fscanf(InF,"%*[^=]%*1s%s",cszDevicePath); |
fscanf(InF,"%*[^=]%*1s%x",&dwLocalAdrMode); |
AdrMode = (__u8)dwLocalAdrMode; |
fscanf(InF,"%*[^=]%*1s%c",&c); |
fclose(InF); /* Datei wieder schließen */ |
c = tolower(c); |
if (c == 'y') |
WordMode = setWordMode(1); |
else |
WordMode = setWordMode(0); |
} /* if */ |
} |
//----------------------------------------------------------------------------- |
// provides configuration functionality to user |
static void Konfig(void) /* Konfiguration einstellen */ |
{ |
STRG InS; /* Eingabestring */ |
FILE *OuF; /* Ausgabedatei */ |
short change = 0; |
char c; |
InS[0] = 0; |
printf("Pathname of device (%s):",cszDevicePath); /* erfrage den Pfad zum Treiber */ |
_gets(InS); |
if ((InS[0] != '\n') && (InS[0])) |
{ |
strcpy(cszDevicePath, InS); |
change |= 1; |
} |
InS[0] = 0; |
printf("Default address modifier (%02x):",AdrMode); /* und den default Modifier */ |
_gets(InS); |
if ((InS[0] != '\n') && (InS[0])) |
{ |
sscanf(InS,"%x",&AdrMode); |
change |= 4; |
} |
if (WordMode) |
c = 'y'; |
else |
c = 'n'; |
InS[0] = 0; |
printf("16 bit VME BUS data path (%c) :", c); |
_gets(InS); |
if ((InS[0] != '\n') && (InS[0])) |
{ |
sscanf(InS,"%c",&c); |
change |= 8; |
} |
c = tolower(c); |
if (c == 'y') |
WordMode = setWordMode(1); |
else |
WordMode = setWordMode(0); |
if (change) |
{ |
do |
{ |
printf("Save (y/n):"); /* Wiederhole diese Frage bis */ |
_gets(InS); /* sie ordentlich beantwortet wurde */ |
strlwr(InS); /* DownCase String */ |
} while (InS[0]!='y' && InS[0]!='n'); |
if (InS[0]=='y') |
{ |
CfgName(InS); /* Hole Dateinamen nach InS */ |
if ((OuF=fopen(InS,"wt"))!=NULL) |
{ |
if (WordMode) |
c = 'y'; |
else |
c = 'n'; |
fprintf(OuF,"Configuration=%s\n",__DATE__); |
fprintf(OuF,"DevicePath=%s\n",cszDevicePath); /* Wenn das oeffnen geklappt hat */ |
fprintf(OuF,"AddressModifier=%x\n",AdrMode); |
fprintf(OuF,"WordMode=%c\n", c); |
fclose(OuF); /* Datei schliessen */ |
if (change & 1) |
printf("Please restart to put the new driver to work!\n"); |
} |
else printf("Can't open %s. ",InS); |
} |
} |
} |
//----------------------------------------------------------------------------- |
// read user initiated interrupt vector from VME BUS |
static void ReadIrqVect(void) /* Interrupt-Vektoren lesen */ |
{ |
STRG OSt; /* Ausgabestring */ |
short Level = 0; |
switch (GetZug(&DefVec)) |
{ /* Zugriffsmodus festlegen */ |
case 'L':sprintf(OSt, "%08hx", ReadVectorLong(nInterfaceHandle)); break; |
case 'W':sprintf(OSt, "%04hx", ReadVectorWord(nInterfaceHandle)); break; |
case 'B':sprintf(OSt, "%02hx", ReadVectorByte(nInterfaceHandle)); break; |
}; |
if (GetError(nInterfaceHandle)) |
{ /* Im Fehlerfalle 'Error' ausgeben */ |
ClearError(nInterfaceHandle); /* Fehlerflags zuruecksetzen */ |
strcpy(OSt, "Error"); |
} |
printf("VME status/ID = %s\n", OSt); |
} |
//----------------------------------------------------------------------------- |
// temporary jump to (D)OS |
static void JumpToDos() /* (D)OS-Shell aufrufen */ |
{ |
{ |
if (system("/bin/sh -c $SHELL") != 0) |
printf("Fail to launch a new shell.\n"); |
} |
} |
//----------------------------------------------------------------------------- |
// search responding ports in VME address range |
static void SearchPort(char *Art, int Anz, unsigned short modf, |
void (*SFunc)(int, unsigned long, unsigned short)) /* Durchsucht Adressraum */ |
{ |
unsigned long Idx; |
unsigned long Fst; /* Erster gefundener Port */ |
unsigned long Lst; /* Letzer gefundener Port */ |
unsigned long Ende; /* Durchsuch Ende */ |
char Found; /* Schon was gefunden? */ |
char Sequ; /* Schon eine Portsequenz */ |
int Err; /* Fehler dagewesen? */ |
int Tab; /* Tabulator-Zaehler */ |
unsigned long Step; |
printf("%s-accesses valid with address modifier %02x to address: ", Art,modf); |
if (modf > 0x2F) |
{ |
Ende = 0x01000000L; /* alle Standards */ |
Step = 0x100; /* Stepweite */ |
} |
if ((modf < 0x30) && (modf > 0x1f)) |
{ |
Ende = 0x00010000L; /* Shorts */ |
Step = Anz; |
} |
if (modf < 0x20) |
{ |
Ende = 0xFFFF0000L; /* alle Extendets, gemogelt */ |
Step = 0x10000; /* Step */ |
} |
Sequ=False; /* Noch keine Sequenz da */ |
Found=False; |
Tab=0; |
Idx=0; |
do |
{ /* do while */ |
SFunc(nInterfaceHandle, Idx, modf); /* Lese versuchsweise Port */ |
Err=GetError(nInterfaceHandle); /* Fehlerzustand abfragen */ |
if (Err) ClearError(nInterfaceHandle); /* Fehler bestaetigen */ |
else |
{ |
Lst=Idx; /* Merke Port als gueltig */ |
if (!Sequ) |
{ /* Diese Seqenz faengt an? */ |
Fst=Idx; /* Ja, neue Sequenz, merke */ |
Sequ=True; /* auch ersten Port */ |
} |
} |
Idx+= Step; /* Erhoehe Adresse */ |
if ((Err || !(Idx < Ende)) && Sequ) |
{ /* Ausgeben bei Sequenzende */ |
if (!Found) |
{ /* oder bei Schleifenende */ |
if (Idx < Ende) printf("\n"); /* Kein <CRLF> bei Schleifenende */ |
Found=True; |
}; |
/* Weitere Sequenz: Tab ausgeben */ |
if (Fst==Lst) |
{ /* Sequenz mit nur 1 Element */ |
printf("%08lx,\t", Fst); |
Tab++; /* Merke Tab-Status */ |
} |
else |
{ |
Tab=0; /* Tab-Status wieder zuruecksetzen */ |
printf("%08lx-%08lx\n", Fst, Lst); /* Sequenz ausgeben */ |
} |
Sequ=False; /* Sequenz gilt als abgeschlossen */ |
} /* if */ |
} while ((Idx < Ende) && (!Abbruch)); /* Bis Idx einmal 'rum ist */ |
if (!Found) |
printf("\nnothing found"); /* Wenn keinen Zugriff gefunden */ |
printf("\n"); /* Immer mit <CRLF> abschließen */ |
} |
//----------------------------------------------------------------------------- |
// search responding ports |
static void SearchPorts(void) /* Durchsucht Short-Adressraum */ |
{ /* nach Wort- und Bytes Zugriffen */ |
unsigned short modf = AdrMode; |
if (ParaStr(2)!=NULL) |
modf = (unsigned short)ParaNum(2); /* Anderer Adressmodifier */ |
ShowModifier(modf); printf("\n"); |
SearchPort("Byte", 1, modf, (void(*)(int, unsigned long, unsigned short))ReadByte); |
SearchPort("Word", 2, modf, (void(*)(int, unsigned long, unsigned short))ReadWord); |
SearchPort("Long", 4, modf, (void(*)(int, unsigned long, unsigned short))ReadLong); |
printf("\n"); |
} |
//----------------------------------------------------------------------------- |
// converts parts of a string to a number |
static unsigned int GibNum(char **PSt, char Anz) |
{ |
unsigned int Val; /* Ermittelter Wert */ |
unsigned int Num; /* Wieviel Zeichen genommen */ |
char Frm[6]; /* Formatstring */ |
Val=0; /* Default setzen */ |
strcpy(Frm,"%nx%n"); /* Default Format setzen */ |
if (*PSt!=NULL) |
{ /* Nur wenn String gueltig */ |
Frm[1]=Anz; /* Uebertrage Anzahl-Zeichen */ |
*PSt=(sscanf(*PSt,Frm,&Val, /* Hole Nummer aus String */ |
&Num)!=1) ? NULL : (*PSt)+Num; /* Fehler oder weitersetzen */ |
} /* if */ |
return(Val); |
} |
//----------------------------------------------------------------------------- |
// read in a file and put the contents to VME |
static int _ReadFile(void) /* Lese eine Datei in VME-Mem ein */ |
{ |
unsigned long End; /* Endadresse */ |
unsigned long Idx; /* Laufadresse */ |
unsigned long Cnt; /* Bytezaehler */ |
unsigned Adr; /* Adresse Record ab Start */ |
int Len; /* Recordlaenge */ |
int Ret; /* Returncode */ |
int Hex; /* Intel Hex File? */ |
int Typ; /* Typ des Records */ |
STRG Nam; /* Dateiname */ |
STRG Stg; /* Einlese-String */ |
char *PSt; /* Scanzeiger */ |
FILE *InF; /* Lesedatei */ |
Ret=1; /* Vorgabe ist Fehler */ |
if (ParaStr(3)!=NULL) |
{ /* Startadr ist obligat */ |
Hex=(ParaStr(1)[1]=='X'); /* Intel-Hex gewuenscht? */ |
strcpy(Nam,ParaStr(2)); /* Dateinamen kopieren */ |
*strchr(Nam,' ')='\0'; /* Restparameter abschneiden */ |
Cnt=0; /* Noch nichts gelesen */ |
Idx=ParaNum(3); /* Lege Startadresse fest */ |
End=(ParaStr(4)==NULL) /* Endadr ist optional */ |
? 0xffffffffl : ParaNum(4); |
if (Idx<=End) |
{ /* Falsche Werte abweisen */ |
if ((InF=fopen(Nam,(Hex) ? "rt":"rb"))!=NULL) |
{ |
if (Hex) |
{ /* Intel-Hex gewuenscht? */ |
fscanf(InF,"%x",Idx); |
while (!feof(InF)) |
{ /* Bis zum Ende lesen */ |
fgets(Stg,sizeof(Stg),InF); |
if (strlen(Stg)>1) |
{ /* Ignoriere leere Zeilen */ |
PSt=strchr(Stg,':'); /* Doppelpunkt ist obligat */ |
if (PSt!=NULL) PSt++; /* Hinter ':' stellen */ |
Len=GibNum(&PSt,'2'); /* Hole Recordlaenge */ |
Adr=GibNum(&PSt,'4'); /* Hole Adresse */ |
Typ=GibNum(&PSt,'2'); |
if (!Typ) |
{ /* Datencode erkannt? */ |
while (PSt!=NULL && Len) |
{ |
WriteByte(nInterfaceHandle, Idx+Adr++,(char)GibNum(&PSt,'2'),AdrMode); |
Cnt++; /* 1 Byte mehr gelesen */ |
Len--; /* Laenge aufaddieren */ |
} /* while */ |
if (GetError(nInterfaceHandle)) |
{ /* Fehlerpruefung: VME-Transfer ok? */ |
ClearError(nInterfaceHandle); /* Fehlerflag zuruecksetzen */ |
printf("--> Bus error: Adr=%08lx. ",Idx+Adr); |
break; /* Abbruch mit Fehler */ |
} /* if */ |
} |
else |
{ |
if (Typ==1) |
{ /* Endcode erkannt? */ |
Ret=0; /* Fehlerfrei gelesen */ |
break; /* Ende while */ |
} /* Ignoriere andere Typen */ |
} /* else */ |
if (PSt==NULL) |
{ |
printf("Format error\n"); |
break; |
} /* if */ |
} /* if len */ |
} /* while */ |
} |
else |
{ /* Kein Intel-Hex-Format */ |
do |
{ |
if (feof(InF)) Idx=End; /* Ende der Datei erreicht */ |
else |
{ |
WriteByte(nInterfaceHandle, Idx,(char)fgetc(InF),AdrMode); |
if (GetError(nInterfaceHandle)) |
{ /* Fehlerpruefung: VME-Transfer ok? */ |
ClearError(nInterfaceHandle); /* Fehlerflag zuruecksetzen */ |
printf("--> Bus error: Adr=%08lx. ",Idx); |
break; /* Abbruch mit Fehler */ |
} /* if GetError */ |
Cnt++; /* Ein Byte mehr gelesen */ |
} /* else */ |
} while (Idx++<End); /* Bis einschliesslich End lesen */ |
fclose(InF); |
if (Idx==End+1) Ret=0; /* Genug Byte geschafft? */ |
} /* else Hex */ |
} /* if fopen */ |
else printf("Can't read file %s. ",Nam); |
} /* if */ |
printf("%lx Byte(s) read\n",Cnt); |
} /* if */ |
else printf("\a"); |
return(Ret); |
} |
//----------------------------------------------------------------------------- |
// seek for a pattern in VME BUS |
static void SeekPatt(void) /* Suche nach Datenmustern */ |
{ |
#define Max 32 /* Wieviele Suchbytes max. */ |
unsigned long DefVon; /* Startadresse */ |
unsigned long End; /* Endadresse */ |
int Idx; /* Index */ |
int Idy; /* Auch Index */ |
int Len; /* Item Laenge */ |
int Ok; /* Flag: gefunden oder nicht? */ |
int Merk_error = 0; /* Fehler Flip-Flop */ |
union |
{ /* Suchmuster */ |
unsigned char xs[Max]; |
unsigned int xw[Max/2]; |
unsigned long xl[Max/4]; |
} Patt; |
if (ParaStr(4) != NULL) |
{ /* Von, Bis und 1 Item obligat */ |
DefVon=ParaNum(2); /* Startadresse festlegen */ |
End=ParaNum(3); /* Endadresse festlegen */ |
Len=1; |
switch (GetZug(&DefZug)) |
{ /* Zugriffsmodus festlegen */ |
case 'L':Len+=2; /* Auf Long-Adresse biegen */ |
case 'W':Len++; /* Auf Wort-Adresse biegen */ |
} |
DefVon&=-(long)Len; /* Adressen geradebiegen */ |
Idx=0; /* Suchmuster sammeln */ |
while (Idx<Max/Len && ParaStr(Idx+4)!=NULL) |
{ |
switch (DefZug) |
{ |
case 'L':Patt.xl[Idx]=ParaNum(Idx+4); break; |
case 'W':Patt.xw[Idx]=(unsigned)ParaNum(Idx+4); break; |
case 'B':Patt.xs[Idx]=(unsigned char)ParaNum(Idx+4); break; |
} /* switch */ |
Idx++; /* Ein Item mehr da */ |
} /* while */ |
while ((DefVon<=End) && (!Abbruch)) |
{ /* Suche nun den Bereich ab */ |
Ok=True; /* Pattern an dieser Adresse? */ |
for (Idy=0; Idy<Idx && Ok; Idy++) |
{ |
switch (DefZug) |
{ |
case 'L':if (Patt.xl[Idy] != (unsigned long)ReadLong(nInterfaceHandle, DefVon+(Idy<<2),AdrMode)) |
Ok=False; |
break; |
case 'W':if (Patt.xw[Idy] != (unsigned short)ReadWord(nInterfaceHandle, DefVon+(Idy<<1),AdrMode)) |
Ok=False; |
break; |
case 'B':if (Patt.xs[Idy] != (unsigned char)ReadByte(nInterfaceHandle, DefVon+Idy,AdrMode)) |
Ok=False; |
break; |
} /* switch */ |
if (GetError(nInterfaceHandle)) |
{ /* Busfehler aufgetreten? */ |
ClearError(nInterfaceHandle); /* Fehlerflags zuruecksetzen */ |
Ok=False; /* Gefunden wurde auch nichts */ |
Merk_error = 1; /* Setze Flip-Flop */ |
} |
} /* for */ |
if (Ok) printf("%08lx\n",DefVon);/* Was gefunden: Adresse ausgeben */ |
DefVon+=Len; |
if ((DefVon & 0xffl)==0) |
{ /* Ermoegliche Abbruch mit Ctrl-C */ |
printf("\r"); |
} |
} /* while */ |
if (Merk_error) printf("--> Failed to search\n"); |
} |
else printf("\a"); |
} |
//----------------------------------------------------------------------------- |
// emulate a 68K test and set instruction |
static void TestSet() /* Fuehre ein Test and Set auf */ |
{ /* Bit #7 eines Byte-Ports aus. */ |
char Erg; |
if (ParaStr(2)!=NULL) |
{ /* Adresse ist obligat */ |
Erg=TAS(nInterfaceHandle, ParaNum(2),AdrMode); /* Ergebnis merken, damit ein */ |
if (GetError(nInterfaceHandle)) |
{ /* Fehler ausgegeben werden kann */ |
ClearError(nInterfaceHandle); |
printf("--> Failed to 'Test and Set'\n"); /* Zugriff gescheitert */ |
} |
else printf("Semafore @ 0x%08lx was%s set before.\n", |
ParaNum(2),(Erg) ? "" : " not"); |
} |
else printf("\a"); |
} |
//----------------------------------------------------------------------------- |
// raise a VME SYSRESET |
static void ResetVme(void) /* Generiere SysReset auf VME-Bus */ |
{ /* Interrupt bei MailBox beachten */ |
printf("Reset to VME raised.\n"); |
Reset_VME(nInterfaceHandle); |
} |
//----------------------------------------------------------------------------- |
// print out a line in HEX format |
static int OutHex(FILE *OuF, int Siz, unsigned long Adr,int Typ, char Buf[]) |
{ |
int Chk; /* Pruefsumme */ |
int Idx; /* Laufindex */ |
fprintf(OuF,":%02X%04X%02X",Siz,Adr,Typ); |
Chk=Siz+(Adr & 0xff)+(Adr>>8)+Typ; |
for (Idx=0; Idx<Siz; Idx++) |
{ /* Pufferinhalt ausgeben */ |
fprintf(OuF,"%02X",(unsigned char)Buf[Idx]); |
Chk+=Buf[Idx]; /* Pruefsumme mitrechnen */ |
} |
fprintf(OuF,"%02X\n",(unsigned char)-Chk); /* Pruefsumme ausgeben */ |
if (ferror(OuF)) |
{ /* Irgend ein Schreibfehler? */ |
printf("Failed to write. "); |
return(False); |
} |
else return(True); /* Fehlerfrei ausgefuehrt */ |
} |
//----------------------------------------------------------------------------- |
// write a file in HEX and get the data from VME |
static int _WriteFile() /* Schreibt eine Datei aus VME */ |
{ |
unsigned long End; /* Endadresse */ |
unsigned long Idx; /* Laufadresse */ |
unsigned long Cnt; /* Bytezaehler */ |
int Ret; /* Returncode */ |
int Adr; /* Adresse Record ab Start */ |
int Hex; /* Intel Hex File? */ |
char Buf[16]; /* Output-Puffer */ |
STRG Nam; /* Dateiname */ |
FILE *OuF; /* Lesedatei */ |
Ret=1; /* Vorgabe ist Fehler */ |
if (ParaStr(4)!=NULL) |
{ /* Start & Endadr sind obligat */ |
Hex=(ParaStr(1)[1]=='X'); /* Intel-Hex gewuenscht? */ |
strcpy(Nam,ParaStr(2)); /* Dateinamen kopieren */ |
*strchr(Nam,' ')='\0'; /* Restparameter abschneiden */ |
Cnt=0; /* Noch nichts gelesen */ |
Idx=ParaNum(3); /* Lege Startadresse fest */ |
End=ParaNum(4); /* Lege Endadresse fest */ |
if (Idx<=End) |
{ /* Falsche Werte abweisen */ |
if ((OuF=fopen(Nam,(Hex) ? "wt":"wb"))!=NULL) |
{ |
if (Hex) |
{ /* Intel-Hex gewuenscht? */ |
Buf[0]=0 >> 0x8; /* HighByte Segmentadresse */ |
Buf[1]=0 & 0xff; /* LowByte Segmentadresse */ |
Adr=0; /* Offset grundsaetzlich bei 0 */ |
if (OutHex(OuF,2,Adr,2,Buf)) |
{ |
do |
{ |
Buf[(int)Cnt & 0xf]=ReadByte(nInterfaceHandle, Idx,AdrMode); |
if (GetError(nInterfaceHandle)) |
{ /* Fehlerpruefung: VME-Transfer ok? */ |
ClearError(nInterfaceHandle); /* Fehlerflag zuruecksetzen */ |
printf("--> Bus error: Adr=%08lx. ",Idx); |
break; /* Abbruch */ |
} /* if GetError */ |
if (!((int)++Cnt & 0xf)) |
{ |
if (OutHex(OuF,16,Adr,0,Buf)) Adr+=16; |
else break; /* Zwischendurch Puffer schreiben */ |
} |
} while (Idx++<End); /* Bis einschließlich End schreiben */ |
if ((Idx==End+1) && /* Noch Rest im Puffer? */ |
(!((int)Cnt & 0xf) || |
OutHex(OuF,(int)Cnt & 0xf,Adr,0,Buf)) |
&& OutHex(OuF,0,0,1,NULL)) Ret=0; |
} /* if */ /* Wenn Eof ausgegeben, Returns ok */ |
} /* if Hex */ |
else |
do |
{ /* Nicht Intel-Hex */ |
fputc(ReadByte(nInterfaceHandle, Idx,AdrMode),OuF); |
if (GetError(nInterfaceHandle)) |
{ /* Fehlerpruefung: VME-Transfer ok? */ |
ClearError(nInterfaceHandle); /* Fehlerflag zuruecksetzen */ |
printf("--> Bus error: Adr=%08lx. ",Idx); |
break; /* Abbruch */ |
} /* if GetError */ |
if (ferror(OuF)) |
{ |
printf("Failed to write. "); |
break; /* Abbruch */ |
} /* if ferror */ |
Cnt++; /* Ein Byte mehr geschrieben */ |
} while (Idx++<End); /* Bis einschließlich End schreiben */ |
if (Idx==End+1) Ret=0; /* Genug Byte geschafft? */ |
fclose(OuF); |
} /* if fopen */ |
else |
printf("Can' open file %s. ",Nam); |
} /* if */ |
printf("%lx Byte(s) written.\n",Cnt); |
} /* if */ |
else |
printf("\a"); |
return(Ret); |
} |
//----------------------------------------------------------------------------- |
// show and provide help about the VME address modifiers |
static void ShowModifier(int Mode) /* Klartext fuer Adressmodifier */ |
{ |
printf("Address modifier:\t%02x [", Mode); |
if ((Mode & 0x3b) > 0x38) printf("standard"); |
else if ((Mode & 0x3b)==0x29) printf("short"); |
else if ((Mode & 0x3b)>=0x09 && (Mode & 0x3b)<=0x0b) printf("extendet"); |
else if (Mode>=0x20 || Mode<=0x0f) |
{ |
printf("reserved]\n"); return; |
} |
else |
{ |
printf("user defined]\n"); return; |
} |
printf(((Mode & 0x0f)>=0x0c) ? " supervisory":" non-privileged"); |
switch (Mode & 0x03) |
{ |
case 1:printf(" data access"); break; |
case 2:printf(" code access"); break; |
case 3:printf(" block transfer"); break; |
} |
printf("]\n"); |
} |
//----------------------------------------------------------------------------- |
// provides some diagnostic information abot interface registers |
static void ShowRegister(void) /* Zeige Inhalt von ? */ |
{ |
char *szInstg; |
char type; |
if ((szInstg = ParaStr(1)) == NULL) |
type = '0'; |
else |
type = szInstg[1]; |
if (type == 0) |
type = '0'; |
GetInterfaceInfo(nInterfaceHandle, type); |
} |
//----------------------------------------------------------------------------- |
// make a random memory test to VME |
static void RandomTest(void) |
{ |
char DefZug = ' '; /* Zugriffsart */ |
int Len; /* Item Laenge */ |
unsigned long Idx; /* Index */ |
unsigned long End; /* Endadresse */ |
unsigned long Seed; /* initial seed */ |
unsigned char Merk_error = 0; /* Haelt error flag */ |
int Patt; |
unsigned long i; |
unsigned long lResult; |
unsigned short wResult; |
unsigned char bResult; |
int repeats = 0; |
int Loop = 0; |
if (GetZug(&DefZug)!=' ') |
{ |
Len=1; |
switch (GetZug(&DefZug)) /* Zugriffsmodus festlegen */ |
{ |
case 'L':Len += 2; /* Auf Long-Adresse biegen */ |
case 'W':Len++; /* Auf Wort-Adresse biegen */ |
} |
Idx=ParaNum(2) & -(long)Len; /* Adressen geradebiegen */ |
End=ParaNum(3); /* Endadresse festlegen */ |
if (ParaStr(4) == NULL) |
Loop = 1; |
else |
Loop=ParaNum(4); |
if (ParaStr(5) == NULL) |
Seed = 0x1234; |
else |
Seed=ParaNum(5); |
do |
{ |
srand(Seed + repeats); |
i = Idx; |
while ((i <= End) && (!Abbruch)) |
{ |
Patt = rand(); |
switch (DefZug) |
{ |
case 'L':Patt <<= 16; |
Patt |= rand(); |
WriteLong(nInterfaceHandle, i, Patt, AdrMode); |
break; |
case 'W':WriteWord(nInterfaceHandle, i, (short)Patt, AdrMode); |
break; |
case 'B':WriteByte(nInterfaceHandle, i, (char)Patt, AdrMode); |
break; |
} /* switch */ |
if (GetError(nInterfaceHandle)) |
{ |
ClearError(nInterfaceHandle); /* Fehler abfangen */ |
Merk_error |= 2; |
} |
if ((i & 0xffl)==0) |
{ /* Ermoegliche Ctrl-C */ |
printf("\r"); |
} |
i += Len; |
} /* while */ |
// read and compare |
srand(Seed + repeats); |
i = Idx; |
while ((i <= End) && (!Abbruch)) |
{ |
Patt = rand(); |
switch (DefZug) |
{ |
case 'L':lResult = ReadLong(nInterfaceHandle, i, AdrMode); |
Patt <<= 16; |
Patt |= rand(); |
if (lResult != (unsigned long)Patt) |
{ |
printf("Compare Fail 0x%08x w=0x%08lx r=0x%08lx\n", i, Patt, lResult); |
Merk_error |= 1; |
} |
break; |
case 'W':wResult = ReadWord(nInterfaceHandle, i, AdrMode); |
if (wResult != (unsigned short)Patt) |
{ |
printf("Compare Fail 0x%08x w=0x%04x r=0x%04x\n", i, Patt & 0xFFFF, wResult); |
Merk_error |= 1; |
} |
break; |
case 'B':bResult = ReadByte(nInterfaceHandle, i, AdrMode); |
if (bResult != (unsigned char)Patt) |
{ |
printf("Compare Fail 0x%08x w=0x%02x r=0x%02x\n", i, Patt & 0xFF, bResult); |
Merk_error |= 1; |
} |
break; |
} /* switch */ |
if (GetError(nInterfaceHandle)) |
{ |
ClearError(nInterfaceHandle); /* Fehler abfangen */ |
Merk_error |= 2; |
} |
if ((i & 0xffl)==0) |
{ /* Ermoegliche Ctrl-C */ |
printf("\r"); |
} |
i += Len; |
} /* while */ |
if (Loop) |
printf("\rRepeats: 0x%x\r", repeats); |
repeats++; |
} while ((Loop--) && !(Merk_error)); |
if (Merk_error) |
printf("--> Compare failed %s\a\n", (Merk_error & 2) ? "with Bus Error" : ""); |
else |
printf("--> Compare successfull\n"); |
} |
else printf("\a"); |
} |
//----------------------------------------------------------------------------- |
// modify interface registers |
static void ModifyRegister(void) |
{ |
__u32 Erg; |
if (ParaStr(2) != NULL) |
{ |
if (ParaStr(3) != NULL) |
{ |
Erg = _SetRegister(nInterfaceHandle, ParaNum(2),ParaNum(3)); |
printf("Interface register @ 0x%08lx set: 0x%02x, get: 0x%02x\n", |
ParaNum(2), ParaNum(3), Erg); |
} |
else |
{ |
Erg = _GetRegister(nInterfaceHandle, ParaNum(2)); |
printf("Interface register @ 0x%08lx get: 0x%02x\n", ParaNum(2), Erg); |
} |
} |
else |
printf("\a"); |
} |
//----------------------------------------------------------------------------- |
// the main menu |
static int HauptMenue(STRG Stg) /* Eingabe & Dispatcher */ |
{ |
char *SSt; /* Sourcezeiger */ |
char *DSt; /* Destzeiger */ |
char Del; /* Delimiter vorhanden? */ |
int Ret; /* Returncode fuer Auto-Mode */ |
char loop; /* irgedwie war baengg fuer loop */ |
if (Stg == NULL) |
loop = 1; |
else |
loop = 0; |
do |
{ |
if (loop) |
{ /* Auto-Modus? */ |
if (Abbruch) |
{ |
printf("\n"); |
Abbruch = 0; |
} |
printf("pv: "); /* Nein, Prompt ausgeben und */ |
if (*ReadMessageBuffer()) |
{ |
printf("%s\n", ReadMessageBuffer()); |
printf("pv: "); |
InitMessageBuffer(); |
} |
_gets(InStg); /* Eingabestring holen */ |
// GetError(nInterfaceHandle); /* because of interrupts */ |
SSt=InStg; /* Init Sourcezeiger */ |
} |
else |
SSt=Stg; /* Uebernehme Parameter aus Stg */ |
DSt=InStg; /* Init Destzeiger */ |
Del=True; /* Weitere Delimiter raus */ |
Ret=0; /* Keine Fehler bis jetzt */ |
while (*SSt) |
{ /* Arbeite String ab */ |
if (UpCase(*SSt) >= 'A' && /* Filtern gueltiger Zeichen */ |
UpCase(*SSt) <= 'Z' || |
*SSt >= '0' && *SSt <= '9' || |
*SSt == ':' || *SSt == '.' || |
*SSt == '\\' || *SSt == '?') |
{ |
*DSt=UpCase(*SSt); |
Del=False; |
DSt++; |
} |
else |
{ |
if (!Del) |
{ |
*DSt=' '; |
DSt++; |
} /* Mehrere Delimiter raus */ |
Del=True; /* und durch ' ' ersetzen */ |
} |
SSt++; |
} /* while (*SSt) */ |
*DSt=*SSt; /* 0 auch uebertragen */ |
switch (*ParaStr(1)) |
{ |
case 'A': SetModifier(); break; |
case 'D': Dump(); break; |
case 'E': Examine(); break; /* Speicherbereich aendern */ |
case 'F': Fill(); break; /* Speicherbereich fuellen */ |
case 'G': RandomTest(); break; /* random test of memory */ |
case 'H': |
case '?': Hilfe(); break; /* Hilf mir mal */ |
case 'I': DeInit_Interface(nInterfaceHandle); |
InitAt(cszDevicePath, &nInterfaceHandle); |
break; /* Nochmals initialisieren */ |
case 'C': Konfig(); break; /* Konfiguration */ |
case 'L': ReadIrqVect(); break; /* Interrupt-Vektoren lesen */ |
case 'M': Move(); break; /* Move Funktion */ |
case 'O': JumpToDos(); break; /* DOS Ausgang */ |
case 'P': SearchPorts(); break; /* Ports suchen */ |
case 'Q': Raus();return(0); /* Ende des Debuggers */ |
case 'R': Ret=_ReadFile(); break; /* Eine Datei nach VME lesen */ |
case 'S': SeekPatt(); break; /* Suche nach Datenmustern */ |
case 'T': TestSet(); break; /* Fuehre ein TAS aus */ |
case 'V': ResetVme(); break; /* Erzeuge VME-Reset */ |
case 'W': Ret=_WriteFile(); break;/* Eine Datei von VME schreiben */ |
case 'Y': SysFail(); break; /* read, set Sysfail */ |
case 'X': ModifyRegister(); break; /* modify register of the interface */ |
case 'Z': ShowRegister(); break; /* Register ausgeben */ |
default : |
{ |
Ret=2; /* Fehlercode zurueck fuer Auto */ |
if (!loop) |
{ /* Wenn Auto: Hilfsmessage */ |
Hilfe(); |
printf("\nSplit commands with \"/\" ,e.g. \"a39/d1000\""); |
} |
} |
} /* switch */ |
} while (loop); /* Hier raus bei Auto-Mode */ |
return(Ret); |
} |
//------------------------------------------------------------------------------------- |
// the exit entry |
static void MyExit(int bla) /* Wird im Ctrl-C-Falle aufgerufen */ |
{ |
Abbruch = 1; |
} |
//------------------------------------------------------------------------------------- |
// where all starts |
int main(int argc, char **argv, char *envp[]) |
{ |
static STRG Stg; /* Zum zusammenlegen Parameter */ |
char *PSt; /* Arbeitszeiger Multicommands */ |
char *SSt; /* Quellzeiger Multicommands */ |
int Idx; /* Index */ |
int Ret; /* Returncode */ |
InitMessageBuffer(); |
cszDevicePath = &localBuffer[0]; |
Ret=1; /* Returncode auf Fehler setzen */ |
ArgV=argv; /* Uebertrage argv fuer LoadKonfig */ |
LoadKonfig(); /* Versuchen Konfigdatei zu lesen */ |
if (argc > 1) |
{ /* Kommandozeilenparameter da? */ |
if (InitAt(cszDevicePath, &nInterfaceHandle)) |
{ /* Aufsetzen Interface */ |
*Stg='\0'; /* Stg auf nix setzen */ |
for (Idx=1; Idx < argc; Idx++) |
{ |
strcat(Stg,argv[Idx]); /* Haenge Parameter hintereinander */ |
strcat(Stg," "); /* Trenne mit Leerzeichen */ |
} |
SSt=Stg; /* Saubloedes (*Zeug) mit den ARRAYS! */ |
do |
{ |
if ((PSt=strchr(SSt,'/'))!=NULL) *PSt='\0'; |
Ret=HauptMenue(SSt); /* Hauptmenue automatisch aufrufen */ |
SSt=PSt+1; /* SSt auf den Reststring setzen */ |
} |
while (PSt!=NULL && !Ret); /* Bis Fehler oder Fertig */ |
} |
} |
else |
{ |
printf("Provided under GPL - version %s of pvmon of %s \n\n", VERSION, __DATE__); |
printf("This program is free software; you can redistribute it and/or modify it\n"); |
printf("under the terms of the GPL as published by the FSF (version 2 or later).\n"); |
printf("Copyright: Ralf Dux, Sven Hannover, Klaus Hitschler, Sven Tuecke, AR\n"); |
InitAt(cszDevicePath, &nInterfaceHandle); /* Aufsetzen Interface */ |
signal(SIGINT, MyExit); /* Eigenen Handler einklinken */ |
Ret=HauptMenue(NULL); /* Hauptmenue manuell aufrufen */ |
} /* else */ |
DeInit_Interface(nInterfaceHandle); /* Interface ausschalten */ |
return(Ret); /* Fehlercode fuer ErrorLevel */ |
} |
//------------------------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------- |
/pcivme-3.2/pvmon/mbuffer.c |
---|
0,0 → 1,82 |
//------------------------------------------------------------------------------------------- |
// mbuffer.c - some functions to do a simple message buffering |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// $Log: mbuffer.c,v $ |
// Revision 1.3 2002/10/20 11:49:33 klaus |
// first parts working |
// |
// Revision 1.2 2002/10/19 09:47:30 klaus |
// first success compiling project |
// |
// Revision 1.1.1.1 2002/10/18 22:14:29 klaus |
// |
//------------------------------------------------------------------------------------------- |
// DEFINES |
// |
#define LOCAL_BUFFERLENGTH 250 |
//------------------------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <stdio.h> |
#include <mbuffer.h> |
//------------------------------------------------------------------------------------------- |
// LOCALS |
// |
static char MBuffer[LOCAL_BUFFERLENGTH]; |
//------------------------------------------------------------ |
// add unsolicited interrupt message to buffer |
// |
void AddIRQtoBuffer(short level, short vector) |
{ |
sprintf(MBuffer, "Interrupt @ level %d with vector %d signaled.", level, vector); |
} |
//------------------------------------------------------------ |
// add unsolicited error message to buffer |
// |
void AddMsgtoBuffer(int where, unsigned long Error) |
{ |
sprintf(MBuffer, "Error %d occured (%d)!", Error, where); |
} |
//------------------------------------------------------------ |
// add unsolicited error message as string to buffer |
// |
void AddMsgAsStringtoBuffer(char *strn) |
{ |
sprintf(MBuffer,"%s", strn); |
} |
//------------------------------------------------------------ |
// get back a message from the buffer |
// |
char *ReadMessageBuffer(void) |
{ |
return MBuffer; |
} |
//------------------------------------------------------------ |
// initilaize the buffer |
// |
void InitMessageBuffer(void) |
{ |
MBuffer[0] = 0; |
} |
//------------------------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------- |
/pcivme-3.2/pvmon/pcilibLx.c |
---|
0,0 → 1,317 |
//------------------------------------------------------------------------------------------- |
// pcilib.c - interface hardware dependend functions to interface to the pvmon |
// |
// (c) 1999-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// $Log: pcilibLx.c,v $ |
// Revision 1.4 2002/10/20 18:07:48 klaus |
// mostly working alpha version |
// |
// Revision 1.3 2002/10/20 11:49:33 klaus |
// first parts working |
// |
// Revision 1.2 2002/10/19 09:44:36 klaus |
// first success compiling project |
// |
// Revision 1.1.1.1 2002/10/18 22:14:29 klaus |
// |
//------------------------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <stdio.h> |
#include <string.h> |
#include <errno.h> |
#include <ctype.h> |
#include <../driver/pcivme.h> |
#include <../driver/vic.h> |
#include <../driver/vme.h> |
#include <../lib/pcivme_ni.h> |
#include <pcilibLx.h> |
#include <mbuffer.h> |
//------------------------------------------------------------------------------------------- |
// DEFINES |
// |
//------------------------------------------------------------------------------------------- |
// TYPEDEFS |
// |
//------------------------------------------------------------------------------------------- |
// GLOBALS |
// |
static int storedError = 0; |
static int nLocalWordMode = 0; // initial 32 bit mode |
//-------------------------------------------------------------------------- |
// LOCALS |
// |
//------------------------------------------------------------------------------------------- |
// FUNCTIONS |
// |
//------------------------------------------------------------------------------------------- |
// set word mode |
// |
int setWordMode(int nMode) |
{ |
nLocalWordMode = nMode; |
return nLocalWordMode; |
} |
//------------------------------------------------------------------------------------------- |
// set interface special registers - VIC68A |
// |
unsigned long _SetRegister(int nIfcHandle, unsigned long Address, unsigned long Value) |
{ |
__u8 ubContent = (__u8)Value; |
VMEaccessVIC(nIfcHandle, VIC68A_WRITE, Address, &ubContent); |
return ubContent; |
} |
//------------------------------------------------------------------------------------------- |
// function to get special interface registers - VIC68A |
// |
unsigned long _GetRegister(int nIfcHandle, unsigned long Address) |
{ |
__u8 ubContent; |
VMEaccessVIC(nIfcHandle, VIC68A_READ, Address, &ubContent); |
return ubContent; |
} |
//------------------------------------------------------------------------------------------- |
// init the interface with the current properties |
// |
int Init_Interface(char *szDevicePath, char AdrMode, int *nIfcHandle) |
{ |
return VMEopen(szDevicePath, AdrMode, nIfcHandle); |
} |
//------------------------------------------------------------------------------------------- |
// deinit the current interface |
// |
void DeInit_Interface(int nIfcHandle) |
{ |
VMEclose(nIfcHandle); |
} |
//------------------------------------------------------------------------------------------- |
// check if an error occured |
// |
int GetError(int nIfcHandle) |
{ |
int error; |
if ((error = GetLastError(nIfcHandle))) |
storedError = error; |
else |
storedError = VMEerror(nIfcHandle); |
return storedError; |
} |
//------------------------------------------------------------------------------------------- |
// clear a pending error |
// |
void ClearError(int nIfcHandle) |
{ |
storedError = 0; |
} |
//------------------------------------------------------------------------------------------- |
// read elements and split a long access into 2 word accesses if word data path |
// |
char ReadByte(int nIfcHandle, unsigned long adr, unsigned short modifier) |
{ |
__u8 c; |
setAccessProperties(nIfcHandle, (__u8)modifier, BYTE_ACCESS); |
storedError = VMEread(nIfcHandle, adr, BYTE_ACCESS, 1, &c); |
return c; |
} |
short ReadWord(int nIfcHandle, unsigned long adr, unsigned short modifier) |
{ |
__u16 w; |
setAccessProperties(nIfcHandle, (__u8)modifier, WORD_ACCESS); |
storedError = VMEread(nIfcHandle, adr, WORD_ACCESS, 1, &w); |
return w; |
} |
long ReadLong(int nIfcHandle, unsigned long adr, unsigned short modifier) |
{ |
__u32 l; |
if (nLocalWordMode) |
{ |
__u16 partl, parth; |
// lese high anteil von adresse +0 |
parth = ReadWord(nIfcHandle, adr, modifier); |
// lese low anteil von adresse +2 |
partl = ReadWord(nIfcHandle, adr + sizeof(__u16), modifier); |
l = (parth << 16) | partl; |
} |
else |
{ |
setAccessProperties(nIfcHandle, (__u8)modifier, LONG_ACCESS); |
storedError = VMEread(nIfcHandle, adr, LONG_ACCESS, 1, &l); |
} |
return l; |
} |
//------------------------------------------------------------------------------------------- |
// write a byte/word/long and split a long access into 2 word accesses if word data path |
// |
void WriteByte(int nIfcHandle, unsigned long adr, char value, unsigned short modifier) |
{ |
setAccessProperties(nIfcHandle, (__u8)modifier, BYTE_ACCESS); |
storedError = VMEwrite(nIfcHandle, adr, BYTE_ACCESS, 1, &value); |
} |
void WriteWord(int nIfcHandle, unsigned long adr, short value, unsigned short modifier) |
{ |
setAccessProperties(nIfcHandle, (__u8)modifier, WORD_ACCESS); |
storedError = VMEwrite(nIfcHandle, adr, WORD_ACCESS, 1, &value); |
} |
void WriteLong(int nIfcHandle, unsigned long adr, long value, unsigned short modifier) |
{ |
if (nLocalWordMode) |
{ |
__u16 part; |
// high anteil auf adresse +0 |
part = (value >> 16) & 0xffff; |
WriteWord(nIfcHandle, adr, part, modifier); |
// low anteil auf adresse +2 |
part = value & 0xffff; |
WriteWord(nIfcHandle, adr + sizeof(__u16), part, modifier); |
} |
else |
{ |
setAccessProperties(nIfcHandle, (__u8)modifier, LONG_ACCESS); |
storedError = VMEwrite(nIfcHandle, adr, LONG_ACCESS, 1, &value); |
} |
} |
//------------------------------------------------------------------------------------------- |
// check for a pending SYSFAIL |
// |
unsigned short PollSfail(int nIfcHandle) |
{ |
BOOLEAN bResult; |
VMEsysfailGet(nIfcHandle, &bResult); |
return (unsigned short)bResult; |
} |
//------------------------------------------------------------------------------------------- |
// clear a interface set SYSFAIL |
// |
void ClrSfail(int nIfcHandle) |
{ |
VMEsysfailSet(nIfcHandle, 0); |
} |
//------------------------------------------------------------------------------------------- |
// set a SYSFAIL |
// |
void SetSfail(int nIfcHandle) |
{ |
VMEsysfailSet(nIfcHandle, 1); |
} |
//------------------------------------------------------------------------------------------- |
// read a interrupt vector as byte/word/long (if supported) |
// |
char ReadVectorByte(int nIfcHandle) |
{ |
__u8 ubVector; |
VMEinterrupt(nIfcHandle, &ubVector); |
return ubVector; |
} |
short ReadVectorWord(int nIfcHandle) |
{ |
printf("Word read of a vector not available!\n"); |
return 0; |
} |
long ReadVectorLong(int nIfcHandle) |
{ |
printf("Longword read of a vector not available!\n"); |
return 0; |
} |
//------------------------------------------------------------------------------------------- |
// emulate a 68K TAS (read/modify/write) instruction |
// |
char TAS(int nIfcHandle, unsigned long adr, unsigned short modifier) |
{ |
__u8 ubResult = 0x80; |
VMETAS(nIfcHandle, adr, &ubResult); |
return ubResult; // check if a read reads a lock |
} |
//------------------------------------------------------------------------------------------- |
// generate a SYSRESET on the vmebus and re-init the interface |
// |
void Reset_VME(int nIfcHandle) |
{ |
VMEreset(nIfcHandle); |
} |
//------------------------------------------------------------------------------------------- |
// print out some interface special info |
// |
void GetInterfaceInfo(int nIfcHandle, char type) |
{ |
switch (type) |
{ |
} |
} |
//------------------------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------- |
//------------------------------------------------------------------------------------------- |
/pcivme-3.2/pvmon/mbuffer.h |
---|
0,0 → 1,33 |
#ifndef __MBUFFER_H__ |
#define __MBUFFER_H__ |
//------------------------------------------------------------------------------------------- |
// mbuffer.h - prototypes for simple message buffering mechanisms |
// |
// (c) 1999-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// $Log: mbuffer.h,v $ |
// Revision 1.3 2005/12/29 10:52:04 klaus |
// CR-LF minor problem solved |
// |
// Revision 1.2 2002/10/19 09:47:30 klaus |
// first success compiling project |
// |
// Revision 1.1.1.1 2002/10/18 22:14:29 klaus |
// |
void AddIRQtoBuffer(short level, short vector); |
void AddMsgtoBuffer(int where, unsigned long Error); |
void AddMsgAsStringtoBuffer(char *strn); |
char *ReadMessageBuffer(void); |
void InitMessageBuffer(void); |
#endif /* __MBUFFER_H__ */ |
/pcivme-3.2/pvmon/pcilibLx.h |
---|
0,0 → 1,71 |
#ifndef __PCILIBLX_H__ |
#define __PCILIBLX_H__ |
//------------------------------------------------------------------------------------------- |
// pcilib.h - defaults and interface functions of pcilib.c for LINUX |
// |
// (c) 1999-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// $Log: pcilibLx.h,v $ |
// Revision 1.4 2005/12/29 10:52:04 klaus |
// CR-LF minor problem solved |
// |
// Revision 1.3 2002/10/20 11:49:33 klaus |
// first parts working |
// |
// Revision 1.2 2002/10/19 09:44:37 klaus |
// first success compiling project |
// |
// Revision 1.1.1.1 2002/10/18 22:14:29 klaus |
// |
//----------------------------------------------------------------------------- |
// DEFINES |
// |
#define BUFFERLENGTH 128 |
//----------------------------------------------------------------------------- |
// PROTOTYPES |
// |
int Init_Interface(char *szDevicePath, char AdrMode, int *nIfcHandle); /* Inits to DefAModifier */ |
void DeInit_Interface(int nIfcHandle); /* de-initializes Interface */ |
void Reset_VME(int nIfcHandle); /* generates SYSRESET on VMEbus */ |
int GetError(int nIfcHandle); /* checks the ERROR flag */ |
void ClearError(int nIfcHandle); /* clears the ERROR flag */ |
char ReadByte(int nIfcHandle, unsigned long,unsigned short); /* Get byte from any address */ |
void WriteByte(int nIfcHandle, unsigned long,char,unsigned short); /* write byte to any address */ |
short ReadWord(int nIfcHandle, unsigned long,unsigned short); /* get word from any address */ |
void WriteWord(int nIfcHandle, unsigned long, short,unsigned short);/* write word to any address */ |
long ReadLong(int nIfcHandle, unsigned long,unsigned short); /* read longword from any address */ |
void WriteLong(int nIfcHandle, unsigned long,long,unsigned short); /* write longword to any address */ |
char ReadVectorByte(int nIfcHandle); /* reads a vector byte from VME_LEVEL */ |
short ReadVectorWord(int nIfcHandle); /* reads a vector word from VME_LEVEL */ |
long ReadVectorLong(int nIfcHandle); /* reads a vector longword from .. */ |
char TAS(int nIfcHandle, unsigned long,unsigned short); /* 68K TAS (semafore) emulation */ |
void SetSfail(int nIfcHandle); /* set SYSFAIL */ |
void ClrSfail(int nIfcHandle); /* clear SYSFAIL (own) */ |
unsigned short PollSfail(int nIfcHandle); /* get SYSFAIL status */ |
void GetInterfaceInfo(int nIfcHandle, char type); /* request some information from driver */ |
/* set and get register contents of .. */ |
unsigned long _SetRegister(int nIfcHandle, unsigned long Address, unsigned long Value); |
unsigned long _GetRegister(int nIfcHandle, unsigned long Address); |
int setWordMode(int nMode); |
/*-------------------------- End of Prototypes -------------------------------*/ |
#endif // __PCILIBLX_H__ |
/pcivme-3.2/pvmon/Makefile |
---|
0,0 → 1,58 |
#**************************************************************************** |
# Copyright (C) 2001-2002 ARW Elektronik Germany |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 2 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
# |
# Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
#**************************************************************************** |
#**************************************************************************** |
# |
# Makefile - makefile for ARW Elektronik PCIVME interfaces pvmon program |
# |
# $Log: Makefile,v $ |
# Revision 1.3 2002/11/14 19:57:56 klaus |
# improvement, still bugs active |
# |
# Revision 1.2 2002/10/20 11:49:33 klaus |
# first parts working |
# |
# Revision 1.1.1.1 2002/10/18 22:14:29 klaus |
# |
# |
# |
#**************************************************************************** |
SRC = . |
INC = -I. -I/usr/include |
LDLIBS = -L/lib -L/usr/lib -L/usr/local/lib |
DBG = -g |
CFLAGS = $(DBG) $(INC) $(LDLIBS) |
TARGET1 = pvmon |
FILES1 = $(SRC)/$(TARGET1).c $(SRC)/mbuffer.c $(SRC)/pcilibLx.c |
all: $(TARGET1) |
$(TARGET1): $(FILES1) |
$(CC) $(FILES1) $(CFLAGS) -o $(TARGET1) -lpcivme -lslang |
clean: |
rm -f $(SRC)/*~ $(SRC)/*.o $(TARGET1) |
install: |
cp $(TARGET1) /usr/local/bin |
/pcivme-3.2/pvmon/pvmon.cfg |
---|
0,0 → 1,4 |
Configuration=Oct 20 2002 |
DevicePath=/dev/vmemm_1 |
AddressModifier=39 |
WordMode=y |
/pcivme-3.2/test/simpleTest |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:executable |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/pcivme-3.2/test/simpleTest.c |
---|
0,0 → 1,251 |
//**************************************************************************** |
// Copyright (C) 2000-2004 ARW Elektronik Germany |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// simpleTest.c -- a simple test program for the PCIVME PCI to VME Interface |
// |
// $Log: simpleTest.c,v $ |
// Revision 1.4 2004/08/13 19:23:55 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.3 2002/10/17 19:05:03 klaus |
// VME access is working through test to lib to driver |
// |
// Revision 1.2 2002/10/12 22:12:19 klaus |
// simple change |
// |
// Revision 1.1.1.1 2002/10/09 19:36:29 klaus |
// initial import |
// |
// |
//**************************************************************************** |
/*--- INCLUDES -----------------------------------------------------------------------------------*/ |
#include <stdio.h> |
#include <stdlib.h> |
#include <limits.h> // rand() |
#include <string.h> |
#include <unistd.h> |
#include <sys/mman.h> |
#include <linux/types.h> |
#include <errno.h> |
#include <ctype.h> |
#include <../driver/pcivme.h> |
#include <../lib/pcivme_ni.h> |
/*--- DEFINES ------------------------------------------------------------------------------------*/ |
#define DEVICE_NAME "/dev/vmemm_1" |
#define DEFAULT_WIDTH BYTE_ACCESS |
#define DEFAULT_MODIFIER 0x39 |
#define BUFFER_SIZE 0x10000 // local buffer for temporary use |
/*--- TYPEDEFS -----------------------------------------------------------------------------------*/ |
/*--- GLOBALS ------------------------------------------------------------------------------------*/ |
char *cszPrgName; |
/*--- FUNCTIONS ----------------------------------------------------------------------------------*/ |
void hlpMsg(void) |
{ |
printf("simpleTest - a program to do a RAM test with help of the PCIVME interface of ARW Elektronik Germany.\n"); |
printf("Copyright: see the GPL of the free software foundation. K.Hitschler, %s.\n", __DATE__); |
printf("usage: simpleTest [-d=DeviceName] -s=StartAddress [-l=Length] [-m=AddressModifier] [-w=AccessWidth] [-?]\n"); |
printf(" -d - choose a device to use. (Default: %s)\n", DEVICE_NAME); |
printf(" -s=StartAddress - address to start the test, mandatory.\n"); |
printf(" -w=AccessWidth - data element width, 1,2 or 4. (Default: %d)\n", DEFAULT_WIDTH); |
printf(" -l=Length - area length to test in bytes. (Default: equal AccessWidth)\n"); |
printf(" -m=AddressModifier - VME address modifier for accesses. (Default: 0x%02x)\n", DEFAULT_MODIFIER); |
printf(" -? - this help.\n"); |
} |
/*--- TEST RAM LOOP ------------------------------------------------------------------------------*/ |
__u32 SimpleRamTest(int handle, __u32 start, __u32 length, __u8 accessWidth) |
{ |
int error = 0; |
__u32 r, w; |
__u32 dwErrorCount = 0; |
while (length >= accessWidth) |
{ |
w = rand(); |
error = VMEwrite(handle, start, accessWidth, 1, &w); |
if (error) |
{ |
dwErrorCount++; |
printf("%s : Can't write @ adr: 0x%08x (%s)\n", cszPrgName, start, strerror(error)); |
} |
else |
{ |
error = VMEread(handle, start, accessWidth, 1, &r); |
if (error) |
{ |
dwErrorCount++; |
printf("%s : Can't read @ adr: 0x%08x (%s)\n", cszPrgName, start, strerror(error)); |
} |
else |
{ |
error = ENOANO; |
switch (accessWidth) |
{ |
case BYTE_ACCESS: |
if ((w & 0xff) != (r & 0xff)) |
{ |
dwErrorCount++; |
printf("%s : Compare failed @ adr:0x%08x w:0x%02x r:0x%02x\n",cszPrgName, start, w & 0xff, r & 0xff); |
} |
break; |
case WORD_ACCESS: |
if ((w & 0xffff) != (r & 0xffff)) |
{ |
dwErrorCount++; |
printf("%s : Compare failed @ adr:0x%08x w:0x%04x r:0x%04x\n",cszPrgName, start, w & 0xffff, r & 0xffff); |
} |
break; |
case LONG_ACCESS: |
if (w != r) |
{ |
dwErrorCount++; |
printf("%s : Compare failed @ adr:0x%08x w:0x%08x r:0x%08x\n",cszPrgName, start, w, r); |
} |
break; |
} |
} |
} |
length -= accessWidth; |
start += accessWidth; |
} |
return dwErrorCount; |
} |
int main(int argc, char **argv) |
{ |
char *fname = DEVICE_NAME; |
char *ptr; |
char ch; |
int i; |
int error = 0; |
int handle; |
__u8 bAddressModifier = DEFAULT_MODIFIER; |
__u8 bAccessWidth = DEFAULT_WIDTH; |
__u32 dwStartAddress = -1; |
__u32 dwLength = -1; |
//----------------------------------------------------------------------------------- |
// scan command line |
cszPrgName = argv[0]; |
for (i = 1; i < argc; i++) |
{ |
ptr = argv[i]; |
if (*ptr == '-') |
ptr++; |
ch = *ptr; |
ptr++; |
if (*ptr == '=') |
ptr++; |
switch (tolower(ch)) |
{ |
case 'h': |
case '?': hlpMsg(); exit(0); |
case 'd': fname = ptr; break; |
case 's': dwStartAddress = strtoul(ptr, NULL, 16); break; |
case 'w': bAccessWidth = (__u8)atoi(ptr); break; |
case 'l': dwLength = strtoul(ptr, NULL, 16); break; |
case 'm': bAddressModifier = (__u8)strtoul(ptr, NULL, 16); break; |
default: printf("%s : Unknown command \"%c\"!\n", cszPrgName, ch); exit(0); |
} |
} |
//----------------------------------------------------------------------------------- |
// test for correct parameters |
if (!fname) |
{ |
printf("%s : Must have devicename!\n", cszPrgName); |
exit(EINVAL); |
} |
if (dwStartAddress == -1) |
{ |
printf("%s : Must have a start address!\n", cszPrgName); |
exit(EINVAL); |
} |
if ((bAccessWidth > 4) || (bAccessWidth == 3)) |
{ |
printf("%s : Illegal AccessWidth (%d)!\n", cszPrgName, bAccessWidth); |
exit(EINVAL); |
} |
if (bAddressModifier > 0x3F) |
{ |
printf("%s : Illegal VME AddressModifer (0x%02x)!\n", cszPrgName, bAddressModifier); |
exit(EINVAL); |
} |
if (dwLength == -1) |
dwLength = bAccessWidth; |
printf("%s: Testing %s from 0x%08x to 0x%08x with Modifier 0x%02x.\n", |
cszPrgName, |
(bAccessWidth == BYTE_ACCESS) ? "bytes" : ((bAccessWidth == WORD_ACCESS) ? "words" : "longs"), |
dwStartAddress, dwStartAddress + dwLength, bAddressModifier); |
//----------------------------------------------------------------------------------- |
// open the path to device |
error = VMEopen(fname, bAddressModifier, &handle); |
if (error) |
{ |
printf("%s : Can't open path to %s! (%s)\n", cszPrgName, fname, strerror(error)); |
exit(error); |
} |
//----------------------------------------------------------------------------------- |
// loop until error |
error = SimpleRamTest(handle, dwStartAddress, dwLength, bAccessWidth); |
if (error) |
printf("%s: %d test errors!\n", cszPrgName, error); |
else |
printf("%s: No test errors.\n", cszPrgName); |
//----------------------------------------------------------------------------------- |
// close the path to device |
error = VMEclose(handle); |
if (!error) |
printf("%s: Close OK.\n", cszPrgName); |
else |
printf("%s: Close with error, %s!\n", cszPrgName, strerror(error)); |
return error; |
} |
/pcivme-3.2/test/Makefile |
---|
0,0 → 1,58 |
#**************************************************************************** |
# Copyright (C) 2001-2004 ARW Elektronik Germany |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 2 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
# |
# Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
#**************************************************************************** |
#**************************************************************************** |
# |
# Makefile - makefile for ARW Elektronik PCIVME interfaces test program |
# |
# $Log: Makefile,v $ |
# Revision 1.5 2004/08/13 19:23:55 klaus |
# conversion to kernel-version 2.6, released version 3.0 |
# |
# Revision 1.4 2002/10/20 18:08:21 klaus |
# don't know what has been changed? |
# |
# Revision 1.3 2002/10/17 19:05:03 klaus |
# VME access is working through test to lib to driver |
# |
# Revision 1.2 2002/10/12 22:12:19 klaus |
# simple change |
# |
# Revision 1.1.1.1 2002/10/09 19:36:29 klaus |
# initial import |
# |
# |
#**************************************************************************** |
FILES = simpleTest |
INC = -I /usr/include -I . -I ../lib |
CFLAGS = -O2 -fomit-frame-pointer -Wall $(INC) -g |
LIBS = -lpcivme |
all: simpleTest |
simpleTest: simpleTest.c |
$(CC) $(CFLAGS) simpleTest.c $(LIBS) -o simpleTest |
clean: |
rm -f $(FILES) *~ core |
/pcivme-3.2/doc/pcivme_doc.pdf |
---|
0,0 → 1,884 |
%PDF-1.4 |
%äöÜß |
1 0 obj |
<< /Length 2 0 R |
/Filter /FlateDecode |
>> |
stream |
xíXQ7~_Øÿàç@'lmÙÝÒÇ´ýI[(½æ%¿Ú<gÍÌ]J |
)-ÇÁ<%}eÉà>:àXbç]ä>þä~|å~p9NÇï²K@¹îõ÷ð³{Ä·îá×ã!.°"ôúITª$Aæßàã´¡._à |
+¤i9ľÎ3uóbìÎSìNbEíÝÑì=ï¤_\dît2Òvw¢SÌÖüUÂÐ>zùfNÊSôªñ~3èwc¾íávhãA0D¨Ö̤ mÒ Ã¨¬¢MôÕüßàÅ$à%¼Ô*ˬÃZÚºXúLlt-y\µzÉÆM²Ra=xjÈe^y«ðL®á¢f+lE-b& |
+X~Û3 |
+¥ßÖc©$_l®Ï/¤õ÷ìüsþ|)Ëÿ}mþüà¿Ý¯AsÑ-næ[ÞpÞgn¢vn¸ÉLð¦ÿ'¢´Rõ·c lo/ík{#KcöZø²Fsñ½ ù¶¥\4SÚ¿hÇÐëTçk'Ôö£uïL0e·ïðÜþláÙ'mEt4衯I±iþÉdZn¯QÊÛUÙo¨ßÊå¦ËÛýÒ^'´£e'ÜggÈ6X9ÊíBAð«Ì£¶^eÕ |
+RÂ3z·¹¢Ç®LïÐhûÛuµ¶ëSoß9î:JÏPù{à3ÏùÃr{©\¼òNâ{sRnOUeÄ{ýÝ£wãînó/}þºendstream |
+endobj |
+ |
+2 0 obj |
+ 1023 |
+endobj |
+ |
+3 0 obj |
+<< /Type /XObject |
+ /Subtype /Image |
+ /Width 270 |
+ /Height 265 |
+ /BitsPerComponent 8 |
+ /ColorSpace /DeviceRGB |
+ /Filter /DCTDecode |
+ /Length 11045 |
+>> |
+stream |
+ |
+ |
+ |
+ ' .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQROÿÛC&&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOÿÀ "ÿÄ |
+ÿĵ}!1AQa"q2¡#B±ÁRÑð$3br |
+%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ |
+ÿĵw!1AQaq"2B¡±Á #3RðbrÑ |
+ÿ¦íö¤ÛÍìÚO»öÝCþþËÿÅQöÝCþþËÿÅSvÒm4ù!Ù´v?íº?ä'©àl¿üUlÔ?è)©àl¿üU7m})rC²i>ìwÛuú |
+j_ø/ÿA½Ô?è)©àl¿üU4-/Åwcn<~½(pÝ öV/Ûuú |
+j_ø/ÿGÛuú |
+j_ø/ÿQmÎDcqÓõx¼;¨MgÒ¤Q¬ÅD1¼£|vç ÈÁ¬ù¨ÞÚ%Y«êf}·Pÿ ¦¥ÿ²ÿñT}·Pÿ ¦¥ÿ²ÿñTû;I714n¹#ðãÖ¢ÛZ(AôFn¥EÕûn¡ÿAMKÿeÿ⫨ðõÃ]jIuws:ªBPO3I´&q¸tr»jætÖ·÷{xÝ_ÎJʼ"¡¢7ÃÎNvlõ$[¡©ÍsZMãÊFMtQpçX.tûoúä¿ÈUµ¿ñ.¶?ôÅ?«kÓÑL¬fÚM½ªM´Nâ°ÌqI´w©6Ѷ öö£mKj1EÀo4m©çÞ´ÂýhÚ*]´m¢àE´Q¶¥ÛíI·Ú ÊûQ¶¥6Ñp±Ú6ñRíö§C d X)# }(½+²²kɲ¦áþ5kû |
+Ô2ÈHDufÀÉôm£´=AhîtQkztÚDj?dhégÚ¹ßZGëòZÜÄð-º©xÎì¶÷àcôüÅX³dóË¡!gÉl=OjIµi~Ï*Ü\nÀ!ß#ïu?tþ¾ÕçÔ,¹OF£Íc×ÝbÔ¤ |
+Åß( 9yì3ÈúzÖzÊZ$ýÌÀ |
+d)ÉezÃ$f®øµÄZÀ]êqãhaÎS»åÙª"Ûíöï±@ÿý+6äQNö÷*T¦ÐóOÒ®]ÞI1fýäqóç}}ªµÜ¤b8\d&[<FyäT·å=˹÷m,1¸s´tã»cµ.E¹º¯V4ý±V-ÈÀ๫¯s=²íàf¤É°mÊ|à¯LéW¦qÇcê)!-®¤3»µvóÏLw¦¦#¨°¾é#iÝcê2süÐ×máx[GHÊä³.Ö19ÛP½ð8®.x|ØâA |
+IëÓ?>ãv~XÚÊÈG%blQòNüäÿ½øg@ã»âÁÿHÿëþmXïåµ²¥O:ýMcm¯F÷QÃWãdXíPÁÿ!9ÿëúÕ½¼UhÆ5IÿëúÔÖøJÃügW¡uÖE÷+кë"ûÆÎóÊôµÿU§ýpOýU¢9¨t±ÿ>?åè"⻣±æËr,Q·éRâ´Åb-´cm4¶Ñ&0±ô£mI¶¸íH,G·æ¤ÛK¶"+è(+Rã°þTm ,EFÓRí£ ñF?o]¼t ,ä¸\Kioç̱îÛßõü*Æ6ºnuM.ÚÞ G × çFã×9ü*ñ´KaÉàH¿Ò¬øqÝͽÄr[ªneÃçð>¾üsë\u¾vÐ^áÎkßiñeì*¡Ëïwè:V_a=r1[^$Suâ;kL$æ-?1þD |
+Èp |
+.àTåðAÉôíÅOó$B9Ê~^ý@ü W³S#3Ä"å¤úµaÑÁRX3w·Ö39#v:`qVcà|à û+sÜ·Hç¨=MWXU·ê[ Ç=1lçSæî]ÀJDÑ«CÎ@01xh![a\k² ß.ôܧ¸89Èöäwk°ðÁ4@'Ë!Ý>[d¡BsÏ|¿ÃÀ®26{kÞ?7}°,ìü<G&à»Ì³´ "|¿ùè{EX±â@ÇSç§6ñõ¬¾Õ¹â5Ýucû§sY}«ºÂ:«ßd[jÕ§ÿ®1ÿèRVßj F5yý0ÿB_ªÔh]Eu}Úäô.¢ºÈ¾år3´ó=)âQeÿ^ñÿè"íëPi Ëþ½ãÿÐE[Åv'¡çÉjG¶µ.Ú1ÇJwÐV¥#Úo'.;í4mô©6Ñj.{}èÛRm£Ù¢áb=´m©1ëFÚ.+í¤Ûµ)m v#ÛFÚoµ |
+ͺÚÅ/üµSæ!c§©Æ};Vz\Çkr±´W2¶@ |
+=Y¡â1þÿ¦ÔÖNÚÔÕîRîï1UWz¡èk¶EÖNÄ[k:Aboúáþ %kmö¬¹Æ5¿ëÞ/ý |
+ÎG§ãíÍA¢iÉas±L¸of9äzúp¼t}O-_ê¥ðßA»×®mäL"D©dó¸ã¿5cÍ#FA¸Õ~§ñÚ7öõüÊc p6¯À沿vïvû1×ÏKr¿ïäÚè}yõ©,mÖ{¶YöËmÏ¿Z°l%¤OîÀÏùò¨Ù·``=)8ܪu9d®JþL3l`gôëMic2R9Rß6ßQÁP{T]¨¡E"ªÖWv.Nzô®Ã6í)þB¹±Ð×Oá:Oúêi|G<ö56Òb¥+Ík¤ÆÄ[k"ëþCRÿ×¼_ú¹¶±oF5ÉëÞ/ý |
+JR^ñÐè]Eu}Êäô.¢ºÈ¾ís³¨àôQÿ;8û4ú«¸æ«hþ$Zòíþ*îÜz~5Ò¶9Ô |
+1RíïF)Ä[hÛRíö£m+ ±ÅjM´m¢áb<z |
+0jM¼Q:S¸X¡iû}ivû |
+Ab,QRm£oð{Ñoµ}¨àúQRíæ´\,:Ô~ðÿ»VÅVaÏÒ¬ |
+§ÄtSøNÅò1\ÿÀ?ô¬[+ñPÜý#ÿв¬ÁîQ@ÄZLP;×Uáp³dÿ®Çù |
+å\`xèþØévqÇnòõé(ÜàäG~Ãq³¸¹y´"Á£vö8Òqå+("«í®î®dãgb,Vÿì¿õíþ %t;G¥`jCô¿õíþ %Lö.Änè]Eu}Êäô.¢ºÈ¾å`ÎÐ×:ÿ^±è¯öªºÎ¦ÿ׬_ú«øü+{ÍjE´Ñ´Ô¸£î+àúQ´Ôâ´\,E·4m©JѶ ¶ý(ÛRâQp±Ú]¼ÔE¢áb-´mô©vÒbÄ{hÛRàb |
+ÏÒ?ýµZþ)ÿçýØÿôZÖMHáÅ´P!U??Jpk¸çH oݰ%@Oîíé õ9h$t5=¼2LÈp=9<ôïÏ¥î6Ý#; 2ÛóÏ$øò>µÖø^AöÈL»O4 ;vãnIþÓÌÈÑÅwM®« ?.O~c?úéü<eªoù*²ÞB¤w`cðîsEEë©Õ\¡] »1ÇSU»÷F¹¨vñ[Gb$µ"Û\Ƶÿ#õëþ-uÎx®S\ñõéþ-aÁjkè]Eu}Úäô.¢ºÈ¾åfÍNoÃÃþ)Í3þ¼âÿÐhc¥áÕÏô¿úóÿ@¥·Ú®æV"Ú:1ÜÓw¦à<ÄÉÿhT¦è *xõªPÛK½^EØ¡ |
+ü+¥+,l^W<¾Ûúããÿ_ð£î´Vg6×Þ ÔÀ$ÜôkåYCǹÁEî!ôöúþíQ¨¥²=(-¯;Æ÷ȱ§Ç1'øVæ« { PÀmNAÞQΩ˺;-¼t£ÊGZPåäáAäy|»=¿ØoËÜdºd1ù¿6í¸Ä}wþjhö^ÓÉVÞÔcÚ¹UÔu· ÆìCmÛþ¯ìÇoúh¿±¨_U×Byc³nììNCútG´CöLì6æ{W&£â÷ÏÉßßôÍÿ*Oí=|¹_1÷ÚGwlÇOïqG´AÏäÎÇoµ.ÜW1£jzÆ«oÔÅ¢3òn¡Sø×W·¥+r¥ØÄ@ûÕPjíðÄÿj¨-CÜÕo¿ä`¸ÿv?ýµ[*ñ>ú¤úÖ="^âÐ(ÅUIà |
+»¯µ8v©"W)£òÍ(Cy.7oe@FyääÇ"º¿Læö nU~UP B ãlð£ôÅs²ZÝ@9³ÿg«Û+©Ðæ;ؾÚZE1ºÆ;BmÔzÒQwgRÑ*` ÂãGAI¶¥`gÖojÕl&µ"Û\¾1âGôéþ-v[}«ñÇ_þ½!ÿÐå¡°ÔÔкë"ûÉè]Eu}ÊhaøpgÃZWýyÃÿ |
+è4µ<¿L½ÒÒå#)^pù£×óÁǨ¶ ÈcäYµÑu'/>%Ý$K<eÐ*=êÅñtÁÎí=ÿëëYRMÉ)" .mhb`7/Ï¿k8éê»G~Iªq¤jBÏâ ÆP»^;à°ü>´ÉfHõÑæ5EVÜ[¦ÐHëÓwôúÔ¶ñ ÔMjgN±Ð«¸,¹éê=éô5åK¡jhâXce@ôÿ>Ê«ÎòEWò×1¡}N3Üõü©ìK¸NE¨Û¯eE2N.°"cdÝ9î¾ðhZÁ'-BÖI^kµ#¤R*G¼A,2:dtÏÇJ_6 I ÌI³'k8 |
+IÛ{z(E²µp=OJжÓÓùsúV6Ìç¥kZiç |
+Q!ÓíHÚàvÅt¶P"£´²+R(Â |
+NÊÚmWm+ì`ÑnÊuMÙÎÒ2kídK|©I8'âÆÔå&º¡ÐF¶ÌZ±îgëP¼Id0𳺠Îp8z·Ëúvx¼õùúV¶§dÉ*:©âO9m'N?<QWcjlÑÏÚéésc$3I¼íUR |
+z<rýkðÕB×#$ò9äb½FPf©ÐQÔä¦R°¼¸×ÑãÐ!È'þ3XúÍÌz¤6²,ƶ®þrN HݰÇòzöúW{qqÒ²gÑàa+B ÀÀb¼õ¦ocW±óo-6 ¶UýZ´tí?hZÐOù6Iõ5£@À à¶ |
+mP |
+p¥ |
+(¢ |
+(¢ |
+&Tzý(_s°ÐÞiÆ5?ÝtøTÕÙZÚ¤ QSí¢Èá×ûµf¼ |
+·¹§ij8ª(éE1E4 4ú(iØ¥¢ |
+(¢ |
+(¢ |
+(¢ |
+(¢ |
+á|Yÿ#S×?úµÝ× âÏùþ¼¡ÿÐ妻¡uÖE÷+кë"û09ÏëÚ,>Ó"WÓã-"VF¹@TgZ?ðè?ôÓð*?ñ«×*Y+ÔìäyI7ÿá#Ðè7¦ÿàTãGü$zýôßü |
+é¿øøÑÿ ÿA½7ÿükþÏû¦ìùºh°ü$zýôßü |
+ühÿBÿ ÞÿQÿrÙòÿtÑý/÷M¯ÿBÿ Þÿqÿðh?ôÓð*?ñ®Cû>_î?³åþé¢Àuÿðh?ôÓð*?ñ£þ=þzoþGþ5ÈgËýÓGö|¿Ý4X¿þ=þzoþGþ4ÂG ÿÐoMÿÀ¤ÿä?³¥þé£û>_î,_ÿ ÿA½7ÿühÿBÿ ÞÿQÿrÙòÿtÑý/÷M¯ÿAÿ ÞÿQÿðè?ôÓð.?ñ®Cû>_î?³¥þé¢Àuÿðè?ôÓð*?ñ£þ=þzoþGþ5ÈgËýÓGö|¿Ý4X¿þ-þzoþÇþ4ÂG ÿÐoMÿÀ¤ÿä?³åþé£û>_î,_ÿ ÿA½7ÿ£ÿ?á"Ðè7¦ÿà\ã\öt¿Ý4gËýÓEëÿá#Ðè7¦ÿàTã\om/¼HòØÝAs´Kà pùxÈïÈüé?³åþé iòçîvWBê+¬î×7£Û<ddWIÂÒ`="«IjrEZ¤¤/±' £ìIè*íKìIè(ûz |
+»ERûz |
+>Ä®Ñ@¾Ä±' «´P/±' £ìIè*íKìIè(ûz |
+»ERûz |
+>Ä®Ñ@¾Ä±' «´P/±' £ìIè*íKìIè(ûz |
+»ERûz |
+>Ä®Ñ@¾Ä±' «´P/±' £ìIè*íKìIè(ûz |
+»ERûz |
+>Ä®Ñ@En©ÐU1H)hÿÙ |
+endstream |
+endobj |
+ |
+4 0 obj |
+<< /Length 5 0 R |
+ /Filter /FlateDecode |
+>> |
+stream |
+m{µyAY$U¥y.0´$×UÕ(u ¼l×´JhIÄcºïJêZQÚ² Ø>L2¸l{`Óßt!tô§\Ïù£.v>Ù¸Nz¯s,ÅA$0ÇÄ] g¨×ôÅèÐKeí˺HüÏ Cwüı0ĽnàLNϬ<Øm«¸áFÐ¥¶|fäBøÔ¼ic9fÒ»mÅÓ.C wáºË¼õ²À¯ªx°-¹P^<è²9ÐîuülÁ>Åv½.ÖnhE8(IUU 7A¹'J |
+7Å;5¢ùYÑ |
+ÚÏDÃdói$Ù÷ì ðQçZigSÃzyD÷î¨ }Rf2E;fuÛ®Òâ,PîÆHåeÁRKÁÔÄ| C» 澺I¿|¥ï&I*%C:IFêÉD¢'7àßôcÆD4M(EÜö?/î4°Ï§K!cez5'×_/°¯I¥kRM°!ÔØüÃ(µ81ÊIÈ`È]ªáÄjJYIhÞ(v?'~O49¸0T"ä¦ùT¸f |
+Tt;OÑæ ÅÐ~å;K 0DÊú5]0}@,öJ¡IU³eòvÞ&h[!`à°BÖ½&DlÁ¼0*·e ;ÅjÛFÄQ¬À+{à³Uëæ ìZ7 Ö¾±ÚÍ׫ÝVHùÞÕm6m8÷ Ï4m"þÚ¸ý®êTÁpÇ0ÇðÕ&Aè?kªÒ,¯9©JX"ÒUUÌItÔ2Òñ{¶Ý ±ÀyÄù(^°8ôÂÂ1ØÝêÙB¾j-½ä̲»ØÀçåú4=4{]ç.´<þèÄ4&ìæ,C³et: ~wôsª$ÔsÁCj(i! cX:(,ùU¤àÑA¢ºO$SbÃäýsù~ÁìnHÈÃD^×kçʳ֩YùÇ ç^+ÿXÛôVë<uó,v}¼2úi .¡'pº W$kæ*_V¨2` +FÞ9ç)541ÎÇñ8BHv°B{øu5=]s :£cëNG/g_ú¸|^äýêÕeíjñb)x³ÃÄTÚaLÒ¸»è¼A÷éfð=ccz* ¡ë |
+w/$vß7w(MàãzyR®PǾS~)rïÛçØnèÝe¿ pMI³»½øW½Lèu'cßÎÈ¿ìíªs±¯Æ¾¶í«h |
+Я0Z¨#ñ¼uòxþzü5«9È nWs2y2 |
+j5ÇÔ÷vÍùuÐÉ)Ê¿-¶iC%²õú3o˽ïWQ/áhêô1Nðñ-bÿzÓûKõÏ㺳nGÈ5ÃÎø{âûeÕÁê»fß¶wÞ;!c^vuj#yðîÛN\$aQkRUÿ~õ=Þ¼çÍ©_£ºýò;ñUXQ¸¬YHf*Hì×]4XùkÃGYá5r´À¸qÁÍhbçÇ÷KeàùwÇäÛÇ5¹á%r¤$3ÎûsUøÔ[Ä¥T¯ê^ç0!ûÂj<%g¥jÍ}>çcBbáU¼ÃZ¡²ê¥jÕ5q©Á"¤^|üOͽÚ}³XÐ׫¾]HÊÆ/g:Ó¬:Z¹ÿUgõ¨ìVΩøÁúÀwj¶Â¥æå±´¹\lî Ó¸sûÉó½Øt¨ÄÝ*méKðiÎòRmÌ8E|~ÑLßvÉ èÙB ¹ZGrÉų¢+§=2ýQßQG>9éæ3Î÷L£C@,²®m²½êÌc»@n[F2ÁÛN`>¸CÓ7ms$¾é<1}"öO4ÊJiç¾Ñ¼0o"mï}scv8õ,Jo½¦öóæ?{Üôtendstream |
+endobj |
+ |
+5 0 obj |
+ 2422 |
+endobj |
+ |
+6 0 obj |
+<< /Length 7 0 R |
+ /Filter /FlateDecode |
+>> |
+stream |
+½7ÐÿgÊB±U÷ðx|0à¹ø÷å*RJ=AEÆ,^ÐèFWt,E>>.RË?¿~ùÇ%l¿Æu|.KNþ|ùãï.§þúõËíû×/ãô²\æ9¿ÄË÷?]~ÿ.1]¾ÿåòÃpûÃåûß¾~^Òvûöo?LW+üúùÛÇÏï_l®¨ïáãÊú²Ò3÷L/Ý3ÒùóJJí{ðJÛ÷k;¾xñ¬W^7þ¨Ét |
+ÛW ª3ʨsûµ°ê~m¤MÒ66¤!˼ëËÇ$Æ8°~YÏê¨ ¯ª{`Å?|aÚ[ùm]ã0/ê%IÓ×b*äÛ&}#(¾üNËtït_ýÉ¡nóû«ÙgÀ¯Ía[tékÃyî½W\<P0I$vh¤¢tg$§´}ç¤ðµcHéN¦±)/ |
+Tà( Þa µ¢¬<M};ÿ¢o<Kì¡ |
+: I÷±àÃIbGèõu_aÈä8HÀ¸L¤ñóÇò¤¸ÆOº:ÄÂ`?ç»OÈyM1\ã²ýÕÆqAÂjºÊ´t!ÌôTG(`d0¬®à{2,ö¨£^!ZÅñ\É=ÄPܱàµéÁ¬¾¼è>¤GáÆÊ^ü¸ îFl´ÀÆF¶s× |
+ô\ºX *v{àÇ`¾Ù@¨(Iø!JÓ8¸¥Ã¸´»,¦Ú¶(¾ #b%(@*W%ÙCþCT9D&Ób©c`¡L7©â |
+ñÎÒÒ+iÍÙa,é¾Ë¿ì>Ö{ ³ûl òUâ)Y`¾ùwVI¥£;^ÁpÌ÷[ãXÁÈR¡` ¢À¡áÿܺÃ0F.ñ®Y8ÛD ÿhÑ,#I¦[bYXGF ,Í1VÙ?Q!º°ËCêúçx³`l~V>*qÖPRÐ÷Lb¿%Bp/FÔ^trQIo)iñ1VEÿ-¤ãø |
+pÌF¼â2sémÀWÖ±4Z@(ÖTÁåî :ÎQ%×GoZ NèõÂKWzÀ¨. õ|}¨È^K?Zî6ÑÑRVV¥¹$zG»bÈ6è[õÔ| aÊìi!ÓO?CágXÀØgJ3.cáz tøF_âYÆÇ/aÀ¸ÃrTß3È`eË)Øó¶©¥3ØSJ*ÓYýõÏqÁ£ |
+`RªO¬Ï]ô0ÞaÓëOfÀmEiñ½cªF³7]ÜßÜ£qVBc!îs(ÃêÉZÙ M¬MGOb®Úp+Ô*Ø©Øoí ÌØÆbªY |
+Ç òOr~OG¨á@r4õ$¾<Y!?ÑnUS-D0rC:ñh´Î¸.Ú=ÖÒd¢ì {'e°íB^®ÎKØÍË«dÍywuúþ_°`+,¤§ÁcBK×÷PÊà÷̰ø¶HÔ]ì 4¦ |
+a§µòFv¢¿ÄR#ð.q}ëìùAaÈö¬â_àîjÏÉI³A8õúÊuøyÚþ+ù_(êÀ4ghûLWZ 1¡¤S@Tª}Q¬q94¹³h¬ÞóTëT´L¨.FèÛ+wí]°Àb$OÙ_XìVcA |
+½iÊZ %(1{`˼O(íêBÌÓ?µ |
+ÚÅù&æ¹<¤îëhaéf¹_xSäâÃÏÚðcQ'cð`7ùØ®¢pâPû |
+¦F±åÅÒ¦Ð^æ |
+þsríÜérFá´=uÔrmGíÜúR4¾ :öSW®dÑnÙ@h wl¯j%~õå>*WÇùf=VZc¬Å(m¾!|ñ¨êݧVPäó!Ó³ËDÚ>¦¿Ùí¹ÝÊ |
+ú[±#Îv2ÄqÃ÷õûY}pVÖÈ»09$Ddú]ðø5!=Ø:¶!¹y£k·£ÆøVö*@OýQhWv¨«îݶO`>ÏKêÈ]=Ù g¸²RôfSB$JOmè"Ï&%¸ÊÁ,ÂÐÑ)5kLìØïrZµ¨QwKb¤ÞÛöݳ©KãDð9/Û/± |
+íÒ/üwMDúêãh¼üeÉJendstream |
+endobj |
+ |
+7 0 obj |
+ 3269 |
+endobj |
+ |
+8 0 obj |
+<< /Length 9 0 R |
+ /Filter /FlateDecode |
+>> |
+stream |
+xí]Én$¹½7ÐÿPgdI横¤ûü^9ð\üûÎU0X|¥R·}èV*¹Åúbav8üçû·Âú§,åi8Ì9~ÿûá¯:ü~¿ÿóû·ãÛ÷oe|ÓÒáío?¿¦C\ÿõÃ/ÃðÃÛoß¿Mëáò»_âòþd|*×'áüþ$=MôÎHï$z'¿?ê<áNïÏ{=ô,Ò\#ûõðµLO~Oq Óû³Ø¼[Cx¦C¯/Ò |
+2ì»Î]cUy]UòêÔC4v¤E"m{ê±/CntW?ÛÕ¦?&¦/+82ó :´í zâ |
+V»¿*Ω¾`a£ÒS_÷lt?ÆÆ}Õ×´ÅLÖsÌÀ%=³¢á9y$ |
+ 2ÑåOÈu$éÐ t³èûK°TÃ!=ߢo ¶releh«!èÙðÞtxÎéåºåÆn^yA?§5å\Ôç0MeWž5R*Ïà4B6`þ(À0¬j<?¬Ç¯Võµ·RJÒ_,¶÷ô0aK+èîQ.ÜùXL7M &åÈ%åνóúºß¤£oÕ6¬Gª;±Ìã.w"iìçÙ¨tQµ)Æï ¶Fb ù'b |
+ fÚ<©1TxÌ©#Øn<¹#õ(V~Q |
+L |
+a§xÈóY_d[ ~lØõ§¥{°¨Ä&CÛÄÖRÝ"qÖ»ÅRw^Ë*æ<AxidxEGÖÛ:¡£¹Q¨Ãnîe}3]ö{´ÔÓrå¨Ðîi§éKöqrîÆQ |
+ |
+ÓãJ¡ QfQ6®FÒJSO(³Õ@Ì1MÛ§&lq¹'¸R×""]Á+¨íøhøÊ,¢!¾3J×{JaÛõZO³Þ¹ÌÙ2ÔVnß5b(lDÄtÚë.5 l*#qhøºfuO¬Ñ®çi0.hìrkFÒÑ¡åAñºÒÏéª."Ýé×tz¡°íYj;ÑscºÐQ§£É)×8hU¨²Â5£IÚèt¸U¥7E¾aÄ,Tl°±zq µLÍ \µu]@¦[cVQôû~»¹¦uçcSîA-ÓKÓxl$mºì&ÍfÒ¼PaôG¡¯ÛònªÂx²;ìHlÇ]-õñ,\#óE |
+Ò@°Æåû\Å´²3ÁY¿ÛVè®ùËtTgéÒc`Ë#z4DU±¦IÎä&ôî§b¹ULG{åndC{«½&.ÿò?ÿÛØìÄÒtYìíS:ÃWØ2WÉ6.+;ÌpóÓ©à2ÂG±R |
+``g @¡×2ÀITJÏöGØÕÐó |
+5)`]¢a@;=åɦÁy's?5jVßBO@Î}×»Ptº »xCÀèÆáZس8|(Ïu)¸0ÎsWSh@@µ^`ôoû«wÍìßPuãê4J²{Z7mu÷ÓÕ}b|QuG|ºqæ-tXLî¸0nOJlOÝ}ø#À¦¦{Ш^ìPù{¼{luXõÓÕýA¾RPõWwR~9uwy{N$ô-°÷iÊmºoÏÛÏ£fÞëË$'!²DfÉøy#ÌÃüþaâx§~ÝIJFsi©Z?uÔÃîiBÖk·ÆGs>_^pSJ"´¯¥X¿>è¹Ì4Øæ©"t¬¿×~GãÜ,|;C ~ |
+3¿êG'üƱç¾i{m-ÜT?11Ã}éêåºê¥^B!ªÄ© A(Ó3³VuLUþ¦Y³YNlyæÍºãHüêc£ÚÜjÆë-IÆaüÙͺ[*Iñëþ{Î7'ªÿù.ÖìP¾1Ô>.Y¾Ò+[úÒlsÈ|s³Çm4°/Sln0ã,û¥54äðJt¤Ï´ð4¶JòqPr#¿/ qëÖV3±aàÊp©J«Þîö×Ã+hdendstream |
+endobj |
+ |
+9 0 obj |
+ 3034 |
+endobj |
+ |
+10 0 obj |
+<< /Length 11 0 R |
+ /Filter /FlateDecode |
+>> |
+stream |
+³[y.f¹òx |
+@ &cpcèòx:§Þül<ÅüIéÆxû^\Y¨Ã&&,ÞäXs<÷ÛósYsW¹ý!q(°n÷/á¶?ÑW;Ðý#_¡ ,¼1®Òçæ¸ÁX JÒRý)Ý48&áC<à5¾V2 b#ïiÍÆF*¶$@(x¥gõÐ=aF!jd£ÅDÐ<à zÞ¸à[÷ìae-à¯éØçûQ á\n÷#÷8Íüð¤ÃÈwPGi¹@T0Cy6ZIroø«OB®µdààáo9´¾]B|Áâ2=^à'zZ¢ðt3z¨Ò#ï((Á gåµVZôÇÑ*PÄjÔ-mYTUJßâOHu|Ö¥#/(3,<&H |
+æ÷4ZJ&: 3&Ò³*F6°UPOÈ*yò:./,d°6^EtK·Dkö1¸Cu |
+Ii}Á¬u²D«/¦;t×Õp;èÔÛv2=Ào 7¦ {èNGà$Ñ©Áic CÍés¾ |
+í)=fuÚÜÇ[' ocö´Ô¸¬Ï±Kbg@×{Ð(ZñÑR®ö=` ¦1ÐkWâTPÅs@M°ò8=Ϋ/ãYgwÉ~£ÄiÓiÔ|xÂÙ¹¬SQ7wsUT^Vñ{ùÿ3Gí l×S\2t]3YOVh $%^,"%°°¦§cJn¦ZsÔ@ÓdnæKr¼´êùå¾Ü¡DjYͺâ«-èæ¬/´Ë"¸¬a§ÃÁZS»iá5½çMX=ÇÔ7iÇ(§±¬ú·ìè)(8º¯ÀUü¸áêÔäsH·såºÔ½Ì;ËÙæ9Br¡b*FaüL$ò6÷HÂmª¬µG ÌWæBë8$e`¬Bÿ££/á`àôãèÅ|BZ´ÇÈ-`FbVåñ$r q¤pC²àBïO¹æ[tíò" dz°7ÈF}Á,½ä}á4OÂÌ@ý§ Ã0FùÍytÔÂ8MH¡tU 4ÊO]JDTÖñ ÁÆ=Ü9çíù{ÄM?Z9*0r)O |
+ß6jozþ×Cc#Ù^¤|Ù_ÃJî1(z^ F%ÃL¿`r |
+3 3|ÍH»©I5Sº`˦ ÒSu*ÛÑËUI cæu¢à¶´<üØ$ îâw¨ú?\£VTµkÐk½ùÎúué\ºÒXÝ.á5¾Ë± |
+în¨{FâíßJÊ˶?BHõñtÐ3Y362Õùê¦âjSxÊýÎN÷öê |
+¥,OýI&±rÿ+0fóAbukýp4Ä.:x®ÊHdnn$³==?%°¯ºvö]Ì\6æ8ü £E×¼£`gÖi_ÚԱŤ¬n^àÏ*¾¹õÒ&O®^Äðj;²JØæYü«'p´Á÷BRWÁlÉh]ý:Knm(Û]s<åaºh>k$ÎÊ=ÈYõ+ )6°#L=Trhºg÷è 0VìÚ|ó+÷-O~m¯ÜÁÛTj%Å®»){ü® |
+sm2´ì³á>:ah¤£Âó+çâH¼ºBýôpOúIRo\¤Þµ·ÐÓ_1ÏãR+P:¦Ñ~æLl¬Þq±ÆÛ8ÒìL±Úк?æÇó¢?Üá<O+*3+¬!râK7çE¬ÖF¬h¹ |
+<¬ÜÊNÒ¬ëYReý»ªwÅv}ÏýÓF¯DkÖ6J¨/ö´Ä²ËðÜj=®GwÖnâªÊ |
+ÝS÷ |
+¶¶Ä\HBZîϦ«ÕË`¥O´±~gçËãQábZÝYƦaµqþ44ª$ÒpHî3¯÷,{E1b¿Ì¡§DnWæÊÛÁ¢¿·ïÁD |
+ExÅF M=À>46ÿèS)éí"îèvû¥Nkãu-£a¤ÆûV-½u5¾Hàöxc!°sG°Ô¹ õÅw±VGYàïÚ¡x+qîÃÎ8=RïpU |
+ÛôpÈsÇq$®Êñ?&N¾J°n"õâWýÈýÖ(,(?ìðì{ù:fÖ]oÕÄØ¡ìVr)HéLÕ3ЮCcÀ hÎ8ݳo'qâÕ*Í |
+PËÛ´l½ÛâÞF(Â۽ëØAòÁTEͤ¾ÿrôÞ®8¼Þp`´`d |
+«õý>Q¥ RÇ.Ó8À0ôåã·ÂöÏ»7]áÞÇ{y_«,míÅVCíáÕH8<'' |
+Û¶~"|ÐãXíÞC1U"»÷L»§ëè=½k}*ÁstÇG{lïcKb*Ï/ÒKÍK+ÎÂswO"ê+ ò+Öþßj9êX~õ£#DzDÃ{ÇiÏØ%ë´ÌB'#WA²Çò«@Phq4Kô±yë eë§|ÄÞáÎåqQfi£¾äε0ÙÆav÷àWdãã>,¯Rô°·¦m¥6¼¡±9#õ׿æ¡HÇþæÑvoeØûy ×ZeÂÝOVùÇy<þQ¸×ÄFég #ÍYýcC9½ø$vcÓXMäNëJ·ÜÞ|.ë;5sÁ.¦æÃX2rç8KKË\ÆÈò·éñjDU&¤ýí±«/440£«Á©TÌwÇ´¿ ÉÓʬn¬æ-Ì!_wfÞfSªHZ×#ÞñóA)ó%WlÛD»lí§kO·d |
+÷Òþ~úáÏendstream |
+endobj |
+ |
+11 0 obj |
+ 3625 |
+endobj |
+ |
+12 0 obj |
+<< /Length 13 0 R |
+ /Filter /FlateDecode |
+>> |
+stream |
+xÕ[Ûä4}iþ!ÏH4._rVHîFâ¸IEb_ö÷qfºÊi»âô4 Ñ!¶ëzêâé¾<>üÕø¦ppÝèm÷ùîǯº?ùîóoóËãCèc7!þûåçîgêÈw/¿v33õDæ9þ¬¡þÛîå÷¸`yÕ,/0õ4Ä×4£//¸CyNoâAkgÛ>¾ÿz¶íȾmÏoëø ûôö{:L|t¸¼q ~â߸ÈñeÕÉ`Ý¿e·'½PY9æ»SÈß²=¬½=¯wlJ/ïðo}Oüd¬îâ<¬¾Xå Ó·'ò{`jÈB]@õXÙÚÒ5¸?êä¼ó |
+ÀTì¦ ¶kì&ñ5çÒIXª(qAg%±a{g31EÖ-<ùx. ÚOueø*øâIa |
+Ü©¡lóÄÒ¯'4/¬ÒåxËòÜ7PÁk0¢QÍ9A_!k ¦°úNë8ã?ëÅÏÆ¥bïatH´?Ö×)1L¬sbÑQH¸ Iø;á0§äAõp¨Öuó*U]Â(pñ§Âíè£p®áÖc¤:c¤ês»»Èº |
+ ;»`ÐkJ³+e)(¡G7µÑ |
+ ÿéØkÿ:CS/^æhÉ¢JnfFÓ¯f êõçt·S0Éú'(Õ¢£ÒÍRnþ nÊÉÄ9߸ ʧM6·'ÓéU ÔÅþÓ§Ç|¹RÐ÷ßŧÝ×Ô} |
+%£ÜZ·$¸ u´ÙÚ¹h·koú±û¹" Hendstream |
+endobj |
+ |
+13 0 obj |
+ 2169 |
+endobj |
+ |
+15 0 obj |
+<< /Length 16 0 R |
+ /Filter /FlateDecode |
+ /Length1 31884 |
+>> |
+stream |
+¡Ò®ÎÞß ¼8B«mïêwåÜgºÊ2BZáC´L8^%V§7MfÕdw8]n79%uONKÏÈÌògçäæ¡ÿþGP |
+K{Q |
+â ú |
+qǹ?òÞÏOâ'óóø¥|4S$\,,ö O/ gÄr±Uì?n6kþc8oø¿b(ÖÆÁv5`I×$~»tð3èÇ'Ðç /NÃÙÀw®Åux¾_Ãø¼ß ïÅàñS0÷©$IÉf² ÜFÏò:y¼CNç..p¹ÙÜRîr®æÐËmà6dïäösopoq§¸¹Ó 5?ïã¯áïã÷òÏðo |
+ |
+:þ>EÍOz*áÀÿ!^Ï«íu×.óXÉQ(ÓÒ°ÒuàK`U×£¥¨]^ïÎx4¾;~c|}¼ýhÿ'âà~XC@Q^Ïè]¼ÖáÅÿ»] Ö¡?a7ÎÂE°Nk Â~ááÇÂ/ÄÉ íÍè°èß5ë`-èMô'ô%Ön<h" |
+¿S÷´4rGQö¢.X³9àÇgª3é^néíõ|ÖÆðW £w0Á.Q¯~ê@ÎËû1ÐàxjZÁkç¡?üMx*é ñèi'xcÀÓûè í8ãk"ø j¼úú]Za)¨@µñCà©æ¢jî?@ÞØfâtüÐ5à |
+~1PE[A#¨¶ªye§ôQ!Ë!oûdþôüZ#fY¾@¤v2jjÐ>Gh^5© |
+t |
+<Î`åükÈ.ÕlCÓ |
+@üiiTÁÛ´ |
+ÑMóe-O@JA 1Ji˱ÇbÚ²i¤e¼9,ùvpD5þÑf3©¦mZ;ÿEs8Ñ^·0£nþÒ¹f[³*ÛºEçíSGÛT(TÕÀ%"Ék£¼bQ>þ̨[£%«ÀrmÔÒ<+ñlÔ¥¥ýS!I3h(~R±lLå2:-p~yúyåó¸3lã_ÞOê-ݶMw^[-8 mÛj3äÚmÍÛBCñMË3dKƶÃd/Ù»«¦yD¡Cñ#Û£µ·6Â$Úð´| ¨´øÀ+¡Ï¥!R¡$!qH'ñ1<QîyìGZ,ÝȰ-.kù¼|Îp9ªØrÓ¬iÖ,x`جÏÉܱs¾F2ƨñ_ÁÆ~}% |
+¬s£¬ÙÊ |
+n*¶¦É.'ì |
+ª@8s-Mgæþ¤4üy iÍÉÍ)@% ° ò2²ZKðû3ÒE«Å ã+°ofìÆÞݯÁAlÜ×Zû÷ѵ?üùkýk÷äËÏ|ïsB¾gÏÑÚîÍý#ö§OwÒ[[áñØ:#¦X |
+å^Dç ÌC8B ¦ émezoä7ñò'xÂzE·ÛÄ}ÈàxàçØAÀà0wë!!E[1öHW¶$f:gØóyS é󦦽>å§·[®ûÉInÖRá°@Mip&D?ü9®sÜJ<møo¯_æ/¢3= ~RÑë9¿Æ¯F06eZP'OÔÅOª¹òHÊ$¨ ¨Õèþ ýTÇóZ.¤ðOA&ò²¶@GÖ^¥[G®æÑî×ÔÑÕþCçÜÃïÐîѽ¢}]÷òÿ¶ö]Ý)ò1ÿöO:ã:íÕºÉüÚ[u;Ô «øÚ6UTMêøjmî2ÍeÚäÖdÔN×U$xQ«Õ9wiÁLWò9Væ5ZmÇÛ9'z®#½ã N§ÕJ °qÆGÈTf©7%,ÔµpQP(i£knÑÕËz"S¦H$Tä3`íÆ8¹üæçkNòÿ¶{=á5ÃkʽnËp kFgs¯¾è¯.´°á0ÒÄOÐËS§6ÒE |
+?Äã &h©ÖT?±âéURÉ(ôztûH3O7 N¼nÊ3=3¸ÃÝï&]î3nò»uz¿RîÑh f é7à3°2<.{°bظO[å@á,«`b+¢â4ÛÖ4¥¥Yl+LÒS&ß;9¿lvo&'l«éþy>2áÉðÔúÍ1ïßýLUÛæk©oÌ/äý0ÓÝë2ëJëNÓ±[ëHõÌt¢V^ïD:Ý®ÓIv¿Ã»p®br²ù:qÜÿb¾ZÍèD5ø8ó':~sN[¾5Ϧ´QÌH÷ûK`v§ )rs§¬Ú)öøTÌêÎÃ=_¹'é¹O§Ïë;BaÐh3ÌS7)Ûs¤×xr¯t¿-1B(âåÝbX¦jfáFü=Ü'éü8 MÁÓ¤Z|t¯þ+ñ+IÅû¥<]¦«âçê^æ5êñºV¾]w5¾Nw7¿S:¢û5ÿ¾îÎÈñ¤Õ9yÏÓóºZ^ëà=ºiº¹ºUº½ü³ü뺳<uÂgmî ð;ÍO(5y6!"¥iÁCË¡Üü`m<'³33ÈùÖNVõzµù8$Úìf½ vØÕEAàN^!Ò> k!Sôð<ãã ð\&ÅzZm;CO gÁ£°á'ýî n yæ+c*HèÔ;Ö8èà¶} |
+4ZÓ飼rRõͰÁà±;ñeÏ¿/Ý·Æö¾óÉ \ì}Ó¿gÇ¥ãnE<ùÐF¥8GÈÑ]ì |
+óaç*sÍr6:ÛBkJòäûzÁgÍÂ$Ù²Ìç[sÒ¦4,§¦4«MF²¥ÐB,ÔÉçÍM£qsÂ_«1sRZÌ6]é'6â¢ÒÂf7ßMRm¾~¨9¿tÅ?2üÎùà{¥³¯^8ã p$ÅÿRìÔ¼±¿¥.ÏÇ¿t®Äd[òÓýû°¨n] |
+Çö)9»¬5á  |
+¡Oà |
+-¶2l++£M¤a&ý@3É5¥tJ)µþgcpökÓ\¢Éò3ÿþ`3?LEP%xæl°;JÁ?<,ñ¯Z}Ù}Úû;-û½ºç´Ï¼Ï"µºyö¼¯ê^3¼{Çðô¥ÑbNq(É©Ab²Ío88]æ ,7¹ '·)³ÉVoj6Û¡á'9mì̲eyzn"ä'rw |
+Ùl°_òzîz ¥áGÚ<½Mè°g?Á¦Qæ Æ©Lì×çÂNC\¤ØÝJ½ÂL0Ã#ÙkccÅ0lÀ`Ø(3ÄrÀ£ùÀ*ø-&{F ÁVFpÑ,:¨ÕÍ`ÅÊ´õR'V[YÞ¤LtPN® |
+Z/¾]V#>ÓéCHü)ùf.{\zÐ?/=_KYd/TÌܯ´Z¿ßçÉ&uOçaêomÔßÊ yJ^s^WÞ¦¼þ<QÎ;Gò|ÙòP?Vhàô4»áåÑÓøï=912ªøütÀ2;]qzdK¡Áùá²àw²ýÙâÈéYÁ5g±{pGzD/õg: ÉíÚ«Ó³;=»o³q-ÞP;RVvâàÁßýîI¥liÓ»Ìô¦=Cº¶ßÛà4xGlMì¾ïèPª~|mìësñxÜ1=íñ"ê¯Ã*UêA¿Sæ7m°#¶ó:÷zÏ.²Ëðå÷o,o»??Ñ|ôã+1ijÒTÇ%¶KµîFCÄ M³:KÝÜ:ayp³y«gm¯ó°íSkb«,9hb^{ÐTLý× gBШÊÞxóyö*6«)ÀCÅ;àH|Ü<4É. ÓZ |
+îúûÑV5×Y~¢aç8¢î¦Ä]KâA²nÅ0½¥±{ðM±7c_ÜGѳxmì{ÃWâ¶Æ |
+Áª,`Uy¤Cùh34Ù.«+ã^Û½ö]Ù÷äi%{Ø36½öQÆWƳéb®q±1l¼G¿Ë¶7ý°AªÌP2«ý+Ó[ý[l[ì7§ß©-õ×µúKó̵i3Ó¥ôÌl©¡$$½$£$SuUæ6fÒÓÓ3¤ÌtebájûzÇÚܾ¼[óîwÜ÷Lú3ÆMø×îûòÏNÓâ?Ìɦ©y:½IË'}²ÇËÊJ2«xJzmú½Æ»Óþ«t1-Ý`äy/uÂaÏAÅt÷tåW`Õ=³rzVæJªöLO·õo%|s[ ÔE1±Ò x¼?þ6GïT kg±K~] |
+öî0.,XR ;ìÖºKîÛöüíÛ'ÏésfLp¤¬¸¤îæ»~÷Å?&w |
+*¹ôvL¨È&!*%^lú¡Bí óc4r<ü·îÁÔ¯âÄ»õ'hØÕý`WFXy»YãS/¾tð¯bó-i´,IZâltï"÷÷jv´¿&¿Þ×þÚpJ8%~l´ìÕüüø²æÐ§Ù*nÖpVPðNï¢z¶ó½Lò6'w%dS:/äXsN³k0ÖT5(Úe m 3âæqS#½üI |
+Ë;;:î¹§£c'I¿Ûb¯~öØËãû~°o_ÿî}ûh$½æboÝRÐ%ßÖ(6êmKKÜ)÷J÷i¿Òj»&l@¦qAÃ4GÐs Wm¸ÄQí¹O«¥.e@Ð{GÑK&3¨JçÊ5ý©Ífä½c`ICMCù¸)Ï9=\þÇÄ]äéÑ;©1"Ftë |
+Ü=öêkB·l^Ùºe÷å8N&ì¹XÎuí¿´ãÑG}hµ¥ø)!æëAÛ©FÒJÆ©½Xs±VºL»Ä²Ó²Ëz¯ãç^˳Îß8>Ïz£Á²´½l|ÞûíJº\ÜÌu%oJ&rrarò±d>pÖBÏ1ç¡w(^z¯?þ¥ûlSÂO³Ò¬0³Ñ[<¨®ñû8GtÇ÷6lòâÂëßyêïn°§BxôÇ£S¶¯Üù8}õÞÎÆÐ7eúÍç_,ÀEJóºÔ-©Äf0vM¾Ù¸i2ÛÉà |
+q1)æ\Eª¸Fs£½1kIî8Ä}eý*É:ÝXìS<±ÎXí¬Ë©xÆ0ìÒÝ~Ho0êóÆlÓåÈ7`çsgb5JÿÇÏVvxÔ9Ä?H}sÇòÉÁÄYëHfÎl@MÈgΦIO-IïÜ1/Wï÷º©i=¯÷Éx2Õ¢CÅi6Oá¨=}®Z½¨9qz÷Hx0vD¢IÒP®,cıG²Væ®D |
+wäÑá(À)ÍáÞ]v_ßÕ=þªüò±S»yýÍfþÄR6¿îsÏr³é¹!ñ^ðÙxúaúo¨è4¹ &èfTM»:à s¹µÍ¹r÷ä>"î3¢¹ÇsOäPnAn=4¼ûa®KÏPÞÄ)¼©N¶»IiLN¼d±Z³SRüÙ:Ùâ·Y¥%ÍVÜiŰÖ*fo²?5ê:Sps |
+Nºg²ÀÝÑ]c¡lõp@se |
+¨ÙJ%¤rHÙÁleÚEÁì7²?ÌæÌÙ¾ìMÙʳ³ãÙ|¶'çå#¡P ¼9:ÿì&±í]MZÓGÁü¿;@IìõÓÅÂ!óAþpy·4öiæ¶[±³°öá+úÎIJÍ?½mRìÔ)mù±S¼ÿÎÇ-^¼hÙÕ÷7e?T>kûÎ!µ,X»ù¾ás๷ÇVó»ØMw |
+7·¬¼ ÷ï®oýWl8v6öníâáO¸ÃO<8¸÷á=ÀÑBîV£é=æWÊd}YiòÅÉÄFçíXÂO7NO*I®áëuI5ÉwC¢3àÆË I¯7C,¢ÊÀ± |
+¾übÎ^ßtãæá #Ãgîý=v&öÞå»IÞ£óºö<qè¡éZ5Á½÷£$|Æ#à$z3à6§ÑèC¤Á u$á̧a1óF½I´$òIç8ú}¤f8aá§Þl,0å ÙQèhvpg]o§û4Wl)ËËqÛ¤_QÂÙ°Ál¸))SWÛûOÔÓ_ ñzã?Ì®ú8hX>ý÷tSAâ¾Ã¡'ºóI&¶ïª×þMuQ§Ááq· #qð«ñ38 |
+?êW>VLFkE%É»B ¯¡@ó('újLbïÎ$u6»3á@ì+ÛZUuÙÆúùs=3K_éáýÃ&ò×säpÓòÒï{©ôw!ÄoËÓ¢n¥B#ð¢%ÉBÍ5|fh4(ñE-ÒHâ<8e¯¬/Íâüo9è.ô-¦ò±/Qÿío1ìâNO'ûé7ýjøNÊÛ]ô;ðæDJÀ}¸nx¦õ¿ðß±VB&i°¶YIÝjKâì³÷Ó©¤Õéì!½Î¯Ñ²ÓZ×bí?{1ì~§côÅ´S£ùç/¦GÏQÌ]ì©ñÖÄ«÷ó<¥?qËÑÐîyà#åùÕvÇNÁâøhϬ®[î¾LÞ»´¤zëÍäaþ«bóIìâT«rÌ{9¢Ñb¤µ æ(Nax"r·¢ÓþÍðÌò";®¢ßAl:=üùi¬ê |
+hã?)±$M)-&Äa·¹$üâ}ý-K6Ûºò¢ØüSø¯Ðo>8{3vÙ?Û÷À |
+` 4)Fñ>^æ£<Ï{tGð^ÜFLãìÈôyÓi¥AH$LÉ,-æü±S÷¿ÙIáI>cGM<óõ)U Éb¶âÎ&Ùºd¥nÙKö$ÆàÍB¥6!g40PyØ®ª¢ò8=|ò|q$ÍàJ+f/o W³°zZÊ/ìÚ;³îÉØüõaßãÇqÁob¾zó³Øç±¯)'Å`E*ÎPtòNþÿªû¸û¸ç¸WS\RºÄó{?ÿXFôÊ(G,õÎâ«ÜU*¯&ÓéÉôrN?¿¿Å½;ywÊîÔý)ûS56z£"§NN]º9uGêÛ©vÝâ´;©Äb0§ÒwðìË| |
+mØÇ¬yåݯ.S;{±±¯ïÆÚߨ¸lñá«®Mùøgzªepyåçõ~ª¾Øaü(¦¿÷SqP«Ñ:iOPÅÝxª^§ëÆ~)ÞH%¾¸à1¬\«~!ðä0ÌNúhúò6uú×ì)SJ3nż¾¥¥g[°çõknë{S/?c÷0´]ãüì"Ò\ãä°-ößKââ2Øn×±ÝO,°b¼wл+ì2[è·|Nײ |
+÷ZÏþC¬¥ZÍ¥ZöY]µþ¨a±Ê¸ÞøSÄô®ù°å |
+ËûÖCp¤HZô½Â¾ÙþSÎñSrö0©Ào6V*á2Dz,Ö.ã¯Aô[æìØcÒԱǨ4X£ÂjÀæ·©°Üø{*,|· |
+Kè'øIÖ ?éRa-ÚFvª°UXK¿WaZ¡©Va£øf¿ |
+Ðæ+Gõ½Ñ|D AÝ2&·ÌPaM´ÌTaé,*, åjÞ¬ÂZnÙ¡Âdù« |
+ÔÜI*Ì#·ÛÇ`-Õ¯»T A¿~<*úõ\¬ÂЧg |
+~=*úõü\ A¿?¨0è×»W A¿Þ_¨0è7ù2ýÊýÊת0èWþ |
+~³ïa°Ê*û/*²ÊNÌQõ¶ |
+óhBNÁ:Ù*üçÌg°Z~NX yÓÇ`ëçN¦ýüÁITæ9/ª0È<çUÛ)?9ïª0ðsÁ¨·çbæë`°âç¨0àçV1ØÃðTâ¯ap2µÜ;Ul ÷§R~r¨0ðû,}ÿu¦øo18Ú@î'*6ûó¨|ò*òÉKðO=A^® |
+ó#°Éþóýhؼòæ«0_FaC½ |
+Óú-fzÉ{H 鸣Eh=êBa´ Pä2zÒ"ÔÆà9¨u@êU±dðô¨`úA}aÈP³è'TÍêCÿ=r&£ вõâô@ÝlÈãMFeð)Dù*TÄj+b5äf%ðÐ˨@=ºÑZx¶V7´s&£õ[|N#bMCKX/=£\ÓQ§ÂB=è#¼uCK¤ÐWî{ùg}áæãkѸú§d©ÜZ¡vÈ»Ñ*¨££ýïe.Cm¤zoTF2)N¯ÚëbÐê½ül¼9ðc¯`²>¥C¯TÚë%ímÒxJè¹Æ¥<uîúföEñÖ1®VQ7i¹-W¹ËZÚCÀÍÄQÞ»YKYêBxö1®IXÕEã¤IyDnÝÀX!Õa²oeFm®5^ï-j_!Æ¥lg=R¾Û`üvÖcBú2ã:ÄÆkQµh¡\÷¨ú±9&èÖê?¢Z{ªÁ0M³ÆÄìF4Rùïc£Élñ\hÊ×±¾ÛÆYÅíd}%Æ©OH»WHj©=ßÂë >ÃL*È}·¨5}LÒÔ¢ÆlºÜn&ÑÕrJõÙ®RÐÂèת£FÔ&Ö#íaL |
+Á¨«Ui÷¨>äM¥¿jÆüìúoé"¬Fãc®÷1ºd#j¤óïè\Vm±cozV&éȸ]¤{\¬<q»{ÝíÝÿZR»vÖÿ]u×ß:¦ÿULããÐÿ8Ù ¸µIöß6:_ã»]õ¨ ù'VUjc÷|úW3³ÙlîßÖÜHìE÷°¡%f÷ZV;¾¡îoÈ{¬çö±¨?±e±Ñ:4>ºú?k¤¿n5þ¨gEqßÖcBZckëóÛëxDc¡oÈzÅÿÛ1){ó÷ûó9 |
+(DZz`¡ÚÖÓùG@ì]0ÁpK¸§§£ |
+Aÿ}-mrDíN¾¯#,¯ô¶11´wv¶Rj |
+¾{mðÝkÿ¿6½? v³h¹òµv²¾óp¿Ýz1ó=çaÔÕ¢O ¼ |
+üO îü[óÛFhFâ«Îö8ÖºAãq5³Xi-»ï8¿ýüzu÷ícg¿N¶*Çc_¨}¼¤:ÿ©;y?ÎWñSø©¼Â_Ä×ñeã±/ؾè7:cµµßO¢¦ðdÀß6V[§Æ¦«¾Áñ¸zlE¿ç2ÀJƵÖý»vóoÊæßîï_Ùú}yÏF¿Aø9ÊÝÌþ)cܽ{2ÄÝ7hN*R*-Ü=¨AQn: NîN´ôºüÉE)0¨3Y;!mÄ¡~xbVV QüíINÚýf+£»v 0-î¢úJ;w5Â\ë@ÈÇm|ä-§B¾k?AùTÍ¢M0^ WppB>®s¢"È«9/Jfh}¦Ä8}9yE:®s33goäã44PäãàTánÔê)·XEG¹8 Ùk`¹|æ£@¢3Y4¨5í¨4p`@,>~U{*\ÇtãÕp)È m«¸Tä¼0àð{û>C»öãÍÐÓlÐh*:V©åèoD¹ÛAâ·³Ñvú§¡J? |
+¦¢£\ó½.wQçs\ÊÄAw2%èÐ@t®.ÐIupKá&0I¤2 D+}PÆÈÌù&?#Ç©tÈ[ä×T¿ô?ybùÏÕüjþ<~Q!òK¨L!Ñ?A>@{"ä9ò2l4>ò¢\wÉaTù;Pn ü0äÅH{Í7D!Þ0:édÉËðe©+Yl΢Ê,òy¥@¿<òÉ1ù»!?FzÑk$%h:äϨùOÈóԦɳäì>28`¢,D$== Òì©(Õø'O'P4à÷Bí¾A¦ÏüôÉ£¤w Õg«ÔpþúÑ;4G6òð@)ídÇÀó²ï0ÙAv(îR%KÉWã |
+³ |
+óãä,9_.+-äv$ð`ÁíðÝõ@R í [øÒhå0ÌÎ MðìgP3<»àim=à |
+r@ m´ Òõç5® ô=H×±^H}Öûè. è.FÑ]@Ñ]¢ÞR4E3P4E3£hf hfFAùmfFQõ@Qõ¢(ê¢(êE=PÔE=£PB |
+(F¡ |
+P(B |
+(FQ @Q ¢( |
+¢( |
+E!PE!£B |
+(dF! 2PÈB |
+(dFa |
+PXÂÂ(,@a |
+PX é§¥8'âP`'âPâPdÝîxåOä8ãä8ã@rã@r\z/³Ùi#¤M(í1 =´Çö£=ÆÌ«¥E(¢@eQ E(¢" |
+éHÞô!¤8)QÒy³4OÚ#=-½ OK'$bç{ħÅDáiñHäÊdbd~\º=7Âó3H°À³A$ãÁÏÀ'Hõ´üY~#¿ÎÃwäáJ-¹óÌÓAOqÜ ü3|ï@*õgÏÏtû¡O]¾ÿß~>å*È? tÒcnT |
+JºÚåó²!¥AéÈ騯fÕ(?6øS#ÒÒq²sî¹ìBȲçAöì@ör_¥BÙ4ÂAsO@þôï$4ÿ(=9à{²}¾ dMÙ »| û¾J#^|<%]¤æaÞ4_0à[hó|¹²ý;ÊÖ\ÜNB¥Re&FÊðM,}ÀWF±5(*(±'@¢97}v7ðXÑûNû¾ïûÈÿóxWâ!{#þ¾³Î÷|þ¹Ò7P©£ø°?Pó(ÍúËÚê{úÂY|÷ù&ùnÏÒ@õmÀ÷V6Äïy<¡$ù6ù |
+A hWGêÎÄuÑc-¨n¹=»0cëæ/ |
+¦gÑóKï`AI"ó)ͼiEôOV)ͳ¹bÍ`GÖü¥ýYýùý¥"ýÃaA¥ï1º<Æ¡Þ@Ï ìmD?ßã=4Êî§@ Ðèa}SÔõoïÐGÛ£öÚúïQH¢¾%¾¢>5ö1ÿfVµ |
+endstream |
+endobj |
+ |
+16 0 obj |
+17667 |
+endobj |
+ |
+17 0 obj |
+<< /Type /FontDescriptor |
+ /FontName /BAAAAA+Arial-BoldMT |
+ /Flags 4 |
+ /FontBBox [ -627 -376 2032 1047 ] |
+ /ItalicAngle 0 |
+ /Ascent 905 |
+ /Descent -211 |
+ /CapHeight 1047 |
+ /StemV 80 |
+ /FontFile2 15 0 R |
+>> |
+endobj |
+ |
+18 0 obj |
+<< /Length 413 |
+ /Filter /FlateDecode >> |
+stream |
+Ë8Oø~§µºx?*¾è8߯©k;ôM??ÄÑ£endstream |
+endobj |
+ |
+19 0 obj |
+<< /Type /Font |
+ /Subtype /TrueType |
+ /BaseFont /BAAAAA+Arial-BoldMT |
+ /FirstChar 0 |
+ /LastChar 42 |
+ /Widths [ 750 666 722 277 666 833 666 277 |
+ 333 610 277 610 610 556 722 389 |
+ 556 556 777 556 556 556 333 556 |
+ 277 610 610 722 610 777 333 889 |
+ 610 610 556 610 610 333 556 333 |
+ 556 277 277 ] |
+ /FontDescriptor 17 0 R |
+ /ToUnicode 18 0 R |
+>> |
+endobj |
+ |
+20 0 obj |
+<< /Length 21 0 R |
+ /Filter /FlateDecode |
+ /Length1 40808 |
+>> |
+stream |
+xÔ¼y|Eú?^U}÷tÏôÜG&LfrL $h! w¸ 0ä¾p ÔÁPTPÃáY×ÁõÆUЯÝ(»¬ |
+ÍÆõ©©{S÷§v¢§ÐaæT+2!ËÔÜ'©¿¢vpÅh+:ï"Rg>æ SS¿ÂÐíð,êNàf»ODß`^Ât»<jH½ |
+gùQMA£#¸÷"!nLªêrÁ3Â]·¢ýè,Mè%t+Ü ÔÎÔäE ¨7|O#z73ÉÖåÉJJh R>ÃYèèut |
+ú{3pÜ^ô>Vv>\oÄý2cñ4\%WàñSÆ»¿>Æ?Â;«Äo¼s{RFn"a¹ L$ud¹4ȯÀãd |
+^LÈÌc1ææsæ+æs+³Yl6ecl/v,;}ýýýÍçe~&¿oâÿ)tnª ABBØ(>k;ÿ¢¯y|YÎT1ѽ¤õwÉ»ÀÏcѦ?N%»ð²7n!ßtÅÐ6 |
+*Ø?¡ö|Û»pç ¼ï$?ò |
+l4|óÍíè~x4»®¡¶!M=NC°Ö8-øû3u8sÒ©§ÏÔ¯µ`ªhW¬ |
+Nôð¨A#¡~OpM°¡Å¨÷7êº |
+õP.Vy¦ô6àÚ`UCÏSÖUÕöÛí3ÉÝÃÝ'Êí |
+x%<2H¿~Uúû&«hKí´`¾)<eÝ´Zèߺ4xQh¿Ï§NE¾ªàº¡#áÊp͸þ}´nð¢^=èýýv û4k°û̶¢^_xíQ3N§µ¾¯QÓ7 |
+R÷ÚuZÚN¯oà"Z8¸î'nùÇï[Ƶµðí'D«O®±¿ZoÅ |
+ |
+(Ý¡Oáo4öËÚ.h"áðl-UmÇÕt)òB´×7éèVØi¨42½D·fìGzQ¬¦ÔÒ#ÍW8Ñ#õW\»¼6Üh8¿Î1zíߢ¹ìUSº4`×ÿáðÄôñ¾CÂ}¬ZWÛFÛ¾C·>ÞùÚ±¶Z½ûH&´ÕHc¦sídº3Ri`#ðÏL=¡I+ìÙ ÕÞÞÖÈ¡ÐÿåEM©ô*£øí²¶×lèûý~×ßíÿîõu¼0Á¾CG['ÿî°Zú½Û |
+v%È4_Ñ9tÙf0®à#®0Ì8 /ÒµÉâ©V[ÃlÒÞä^ãµIäjÀ{Ö¦´+ÿVÿmX UY3vcYb"/ |
+ÔEpÓàâÂ0AVqÀRãÄÏðMd¶.!QùN'#Ø06é6%& |
+ÌàjðüΰÌ&³Më¦j¥Y8£0¬Ð}Í"È2¡^ Â>¯¾¨ó |
+SãfB=ÄDsy!%ï?×úÈOñ?·öÌöpG~í%{QxóáÛïY.ð ï ¯eã~ºÅf2c['ÿ¨¬IâÌ,ÖÖúêÍW |
+å Ù¹¥Vº[ªµ¶r 3>çkm%=®Ï JÄÜÇß'8Ä4Æ?Ó?GZh^dY)¯±<¤î¶4Y¾5cÑÌ´ZV«ÅjQ$xå>ÌWÎ#I.·Ïp»Q(;<Å,¢æGùD0gvN}í â (D¸ë.OØ,AùLK\òó´»i°P¦³Å ¹"^dsDZÕ_mnãî@àDìêJ&ÐeQ·Ä-Z«´Õà:h<Ì©/t7nÍöÆm°u\ËvÀ«3Þvk¨£^p¹]n{iOr£á°;u*+C;ȺWßYüÖûýóõK]<>ì¶íB}¿Ä;VnðÐÉbîÈÀ7=úQf$gÀüdî°bCgÐ:))_ÔkÊ*yð"$, }7è=òQÔozâ¨5nëäézY{ÛzyF¢Ö¶m¸ÅBáQäd¢HªÙbQÀ§²Ñ ÇÙª8°2HKÅf¥¥>Ê)JAÄÄÈ1òp¢pzN§Ç¦HRÀiªÍªX,AÍêÐ4«MRD³X5ΩpG³X$I ôÇf³Zès»}Z7 BA¤ÀÖ «8<èP01özðú}mýèóöoõyZ[}ÞVϪ=¾¾ÖZÛB»JÍÕ¤§ûØê¥Lýzgµ¤ |
+h,ÆÃ v JQZ ÍÐr@Ñ9N&á»ËÝ© |
+iX#¹¶O¹_|B[o7[_7ÿ Ûï`ÿ8ÛLß8ÿB~¡ó¹äÑ[T·»ÚUëíb\~Ë&m»F4ÍðËj"Ïê~ÐîgMn]¥_!å6¨XõeÑoDKi©gÂ¥ÅY8ËU¢åzNAiP)Á(-O÷Q¬ë¹Z],v©.ÖôWKë¹Êè£DEk] a#lqúå(ëæ`7ϳUC%Õ!\®p( |
+ÉHÖâähàÔ¿H·¹Qýa$'£´[õnP©÷bUÆriRÌ"ó.?c²hÙàR¨¶SX%UÕ |
+³Á-Ú$°H |
+2Û³ÝÓàiö°p®®6&°ý&p·1@ÅEp@ëbt} |
+¢äõÞ@A¢(hLCCÁ4\eÄÁ$"Qf #¶tÑ-ÅÞÎ5pÍÜYåú´ÍNpL¶¬ÒM¦`[XeáP±©k¡<^Q66°V£o¾Êñ. |
+ë^ÐómÒçví.@$+p'*qE<nà vãf7vð@ºÐ¾>2Û·Ý×àKùX®A(ð9¥ t |
+LÇá*¥¥0[K1n?&sF&Éô;ÖßÞåþ¯n÷zÁêïr |
+YúÒ(k2wêi.WQÆ>õµ¥'?Å7ø§ÏØã°'Ò±÷ò½åeÅn¾c²gðÁåa¦]Î)é¶d̨m#§R·tf¶ãr©@Ý\»³e¼]>%#Ä$»A{%êU¬S:¼kÈ |
+Ãvçqòëñã<è§É(PçZûÃÍ«ÿ[ÿ}èÞKRp¿»½»{}»Ö^ë~<Â<¬îÔvúQõÊÓÈTf7_Ö«O+¥CòAEq)«¿Æ=Ö2˲ÌÂX0eÚÞÅHGÕ¨ÍFÔ?. Y,&XX<5ùÁÏÈ1ggÐ() bÜÛïÌ9)à,#×!£´-æÒ9mï¦Aú9ÛøË/ÒçàÚ<èõº«Ó6wµ§)0û2|átò?s¾[»ç¯Y{½ËFyvçi÷âîOâL,?Éò½;2¦ÏøÓû¿«-Aãó´ï0rA¨ 1#lSÅQY´··Ô-Z«á0²ø9ÁaA |
+SÂ͸hWº©Ât]pÙ®í®WÊźãÿ7ê伦2^®]¤ÚVüµ73¯d`U´\ 9 i&0Øýw¸¦ñÎæ/ôm?½ú |
+`ÝØùhëX²cõCî]ÚzÞaIr©¡t9×fã¦5áhYR· |
+À)(3¾ÛÔ±åroÃk&Ã?có§[/ªY·ùèKɬ$eû# 4«Ñ @ÝCh° ""ØØíp|;kD .%4 |
+ÏÞ»føDÏÄȤü¾ÅsrVzVø6d®zÍZµ1CÈQ]¶äªMÄ$¸QwÔmìÞ ³àè]p06;FbGpK*º9Ç"`p2îÖ-Zõ(ǶÝS¬ÍÖvïFäñÆÊÎ9p¾Âäq] |
+á2ïÈ®F ZbQäÛJui*jiIP·2q®ÅvÕÒ(pW]súÊK4ÿw²p6KHA0ºÆ%ä%--·¡PGP&Ðës£«x#1|E3a×vÛ1¨f×Ô'ÿ5gÄãñìùeÃç¬|.¹çÄ÷É¥~ø óøÖK~N>ûÏ/k?w:a1~ë?ãõsƽsèªa5éºkhç%u7¯§×MÓì;zÊ'Ë·áÊí£´Û`ÉȽ¡«ÁÙ/|üýOÉÇw7Ü9õô²9ç|é³c¾ýæ·_|ùVA®÷[»¥û·'ÙÜmÓ»´ÿoìö=hµ*@ôZ Ì)âègªrðR¦7³Ðuã¦N>¦áÂHÓÓ¯òONsûpaîásûån*Ü^(t |
+uʯ,ìiêªÊ?U_[X_x:÷ÛÐásnïl"ûóüvÁÐ|Zz¯5Ó±£¥z7Îï·ÈUÙ~Ev9K"%rÄã9åÆ[w׺ëݬ{GPvVÎË3 ͲTZ6õÆ |
+) '9ÙÄHQTõ-u0˨(*+0GÉQ$"·ë2bY8½%³MdÒ'ëYÀ¸\W=;\*ÔÊMB)¢ªRD4$9hnÂö~ÿGú>»DùÚ @KWEW§Ñ-ËÕP |
+*ÍWRè¦ÐríâYÑ6Xnäg9ÝWê«ã]è²]ÛpzÈ*Ã%Æè0cÅdsë |
+òد½Ö,Ãcb]éóTraÉÓ¡ï*ZhúFïÔëÊå^æ |
+wÖëÁJ2Ì"Ëà 7$¥æh |
+øf³p%ìÍêUîÁé Í:yÑÌÙh ®Å¿ êæ :ûÕA2`!b+s¹zgû§¬95mþ;Fmlo}zÁÂç7w_r*÷ÒºA6¤¶<¼¼¾_ÖËÌί¾ýáÛo}ôê¼ä^Êï|¿;Ý{º³·Gpmhp:3A N³MÎçûW«ü¸¬ìÆÜ`8¢hÛÐÕjJÊÀï¥Q2E¸@p¨à¯tÖè`d®fpø2 kS¡|wF×åJ÷X÷,÷2ð½HÎXµ´ñÐÅ4r/JPv2½ |
+ä«¶¹c³$X/ÌTb:,H¢Úy¾û½ïcJLÂhúMðýû®ÊãÅ«ÔL´Ó &E0ç~â6²Ö]ÓQêÿFÅ6N¹ -6Þõàôe{XZÒÏa3ÍmZ5mêGcèû¾5}Ò»6%¿ýè¾Û³uuÃ]Kv8'¿kÅàÁ×'ï0öÑöîmNþô5bÐàF/ÐÔÂÜÎèåe.ïêíêýZù®ñR´/açu¦9Ê|u±{=Z7°«Äå¦Ê*õ÷;Ö×ì¶l ó~ÐG`°íQJû@~PAR2í··Çím¡Ïålj`îËÈd]͵èA ±°è¥ ßw¨£gn8¾?g®óÎsêNâÜÔáÎÚj¯'²-(ji³¾mlfÝ9u¨Ó@E¸JL-×£BæzÆÓfÏøúåæï§Ï\}OòÒ§&/ÝwëªéSV®4yMÞ,ßµç®eÏ0ù[¦m?}fû¤ò_]s, 0nÞø |
+:eÅÝcǯ^q%ÕÓÀ§ëïzvðÈã`[ÁQÐË&Z§;H_¯c´6ÚÁÅlFn.Ú¢¢/èÃðïó¨mé®Þ®co7&Ô%.Ñ,Ê«®Fà¸&i!] |
+m<@övÁ»oq¡vâj\gwðáôH»@ÀÅpvRFÔ×G¢|ïëÚpÔ6Ô fkéÙçÉ<×yÂfÂzÂLÐqFêi[æ)M°HIÇ6ëk£ÿÎaÝ줪/:æEuìKg=;¤zL×äAS'ßù¯?<ùË*îeÏîñÎøÓõW]~ìõä¿·âµÛîqÓÜUÃîq±ò''ÎzeÂÔw×ß»|ôÀéy].rî¼ïàø6ßTÁ¥D©ÃvRß°¹iÒÛ7º*¬6ÝHtF®ÇÈûDï 66¶(/ÈEfv |
+ÂO1}Á³t|ç%²É!Ë&á%&H°øAaSñê,Kådn"]R¤Áº\/¹ ÔUI "fð@²Ñðiî§±râ9¤¨»DuMA4¯ÓAqíb 5=su:/£¾ Jç?k°éÛà·ÉOg>¤°GRºhÖ´¸K|9XY:9ÊK]¦kã!ëo¾tm}û8T]uÓ-ØÿUëd&Ó?ÙsɹðÞ+Z ð(ÐêG }¿Ïf¢¦ LHg¢CD"0(±HÈ2Aç`@¦jPd³Aq&Q |
+¥CÉ©SûQÈmwÄÔÙ}B0ÝjkHt2ý©C ½7hªSû bzÇý¨39~Òµ_»Îm\gM= Ù ê|]v¸p- |
+ÿý~Fä�õ;¤G ÿ%áðjÔñ0bðº#n!Û½a Dcg;±ôDyøú |
+íTÙ/;(Æc% wý|'Ü«n"ÓÈL¸W¡îMf3¤?îbFÄÇͦN;ût^º"z ^µÉÇMR/ÜýÅÐ_äÓæî6=`zÒtÁÄ!¦ò=åáòDù ü,d³À2X¨[cfMÏÉt¦\«`1ÏÊd9¨f^¨`åΦ.\[É |
+vXÚ¦ÉÕUP_Ù"GG_[[DuM¢h®µÍÔ»~êܶÉsLÍWùm |
+|â(æÎ5" QÝ8s?Ä,gFð4¾îôh j4¤wfÖ´?QWÚ~ú)ùÜ¥}¿ÇÔê&¦³Û[JtÕ_?;1Óå-ÆÕÑjDÀIg/¯J²¯bHíâeëã"#ãbÚãhÀ4#îB_ß»ïÂ#=pÔÉ©þÏöé |
+#6äí¾|ÚúâÀ÷5cqÞ=ßhÅõÚºõ¯>ñðþ.òÏçÆ$/½÷ú}ûÏRjCuqÏ ÍÖͯª "²£"ä(&u.â_4ÐH'`Ï"Îþâ±x,a*¡ a{ÍmßjÀìþ)`¢YQZÛ |
+Í(NX¡ÏxÄðB¸ÍV>9¸!ÙÒ·å0s׿ײ¿îÙð`Ò¼ÜôÙü=~ýQúQ4úø]ÛLª´\¯fÙáááIá¹Ò |
+rwø\Äxr®LI²Ûùù(XÌ |
+÷°]®tfÞ +sË®ÖGvÑçõJþ@ï!r£ôÛ¼{½â|%|e'§SvÒ,4ÛIÐ`'Û ívrpÜ%Üe's ¹vrA¼à Ä p^:Ã. |
+nbbã9;5C&ÕòÙ¬V(àìÒýBÌüÖ° ¢¥B±wväªîö*ó a*ÐYÌÅ©ôP+¶¶iu)¶T »ÓÖÚJäM5V¨®®×µý!úS |
+aþMFw@iô>Æ ÑÂvrF8c'' vò²ð²ìöÚÉ6al6ÚÉÂvrY¼ì 3Ä2Jå ¨´ÑH±¤jU |
+i$ÅdtÑá2§N«Ýèȱ¥Òrl°KαeY9¶\!ËiͲ\f·é2çNk!ÍiõÒ\f³ËÅa¶:%9¶Ì[P)Äa,I3LÐg¼¡ZÍæâr:sr9+33ͱÄ;QXBw[sî¶Ø¼iõ¶½0¡Æ |
+÷®üámhüA.}üºóº²Á=÷Ü3¹>>¹^h¦ìy¿º©_2Î@«¼Eè7D áë-iرÐ<o¡®ÀR |
+[ûRË)JÞ5Û3t´´§?÷pØË: «éS§Ù](>½ãË ÚSôOþ;Ê¿ßýÂß¿p>è|ôªeê5âÇæNÛñ6¹ÉÔ¯zÜtÂv?ÚM)³þ> |
+b|gßÀ ³øk"üä|6ºñ+ì¶?h_ |
+k_oIgÅÎ÷yìÎɹúßþW&óNè8ô&ÜoÉb¯¤Ó1E04±}ÛD4U±s\©2Å7øÌ6®Ôk«x¾E8{ø®xoyR¡-¤Üà°K¸*ï*Ч¸©²MØÚeÙZmlkÔGYZ±ÎΤàZOy |
+<fOSQÔTXX@¶·æìåØ*¥Ñ´Åld; |
+jz§Õù8&JÓjÎÔT+6¬É©7²;|ÖXYGÕæÖSÚgNùͬ¸iý¢S«îóN®àOyºõbduÞLEí²dfë¬REjcª |
+{ |
+Êf±Õr"È`O·ÑKÍ¥znÎ.í'flX±·ÀØK§°÷-Ä7°Öei¯5Ñ7ìx²é+ÛÚ[n[ä½~mSðTw0ïøÅµùé«O4-rï¨cò É/tº#ìW¼©# ¨hÔM6é½°3XCô`,òá I$Ï$é©>fDßüpÌmM«Nܪ¼SðçÌãS2?Ë.dÿºÆOôÓ)ñeáºIy6Ó¦ñÉ>vÞé¾ÉËi>-Nî÷®ÒéKôºýMz}I¯7ê@*}¡V f¦êÒô#;¥Çb0ºÓìwfRöó@a%fóê±4[:,¢%7#sò`\A¬và(ìÆûj7µ«XSs³Ã¤}o39ì¥&ÙESlFíÅjv. |
+óª={ÇÆ:¶{¹ééÉ¢EºEO×´Ü·RwòÕWÏüÝý¶wé6ÿ÷/®êecÏ¥~ñ]Ýâ nØ7Í"TsB»0jhÎjÎmϽ³àÁ}mF«¹ 5£ÕÕÑéòeø\ÛF |
+N^KÿÐp2õ7NÇl¡(µ"«^XºRXºIð?K}Óù~öÉÜ] |
+vØýdæ¹-F!Ó³[°ÓìÔa÷Ú·ÛGì:{4í<§%äÌxJ{Cvö¯dMã/.âoMÍ8*aîûÖ}oòtè'×ü`×¾Ï |
+°Rz&þ{¼VýÃÄQKrsÃZª`Ým¶ÀÝ%?6ξ㾠|
+ÓYNiYÁÈFíË}èõu¥ÞʽfЯý7V^{å%¡+:.[¼;Z}nÿg§ÕwOíÜ;æØÞ²®ãÛ/[·§2^ýmaѦíÛìM4¹Lx²ü¾÷ËæÄOgÞodÂ2ÿ® |
+ÔQ.dç Î&;½l¼[§N½Çëc £üOäè |
+þÏ1}qâGOa6Êù ÇÁFÎW96r¾Éq°ó$ÇÁF¹+86ʽã`£\?ÇÁF¹Cå5rl'sl÷yösl$Ù96bÍFÜÌÚUv#âÖ²¯"é!nC\ãé`m);xàéeGÏD! |~x6¦ÿñ\V¶"îb4ålù¦Ü¸ñ |
+Ó(¥³hÈzä¨&ZÀ$X¡DÊä@ |
+ÐgOãu¡IU äÕ·Q£L_½P2õï4Æùo×µ©¬E~$1ÝHpÍh¢ë:°DÖ`yb}« ìºûPç2гr |
+-Ir{ÈØFÜpÂþ~îåanAu£¢çi[Hæòǰ6 k.UÜòL7ìzyLóFB^ZÝñtMÛQ®÷Tõº(ðTP+~5Þ>CM3Jút{l5ÀòLRfÏ /¯ÁåwóZý¼¥ZßcZèÃ>à©I½ú¹vC¼%~¤áUÒª*zi¥;¿OÄÇT5ÑD~IllØÉ¥¹þ}8ÚI¼ÆuÖu÷cªVõ0?·áö»0÷¬GïæÚÖ8$Gym¥y:ôñöûÑj¤ cßÓ¼qKj-îÝþg±·L¥a¾¹÷-mÜ $äâUÒ{£gÍDêYíóñ:zC5Ý;Ã7²ÒãáïþÅ[ؾ-¡\ºUÑï¢ñD³:]ëïQ>jh½Iå^=µÜ ZD&WbyMjÆ×¹IOÓjïEm ±'Z¯{ÇL/£&"¼Ö4-F±|\â8÷0úPÇ͸l8çE!¯æÒ*àË>H5}ÄÑ)ØD)x¥mèÅ+ÿ·5¡Çh´Ê´ZVÃHßóýreàyïT6,ðKÞ)2ß\3A|Vaj±â»ófKü¼½ê§kýDÓhë<é£_lKZ&>"ÇíܹÃ@KÔéKm?'ç£é£¥6r$ÇQÿúù©ò>Ý\ÄÈzk7¯õîÝ|,íIÌFZÑÏÑL|ìJN |
+¡ýw¢5§¯Cããc2´Ú |
+5güíÑäîÝA>¢jú×zUûGräéC×¢¤¬Ä¶k¹øÚÍ9 |
+_¡iÑÖ{>´êàY6¥ï$gW«lEÒËç¡Ý¸6"ÓWWÙúq~¾þóó½ÎùVqçÚQÓVrÅêCçöã¸Åä³tÝ÷WIÔò¹5ÌïgJ¤ðUlæ8¶?i!ÚN Öðµ¤öZàjìkæv`içóñ·qká£áu¤ZDÂ^ãþ×ÍuûÌÏ«:K{ù°k8¬ôÉ>EzLêP¤U¡ÁP¤e¡H8£þÐ ø*¥V9*ÿ¢*ÆLêb,EVB¹õõóçAP])µÒZÿ@TÖ*ªÙô¶Dür`ÒÈ8ÛLxjÃz%¢² |
+ü}R¯¢úûçJ^|@%û!3(Ò@,(øo@È>h\ø}*´C oµß*C¢ª!¨5Hþ1ßäç¬Xãc4ä ¡P/+Íp; |
+ø@©j<-:¤Fý |
+PûE+%Ôth·ÁÖÑ"GÅ |
+øb`oUƬ§DP¾X (Ê |
+HzAĨ_ey8 |
+ôýHsKpôQ°/t¿A û#Â<±Rêb2¸A¨u#(!óÎ!æN |
+Na(¾(عô0Ô¯ 8QLÞÛk3=jZÊÔ¸PàÈ U$ |
+á&-ÊÙmZaâ߸lçuâ2mÙ¢W|@< ~O<pP|V|òâ-ý·ôÉÅ[úoé_¼¥ñþÅ[úoé_¼¥ñþÅ[úoé_¼¥ñþÅ[úÿoéÏØù'qéÏ÷ÞYe÷ð®ÀxÐç]ë |
+ttíººK ¬Q/Äe5ö6öh £ô!`¿¸póãgyÉT{£øÜ¿bbsÈi)x ¬èذ`/éXJàZÃaWÌ»«Æ;ÑmïT㥬]nÞ㺵xÕåZܺR#kÐÈÔjÉKµ¸l®§T°Øl~¾%[Ì&¯ìáË0TxØ)%ò EFÑÀS¼búø¬Òê½E¡¢ RЩgêyYÓª[ÌÂp¤ð;á#·¥Uïm¹Løy |
+0%°·ÆÞ@ð=Ú!¬hØp-Àis@ !.âS(Xº] GàSB¡Ðïp;*{ÜÔ^@; |
+¦ |
+:ÍÞNHO3¥MPë3¶~òg+IiIîö|0Ä<Þ3v&ß3A¿6VzÈÓEï#:ð:ZOJi Ä×ÛÄâZâ¸z̽ÙÇJçz¥6VêÏ÷î Ð_»y~*Mèèç5HyâÏ ÷ª&Lò\é èY Iº{öCÒë ã1Ï5,zÆsµ{ g§3-c« |
+W^»gmé&Ï¥À¯ÕÝãñªÀóO³{«§I£ZÈÊ<ã"Thèv¶+-.@ëê&èw®ñ^ãFcq±Ú8×Xhôó.c¦)Ýä0ÙL©&³Éd2t&ÁDLìåà |
+örE¦ÁÁ"þªq;mß"aã5 ä22!¶íKiûèó>ÒÞ#þ©³x/ß4ª/^JGÓÛI{×ÒÑÅíÆ©µ£uí£Æ5_ÞxÒ;º!uT¸e®t%ÝèM_Æ~²¦Ýx»Åå7ÞÞÝMÙ»ÍéKÒê·'ØÎÃi?ãçÞÛÞ¹qôñüîÑjLåw·þc§´yãAú1ý¨õ ý=º7ÐÛÖ²tqIkwwû]tD¢¿:ðß#©HH¦î®ÊÝ,]J |
+cVËêZQwì:½ÕUÇêªcuð®ÀºúøLdi÷²ÍZ<.XÌà¯Û] ÝK³á%è¼ Îk\ÏÂäQb©èM-^:j`YóZæµ°,èS,ËÉv弦±Ðõ,}g9 9x)©ÆÔq¶ù[µþ )c |
+× |
+õB×6ê[Õ(!í£s:ÛG/ß´ñÑ©ÛYFâiKÛÄÔóZb%$6°DQL²´& ϵÇxÙphz(lêºÅÑö.®MÐÖÍ6>Ë%6=¨ÝÐ@VP5ÎÅ&ü$FÖÞ8DcãzòX+EÔ¸:Pªÿt{ |
+endstream |
+endobj |
+ |
+21 0 obj |
+25100 |
+endobj |
+ |
+22 0 obj |
+<< /Type /FontDescriptor |
+ /FontName /CAAAAA+ArialMT |
+ /Flags 4 |
+ /FontBBox [ -664 -324 2027 1037 ] |
+ /ItalicAngle 0 |
+ /Ascent 905 |
+ /Descent -211 |
+ /CapHeight 1037 |
+ /StemV 80 |
+ /FontFile2 20 0 R |
+>> |
+endobj |
+ |
+23 0 obj |
+<< /Length 591 |
+ /Filter /FlateDecode >> |
+stream |
+x]ÍÚ@ïüsÜVx¦glVBH,,ü(lÀرlËo»ªwå*OwO}=^l»CÛfñcèªc͹ië!ÞºûPEs¦MëLÝTãÄ_u-û4YLùÇÇm×C{îÌj&Æ,~N·qx§MÝâ|ü>ÔqhÚyúµ=òÓñÞ÷â5¶£ÉÒd½6u<Ï5¿ý·òÍéÏzhÆÇóøOÈû£Æñ¥·ª«ã/«8í%¦É*ËÖfµß¯Ó$¶õÿ§KϬӹú]s´¢³ÌÛõ,DpBQ@xAæ"ßB<YR¼B¼@bCÁ{^¶ØR¼Aì(^ Þè÷ìéÞlưyrðXò(`ÉÃ%7K®-y |
+ _B(OÈó<<<}³ÊC×ä)C£<G" ONA# £<KòPGX<GGÀòx)'°y<^Áéûà±<F <p¢óÆÎÃÈGtÞ0!B;B;BÆÎz-:oòôF×BÁPÎ'GC<yìxòxòx¼¾ |
+x7ðx}\êgY¸ö¼yåA{=y輡^ßp^yèMyxBáÉ÷ÀA OAy(tÞP §ÀËÝ®u2o,ÉÏ}VÝaZeØ¥XaóòjÚø¹oû®GþüÛ |
+6Çendstream |
+endobj |
+ |
+24 0 obj |
+<< /Type /Font |
+ /Subtype /TrueType |
+ /BaseFont /CAAAAA+ArialMT |
+ /FirstChar 0 |
+ /LastChar 84 |
+ /Widths [ 750 666 722 943 277 666 222 556 |
+ 500 277 333 556 556 222 277 777 |
+ 833 556 500 556 666 556 500 722 |
+ 500 556 333 277 1015 556 500 333 |
+ 556 500 277 556 556 556 556 556 |
+ 556 556 666 722 277 666 833 556 |
+ 722 777 722 610 556 777 666 666 |
+ 722 722 500 259 333 277 190 333 |
+ 556 556 556 556 666 583 333 333 |
+ 610 354 556 500 277 277 556 333 |
+ 583 583 222 556 389 ] |
+ /FontDescriptor 22 0 R |
+ /ToUnicode 23 0 R |
+>> |
+endobj |
+ |
+25 0 obj |
+<< /F1 19 0 R |
+ /F2 24 0 R |
+ >> |
+endobj |
+ |
+26 0 obj |
+<< /Im3 3 0 R |
+ >> |
+endobj |
+ |
+27 0 obj |
+<< |
+ /Font 25 0 R |
+ /XObject 26 0 R |
+ /ProcSet [ /PDF /ImageC /ImageI ] |
+>> |
+endobj |
+ |
+28 0 obj |
+<< /Type /Page |
+ /Parent 14 0 R |
+ /Resources 27 0 R |
+ /MediaBox [ 0 0 595 842 ] |
+ /Contents 1 0 R |
+>> |
+endobj |
+ |
+29 0 obj |
+<< /Type /Page |
+ /Parent 14 0 R |
+ /Resources 27 0 R |
+ /MediaBox [ 0 0 595 842 ] |
+ /Contents 4 0 R |
+>> |
+endobj |
+ |
+30 0 obj |
+<< /Type /Page |
+ /Parent 14 0 R |
+ /Resources 27 0 R |
+ /MediaBox [ 0 0 595 842 ] |
+ /Contents 6 0 R |
+>> |
+endobj |
+ |
+31 0 obj |
+<< /Type /Page |
+ /Parent 14 0 R |
+ /Resources 27 0 R |
+ /MediaBox [ 0 0 595 842 ] |
+ /Contents 8 0 R |
+>> |
+endobj |
+ |
+32 0 obj |
+<< /Type /Page |
+ /Parent 14 0 R |
+ /Resources 27 0 R |
+ /MediaBox [ 0 0 595 842 ] |
+ /Contents 10 0 R |
+>> |
+endobj |
+ |
+33 0 obj |
+<< /Type /Page |
+ /Parent 14 0 R |
+ /Resources 27 0 R |
+ /MediaBox [ 0 0 595 842 ] |
+ /Contents 12 0 R |
+>> |
+endobj |
+ |
+14 0 obj |
+<< /Type /Pages |
+ /Resources 27 0 R |
+ /MediaBox [ 0 0 595 842 ] |
+ /Kids [ 28 0 R |
+ 29 0 R |
+ 30 0 R |
+ 31 0 R |
+ 32 0 R |
+ 33 0 R |
+ ] |
+ /Count 6 |
+>> |
+endobj |
+ |
+34 0 obj |
+<< /Type /Catalog |
+ /Pages 14 0 R |
+>> |
+endobj |
+ |
+35 0 obj |
+<< /Author <FEFF004B006C0061007500730020004800690074007300630068006C00650072> |
+/Creator <FEFF005700720069007400650072> |
+/Producer <FEFF004F00700065006E004F00660066006900630065002E006F0072006700200031002E0031002E0031> |
+/CreationDate (D:20040813211645+02'00') |
+>> |
+endobj |
+ |
+xref |
+0 36 |
+0000000000 65535 f |
+0000000017 00000 n |
+0000001125 00000 n |
+0000001152 00000 n |
+0000012403 00000 n |
+0000014910 00000 n |
+0000014937 00000 n |
+0000018291 00000 n |
+0000018318 00000 n |
+0000021437 00000 n |
+0000021464 00000 n |
+0000025176 00000 n |
+0000025204 00000 n |
+0000027460 00000 n |
+0000074162 00000 n |
+0000027488 00000 n |
+0000045263 00000 n |
+0000045290 00000 n |
+0000045535 00000 n |
+0000046031 00000 n |
+0000046430 00000 n |
+0000071638 00000 n |
+0000071665 00000 n |
+0000071905 00000 n |
+0000072579 00000 n |
+0000073172 00000 n |
+0000073229 00000 n |
+0000073271 00000 n |
+0000073374 00000 n |
+0000073505 00000 n |
+0000073636 00000 n |
+0000073767 00000 n |
+0000073898 00000 n |
+0000074030 00000 n |
+0000074396 00000 n |
+0000074457 00000 n |
+trailer |
+<< /Size 36 |
+ /Root 34 0 R |
+ /Info 35 0 R |
+>> |
+startxref |
+74740 |
+%%EOF |
/pcivme-3.2/doc/template.h |
---|
0,0 → 1,47 |
#ifndef __TEMPLATE_H__ |
#define __TEMPLATE_H__ |
//**************************************************************************** |
// Copyright (C) 2001-2004 ARW Elktronik Germany |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
//**************************************************************************** |
//**************************************************************************** |
// |
// name and purpose of this module |
// |
// $Log: template.h,v $ |
// Revision 1.2 2004/08/13 19:23:10 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// |
//**************************************************************************** |
//**************************************************************************** |
// INCLUDES |
//**************************************************************************** |
// DEFINES |
#endif // __TEMPLATE_H__ |
/pcivme-3.2/doc/todo.txt |
---|
0,0 → 1,8 |
Stand: 113.08.2004 |
1. paging access to VME |
2. debugging pvmon |
3. mmap feature revivify |
/pcivme-3.2/doc/template.make |
---|
0,0 → 1,40 |
#**************************************************************************** |
# Copyright (C) 2001-2004 ARW Elektronik Germany |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 2 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
# |
# This product is not authorized for use as critical component in |
# life support systems without the express written approval of |
# ARW Elektronik Germany. |
# |
# Please announce changes and hints to ARW Elektronik |
# |
# Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
#**************************************************************************** |
#**************************************************************************** |
# |
# name and purpose of this Makefile |
# |
# $Log: template.make,v $ |
# Revision 1.2 2004/08/13 19:23:10 klaus |
# conversion to kernel-version 2.6, released version 3.0 |
# |
# |
#**************************************************************************** |
#**************************************************************************** |
# DEFINES |
/pcivme-3.2/doc/COPYING |
---|
0,0 → 1,340 |
GNU GENERAL PUBLIC LICENSE |
Version 2, June 1991 |
Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Everyone is permitted to copy and distribute verbatim copies |
of this license document, but changing it is not allowed. |
Preamble |
The licenses for most software are designed to take away your |
freedom to share and change it. By contrast, the GNU General Public |
License is intended to guarantee your freedom to share and change free |
software--to make sure the software is free for all its users. This |
General Public License applies to most of the Free Software |
Foundation's software and to any other program whose authors commit to |
using it. (Some other Free Software Foundation software is covered by |
the GNU Library General Public License instead.) You can apply it to |
your programs, too. |
When we speak of free software, we are referring to freedom, not |
price. Our General Public Licenses are designed to make sure that you |
have the freedom to distribute copies of free software (and charge for |
this service if you wish), that you receive source code or can get it |
if you want it, that you can change the software or use pieces of it |
in new free programs; and that you know you can do these things. |
To protect your rights, we need to make restrictions that forbid |
anyone to deny you these rights or to ask you to surrender the rights. |
These restrictions translate to certain responsibilities for you if you |
distribute copies of the software, or if you modify it. |
For example, if you distribute copies of such a program, whether |
gratis or for a fee, you must give the recipients all the rights that |
you have. You must make sure that they, too, receive or can get the |
source code. And you must show them these terms so they know their |
rights. |
We protect your rights with two steps: (1) copyright the software, and |
(2) offer you this license which gives you legal permission to copy, |
distribute and/or modify the software. |
Also, for each author's protection and ours, we want to make certain |
that everyone understands that there is no warranty for this free |
software. If the software is modified by someone else and passed on, we |
want its recipients to know that what they have is not the original, so |
that any problems introduced by others will not reflect on the original |
authors' reputations. |
Finally, any free program is threatened constantly by software |
patents. We wish to avoid the danger that redistributors of a free |
program will individually obtain patent licenses, in effect making the |
program proprietary. To prevent this, we have made it clear that any |
patent must be licensed for everyone's free use or not licensed at all. |
The precise terms and conditions for copying, distribution and |
modification follow. |
GNU GENERAL PUBLIC LICENSE |
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
0. This License applies to any program or other work which contains |
a notice placed by the copyright holder saying it may be distributed |
under the terms of this General Public License. The "Program", below, |
refers to any such program or work, and a "work based on the Program" |
means either the Program or any derivative work under copyright law: |
that is to say, a work containing the Program or a portion of it, |
either verbatim or with modifications and/or translated into another |
language. (Hereinafter, translation is included without limitation in |
the term "modification".) Each licensee is addressed as "you". |
Activities other than copying, distribution and modification are not |
covered by this License; they are outside its scope. The act of |
running the Program is not restricted, and the output from the Program |
is covered only if its contents constitute a work based on the |
Program (independent of having been made by running the Program). |
Whether that is true depends on what the Program does. |
1. You may copy and distribute verbatim copies of the Program's |
source code as you receive it, in any medium, provided that you |
conspicuously and appropriately publish on each copy an appropriate |
copyright notice and disclaimer of warranty; keep intact all the |
notices that refer to this License and to the absence of any warranty; |
and give any other recipients of the Program a copy of this License |
along with the Program. |
You may charge a fee for the physical act of transferring a copy, and |
you may at your option offer warranty protection in exchange for a fee. |
2. You may modify your copy or copies of the Program or any portion |
of it, thus forming a work based on the Program, and copy and |
distribute such modifications or work under the terms of Section 1 |
above, provided that you also meet all of these conditions: |
a) You must cause the modified files to carry prominent notices |
stating that you changed the files and the date of any change. |
b) You must cause any work that you distribute or publish, that in |
whole or in part contains or is derived from the Program or any |
part thereof, to be licensed as a whole at no charge to all third |
parties under the terms of this License. |
c) If the modified program normally reads commands interactively |
when run, you must cause it, when started running for such |
interactive use in the most ordinary way, to print or display an |
announcement including an appropriate copyright notice and a |
notice that there is no warranty (or else, saying that you provide |
a warranty) and that users may redistribute the program under |
these conditions, and telling the user how to view a copy of this |
License. (Exception: if the Program itself is interactive but |
does not normally print such an announcement, your work based on |
the Program is not required to print an announcement.) |
These requirements apply to the modified work as a whole. If |
identifiable sections of that work are not derived from the Program, |
and can be reasonably considered independent and separate works in |
themselves, then this License, and its terms, do not apply to those |
sections when you distribute them as separate works. But when you |
distribute the same sections as part of a whole which is a work based |
on the Program, the distribution of the whole must be on the terms of |
this License, whose permissions for other licensees extend to the |
entire whole, and thus to each and every part regardless of who wrote it. |
Thus, it is not the intent of this section to claim rights or contest |
your rights to work written entirely by you; rather, the intent is to |
exercise the right to control the distribution of derivative or |
collective works based on the Program. |
In addition, mere aggregation of another work not based on the Program |
with the Program (or with a work based on the Program) on a volume of |
a storage or distribution medium does not bring the other work under |
the scope of this License. |
3. You may copy and distribute the Program (or a work based on it, |
under Section 2) in object code or executable form under the terms of |
Sections 1 and 2 above provided that you also do one of the following: |
a) Accompany it with the complete corresponding machine-readable |
source code, which must be distributed under the terms of Sections |
1 and 2 above on a medium customarily used for software interchange; or, |
b) Accompany it with a written offer, valid for at least three |
years, to give any third party, for a charge no more than your |
cost of physically performing source distribution, a complete |
machine-readable copy of the corresponding source code, to be |
distributed under the terms of Sections 1 and 2 above on a medium |
customarily used for software interchange; or, |
c) Accompany it with the information you received as to the offer |
to distribute corresponding source code. (This alternative is |
allowed only for noncommercial distribution and only if you |
received the program in object code or executable form with such |
an offer, in accord with Subsection b above.) |
The source code for a work means the preferred form of the work for |
making modifications to it. For an executable work, complete source |
code means all the source code for all modules it contains, plus any |
associated interface definition files, plus the scripts used to |
control compilation and installation of the executable. However, as a |
special exception, the source code distributed need not include |
anything that is normally distributed (in either source or binary |
form) with the major components (compiler, kernel, and so on) of the |
operating system on which the executable runs, unless that component |
itself accompanies the executable. |
If distribution of executable or object code is made by offering |
access to copy from a designated place, then offering equivalent |
access to copy the source code from the same place counts as |
distribution of the source code, even though third parties are not |
compelled to copy the source along with the object code. |
4. You may not copy, modify, sublicense, or distribute the Program |
except as expressly provided under this License. Any attempt |
otherwise to copy, modify, sublicense or distribute the Program is |
void, and will automatically terminate your rights under this License. |
However, parties who have received copies, or rights, from you under |
this License will not have their licenses terminated so long as such |
parties remain in full compliance. |
5. You are not required to accept this License, since you have not |
signed it. However, nothing else grants you permission to modify or |
distribute the Program or its derivative works. These actions are |
prohibited by law if you do not accept this License. Therefore, by |
modifying or distributing the Program (or any work based on the |
Program), you indicate your acceptance of this License to do so, and |
all its terms and conditions for copying, distributing or modifying |
the Program or works based on it. |
6. Each time you redistribute the Program (or any work based on the |
Program), the recipient automatically receives a license from the |
original licensor to copy, distribute or modify the Program subject to |
these terms and conditions. You may not impose any further |
restrictions on the recipients' exercise of the rights granted herein. |
You are not responsible for enforcing compliance by third parties to |
this License. |
7. If, as a consequence of a court judgment or allegation of patent |
infringement or for any other reason (not limited to patent issues), |
conditions are imposed on you (whether by court order, agreement or |
otherwise) that contradict the conditions of this License, they do not |
excuse you from the conditions of this License. If you cannot |
distribute so as to satisfy simultaneously your obligations under this |
License and any other pertinent obligations, then as a consequence you |
may not distribute the Program at all. For example, if a patent |
license would not permit royalty-free redistribution of the Program by |
all those who receive copies directly or indirectly through you, then |
the only way you could satisfy both it and this License would be to |
refrain entirely from distribution of the Program. |
If any portion of this section is held invalid or unenforceable under |
any particular circumstance, the balance of the section is intended to |
apply and the section as a whole is intended to apply in other |
circumstances. |
It is not the purpose of this section to induce you to infringe any |
patents or other property right claims or to contest validity of any |
such claims; this section has the sole purpose of protecting the |
integrity of the free software distribution system, which is |
implemented by public license practices. Many people have made |
generous contributions to the wide range of software distributed |
through that system in reliance on consistent application of that |
system; it is up to the author/donor to decide if he or she is willing |
to distribute software through any other system and a licensee cannot |
impose that choice. |
This section is intended to make thoroughly clear what is believed to |
be a consequence of the rest of this License. |
8. If the distribution and/or use of the Program is restricted in |
certain countries either by patents or by copyrighted interfaces, the |
original copyright holder who places the Program under this License |
may add an explicit geographical distribution limitation excluding |
those countries, so that distribution is permitted only in or among |
countries not thus excluded. In such case, this License incorporates |
the limitation as if written in the body of this License. |
9. The Free Software Foundation may publish revised and/or new versions |
of the General Public License from time to time. Such new versions will |
be similar in spirit to the present version, but may differ in detail to |
address new problems or concerns. |
Each version is given a distinguishing version number. If the Program |
specifies a version number of this License which applies to it and "any |
later version", you have the option of following the terms and conditions |
either of that version or of any later version published by the Free |
Software Foundation. If the Program does not specify a version number of |
this License, you may choose any version ever published by the Free Software |
Foundation. |
10. If you wish to incorporate parts of the Program into other free |
programs whose distribution conditions are different, write to the author |
to ask for permission. For software which is copyrighted by the Free |
Software Foundation, write to the Free Software Foundation; we sometimes |
make exceptions for this. Our decision will be guided by the two goals |
of preserving the free status of all derivatives of our free software and |
of promoting the sharing and reuse of software generally. |
NO WARRANTY |
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY |
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN |
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES |
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED |
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS |
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE |
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, |
REPAIR OR CORRECTION. |
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR |
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, |
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING |
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED |
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY |
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER |
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE |
POSSIBILITY OF SUCH DAMAGES. |
END OF TERMS AND CONDITIONS |
How to Apply These Terms to Your New Programs |
If you develop a new program, and you want it to be of the greatest |
possible use to the public, the best way to achieve this is to make it |
free software which everyone can redistribute and change under these terms. |
To do so, attach the following notices to the program. It is safest |
to attach them to the start of each source file to most effectively |
convey the exclusion of warranty; and each file should have at least |
the "copyright" line and a pointer to where the full notice is found. |
<one line to give the program's name and a brief idea of what it does.> |
Copyright (C) <year> <name of author> |
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
the Free Software Foundation; either version 2 of the License, or |
(at your option) any later version. |
This program is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
Also add information on how to contact you by electronic and paper mail. |
If the program is interactive, make it output a short notice like this |
when it starts in an interactive mode: |
Gnomovision version 69, Copyright (C) year name of author |
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. |
This is free software, and you are welcome to redistribute it |
under certain conditions; type `show c' for details. |
The hypothetical commands `show w' and `show c' should show the appropriate |
parts of the General Public License. Of course, the commands you use may |
be called something other than `show w' and `show c'; they could even be |
mouse-clicks or menu items--whatever suits your program. |
You should also get your employer (if you work as a programmer) or your |
school, if any, to sign a "copyright disclaimer" for the program, if |
necessary. Here is a sample; alter the names: |
Yoyodyne, Inc., hereby disclaims all copyright interest in the program |
`Gnomovision' (which makes passes at compilers) written by James Hacker. |
<signature of Ty Coon>, 1 April 1989 |
Ty Coon, President of Vice |
This General Public License does not permit incorporating your program into |
proprietary programs. If your program is a subroutine library, you may |
consider it more useful to permit linking proprietary applications with the |
library. If this is what you want to do, use the GNU Library General |
Public License instead of this License. |
/pcivme-3.2/doc/template.c |
---|
0,0 → 1,52 |
//**************************************************************************** |
// Copyright (C) 2001-2004 ARW Elektronik Germany |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
//**************************************************************************** |
//**************************************************************************** |
// |
// name and purpose of this module |
// |
// $Log: template.c,v $ |
// Revision 1.2 2004/08/13 19:23:10 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// |
//**************************************************************************** |
//**************************************************************************** |
// INCLUDES |
//**************************************************************************** |
// DEFINES |
//**************************************************************************** |
// GLOBALS |
//**************************************************************************** |
// LOCALS |
//**************************************************************************** |
// CODE |
/pcivme-3.2/lib/pcivme_ni.h |
---|
0,0 → 1,84 |
#ifndef __PCIVME_NI_H__ |
#define __PCIVME_NI_H__ |
//------------------------------------------------------------------------------------------- |
// pcivme_ni.h - header for ni-labview shared library or dll for ARW pcivme interface |
// this library can also be used for other purposes aside from labview |
// |
// Copyright (C) 2002-2004 ARW Elektronik Germany |
// |
// this source code is published under LGPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// $Log: pcivme_ni.h,v $ |
// Revision 1.8 2004/08/13 19:23:45 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.7 2002/10/20 18:07:18 klaus |
// changed error handling |
// |
// Revision 1.6 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/17 21:16:03 klaus |
// filled function bodies |
// |
// Revision 1.3 2002/10/17 21:16:03 klaus |
// filled function bodies |
// |
// Revision 1.2 2002/10/17 19:05:03 klaus |
// VME access is working through test to lib to driver |
// |
// Revision 1.1 2002/10/12 22:04:44 klaus |
// first work done |
// |
// what who when |
// first steps AR 17.11.1999 |
// VMEerror new AR 07.01.2000 |
// made LINUX shared library from windows template AR 12.10.2002 |
// |
//------------------------------------------------------------------------------------------- |
// INCLUDES |
// |
#define BOOLEAN int |
#if !defined(TRUE) && !defined(FALSE) |
#define FALSE 0 |
#define TRUE 1 |
#endif |
//------------------------------------------------------------------------------------------- |
// PROTOTYPES |
// |
#ifdef __cplusplus |
extern "C" |
{ |
#endif |
int VMEopen(const char *cszDeviceName, unsigned char ubAddressModifier, int *pnHandle); |
int VMEinit(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle); |
int setAccessProperties(int nHandle, unsigned char bModifier, unsigned char bAccessType); |
int VMEread(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
int VMEwrite(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
int VMEaccessVIC(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent); |
int VMEreset(int nHandle); |
int VMETAS(int nHandle, unsigned long ulAddress, unsigned char *ubResult); |
int VMEcontrolInterrupt(int nHandle, BOOLEAN *bEnable); |
int VMEinterrupt(int nHandle, unsigned char *ubVector); |
int VMEsysfailGet(int nHandle, BOOLEAN *bResult); |
int VMEsysfailSet(int nHandle, BOOLEAN bForce); |
int VMEerror(int nHandle); |
int VMEclose(int nHandle); |
int GetLastError(int nHandle); |
#ifdef __cplusplus |
} |
#endif |
#endif /* __PCIVME_NI_H__ */ |
/pcivme-3.2/lib/pcivme_ni.c |
---|
0,0 → 1,473 |
//------------------------------------------------------------------------------------------- |
// pcivme_ni.c - shared library for ARW pcivme interface (libpcivme.so) |
// |
// Copyright (C) 2002-2004 ARW Elektronik Germany |
// |
// this source code is published under LGPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// $Log: pcivme_ni.c,v $ |
// Revision 1.8 2004/08/13 19:23:45 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.7 2002/10/20 18:07:18 klaus |
// changed error handling |
// |
// Revision 1.6 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/17 21:16:03 klaus |
// filled function bodies |
// |
// Revision 1.3 2002/10/17 21:16:03 klaus |
// filled function bodies |
// |
// Revision 1.2 2002/10/17 19:05:03 klaus |
// VME access is working through test to lib to driver |
// |
// Revision 1.1 2002/10/12 22:04:30 klaus |
// first work done |
// |
//------------------------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
#include <unistd.h> |
#include <linux/types.h> |
#include <sys/ioctl.h> |
#include <errno.h> |
#include <ctype.h> |
#include <sys/types.h> |
#include <sys/stat.h> |
#include <fcntl.h> |
#include <../driver/pcivme.h> |
#include <../driver/vic.h> |
#include <pcivme_ni.h> |
//------------------------------------------------------------------------------------------- |
// DEFINES |
// |
#define LOCAL_STRING_LEN 40 |
//------------------------------------------------------------------------------------------- |
// TYPEDEFS |
// |
// storage for path specific data |
typedef struct |
{ |
int nFileNo; // file number to f |
__u8 cAddressModifier; // associated VME address modifier |
__u8 cAccessWidth; // current access width |
int nLastError; // != 0 if a previous error occurred |
} VMEMM_DEVICE; |
//------------------------------------------------------------------------------------------- |
// FUNCTIONS |
// |
// construct a device file name |
static char *szDeviceName(const char *cszBaseName, int nVMEMM) |
{ |
static char path[LOCAL_STRING_LEN]; |
int i = LOCAL_STRING_LEN - 1; |
path[0] = 0; |
memset(path, 0, LOCAL_STRING_LEN); |
if (strlen(cszBaseName) >= (LOCAL_STRING_LEN - 3)) |
return ""; |
if (nVMEMM > 15) |
return ""; |
strncpy(path, cszBaseName, LOCAL_STRING_LEN - 3); |
while ((i--) && (path[i] != '_')); // search for '_' |
if (i) |
{ |
i++; // go after '_' |
if (nVMEMM >= 10) |
{ |
path[i] = '1'; |
nVMEMM -= 10; |
i++; |
} |
path[i] = '0' + nVMEMM; |
i++; |
path[i] = 0; // trailing 0 |
} |
else |
return ""; |
return path; |
} |
static int initHardware(VMEMM_DEVICE *dev) |
{ |
PCIVME_INIT_COMMAND init; |
init.sVie[0].bDestination = STOP; |
init.sVie[0].bAccessType = |
init.sVie[0].dwValue = |
init.sVie[0].wOffset = 0; |
if (ioctl(dev->nFileNo, PCIVME_INIT_HARDWARE, &init) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
return 0; |
} |
static int deInitHardware(VMEMM_DEVICE *dev) |
{ |
PCIVME_INIT_COMMAND deinit; |
deinit.sVie[0].bDestination = STOP; |
deinit.sVie[0].bAccessType = |
deinit.sVie[0].dwValue = |
deinit.sVie[0].wOffset = 0; |
if (ioctl(dev->nFileNo, PCIVME_DEINIT_HARDWARE, &deinit) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
return 0; |
} |
int VMEopen(const char *cszDeviceName, unsigned char ubAddressModifier, int *pnHandle) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)NULL; |
int error; |
*pnHandle = 0; |
dev = (VMEMM_DEVICE *)malloc(sizeof(*dev)); |
if (!dev) |
return errno; |
dev->nFileNo = open(cszDeviceName, O_RDWR); |
if (dev->nFileNo == -1) |
{ |
error = errno; |
free(dev); |
return error; |
} |
dev->cAddressModifier = ubAddressModifier; |
*pnHandle = (int)dev; |
error = initHardware(dev); |
if (error) |
return error; |
dev->nLastError = 0; |
return setAccessProperties(*pnHandle, dev->cAddressModifier, BYTE_ACCESS); // set access properties to default |
} |
int VMEinit(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle) |
{ |
char *szLocalDeviceName = szDeviceName(cszDeviceName, nVMEMM); |
return VMEopen(szLocalDeviceName, ubAddressModifier, pnHandle); |
} |
int setAccessProperties(int nHandle, unsigned char bModifier, unsigned char bAccessType) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
PCIVME_ACCESS_COMMAND access_command; |
access_command.bAccessType = |
access_command.bIncrement = bAccessType; // increment and accessType are the same |
access_command.bModifier = bModifier; |
if (ioctl(dev->nFileNo, PCIVME_SET_ACCESS_PARA, &access_command) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
dev->cAddressModifier = bModifier; |
dev->cAccessWidth = bAccessType; |
return 0; |
} |
int VMEread(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
size_t count = (size_t)(ulElementCount * ubAccessWidth); |
ssize_t result; |
int error; |
if (dev->cAccessWidth != ubAccessWidth) |
{ |
if ((error = setAccessProperties(nHandle, dev->cAddressModifier, ubAccessWidth))) |
return error; |
} |
if (lseek(dev->nFileNo, ulAddress, SEEK_SET) < 0) |
return errno; |
result = read(dev->nFileNo, pvBuffer, count); |
if (result != count) |
{ |
if (result < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
else |
return EFAULT; |
} |
return 0; |
} |
int VMEwrite(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
size_t count = (size_t)(ulElementCount * ubAccessWidth); |
ssize_t result; |
int error; |
if (dev->cAccessWidth != ubAccessWidth) |
{ |
if ((error = setAccessProperties(nHandle, dev->cAddressModifier, ubAccessWidth))) |
return error; |
} |
if (lseek(dev->nFileNo, ulAddress, SEEK_SET) < 0) |
return errno; |
result = write(dev->nFileNo, pvBuffer, count); |
if (result != count) |
{ |
if (result < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
else |
return EFAULT; |
} |
return 0; |
} |
int VMEaccessVIC(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
PCIVME_VIC68A_ACTION vic68a_action; |
vic68a_action.bAccessMode = ubAccessMode; |
vic68a_action.bContent = *ubContent; |
vic68a_action.wRegisterAddress = uwAddress; |
if (ioctl(dev->nFileNo, PCIVME_ACCESS_VIC68A, &vic68a_action) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
*ubContent = vic68a_action.bContent; |
return 0; |
} |
int VMEreset(int nHandle) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
PCIVME_RESET_COMMAND reset_command; |
int i = 10; |
reset_command.bCommand = GLOBAL_RESET_CMD; |
reset_command.bResult = 0xff; |
if (ioctl(dev->nFileNo, PCIVME_RESET, &reset_command) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
do |
{ |
usleep(100); |
reset_command.bCommand = POLL_RESET_CMD; |
reset_command.bResult = 0xff; |
if (ioctl(dev->nFileNo, PCIVME_RESET, &reset_command) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
} while ((reset_command.bResult) && (i--)); |
if (!i) |
return ETIME; |
dev->nLastError = 0; |
return 0; |
} |
int VMETAS(int nHandle, unsigned long ulAddress, unsigned char *ubResult) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
PCIVME_TAS_STRUCT tas; |
tas.bContent = *ubResult; |
tas.bModifier = dev->cAddressModifier; |
tas.dwAddress = ulAddress; |
if (ioctl(dev->nFileNo, PCIVME_TAS, &tas) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
*ubResult = tas.bContent; |
return 0; |
} |
int VMEinterrupt(int nHandle, unsigned char *ubVector) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
PCIVME_VECTOR_LEVEL ubLocalVector; |
if (ioctl(dev->nFileNo, PCIVME_READ_VECTOR_POLL, &ubLocalVector) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
*ubVector = (__u8)ubLocalVector.dwStatusID; |
return 0; |
} |
int VMEsysfailGet(int nHandle, BOOLEAN *bResult) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
PCIVME_VIC68A_ACTION sAction; // structure to access vic chip |
sAction.wRegisterAddress = EGICR; |
sAction.bAccessMode = VIC68A_READ; |
sAction.bContent = 0; |
if (ioctl(dev->nFileNo, PCIVME_ACCESS_VIC68A, &sAction) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
*bResult = (sAction.bContent & 0x08) ? FALSE : TRUE; |
return 0; |
} |
int VMEsysfailSet(int nHandle, BOOLEAN bForce) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
PCIVME_VIC68A_ACTION sAction; // structure to access vic chip |
sAction.wRegisterAddress = ICR7; |
sAction.bAccessMode = (bForce == TRUE) ? VIC68A_AND : VIC68A_OR; |
sAction.bContent = (bForce == TRUE) ? 0x3F : 0x80; |
if (ioctl(dev->nFileNo, PCIVME_ACCESS_VIC68A, &sAction) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
return 0; |
} |
int VMEerror(int nHandle) |
{ |
__u8 ubVector; |
VMEinterrupt(nHandle, &ubVector); |
if (ubVector == 7) |
return EFAULT; // it's a bus error |
else |
return 0; |
} |
int VMEclose(int nHandle) |
{ |
int error = 0; |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
if (dev != (VMEMM_DEVICE *)NULL) |
{ |
deInitHardware(dev); |
if (dev->nFileNo != -1) |
close(dev->nFileNo); |
else |
error = -EINVAL; |
free(dev); |
} |
return error; |
} |
int VMEcontrolInterrupt(int nHandle, BOOLEAN *bEnable) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
PCIVME_IRQ_CONTROL control; |
control.bEnable = *bEnable; |
if (ioctl(dev->nFileNo, PCIVME_CONTROL_INTERRUPTS, &control) < 0) |
{ |
dev->nLastError = errno; |
return errno; |
} |
// status of interrupt enable before set |
*bEnable = control.bEnable; |
return 0; |
} |
int GetLastError(int nHandle) |
{ |
VMEMM_DEVICE *dev = (VMEMM_DEVICE *)nHandle; |
int nLocalError; |
nLocalError = dev->nLastError; |
dev->nLastError = 0; |
return nLocalError; |
} |
/pcivme-3.2/lib/Makefile |
---|
0,0 → 1,56 |
#**************************************************************************** |
# Copyright (C) 2001-2004 ARW Elektronik Germany |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 2 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
# |
# Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
#**************************************************************************** |
#**************************************************************************** |
# |
# Makefile - makefile for ARW Elektronik CAMAC interfaces shared library |
# |
# $Log: Makefile,v $ |
# Revision 1.3 2004/08/13 19:23:45 klaus |
# conversion to kernel-version 2.6, released version 3.0 |
# |
# Revision 1.2 2002/10/19 08:50:05 klaus |
# commit after repair |
# |
#**************************************************************************** |
TARGET = libpcivme.so.1.0.2 |
FILES = pcivme_ni |
LIB = /usr/lib |
INCLUDEDIR = /usr/include |
CFLAGS = -shared -Wall -Wl,-soname,libpcivme.so.1 -g -lc -I$(INCLUDEDIR) -I. |
all: $(FILES) |
mv $(FILES) $(TARGET) |
clean: |
rm -f $(FILES) *~ core |
# only root may install |
install: |
cp $(TARGET) $(LIB)/$(TARGET) |
ln -sf $(LIB)/$(TARGET) $(LIB)/libpcivme.so.1 |
ln -sf $(LIB)/libpcivme.so.1 $(LIB)/libpcivme.so |
/sbin/ldconfig |
/pcivme-3.2/driver/pciif.h |
---|
0,0 → 1,100 |
#ifndef __PCIIF_H__ |
#define __PCIIF_H__ |
//**************************************************************************** |
// Copyright (C) 2001-2004 ARW Elktronik Germany |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
//**************************************************************************** |
//**************************************************************************** |
// |
// pciif.h - all definitions about the VMEMM module |
// |
// $Log: pciif.h,v $ |
// Revision 1.6 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.3 2002/10/10 18:57:46 klaus |
// source beautyfied |
// |
//**************************************************************************** |
//**************************************************************************** |
// INCLUDES |
#include <linux/types.h> |
#include "vic.h" |
//**************************************************************************** |
// DEFINES |
/* type of this VMEMM ---------------------------------------------------*/ |
#define VMEMM_MODULE_TYPE 0x1000 |
/*-----------------------------------------------------------------------*/ |
/* all addresses relative to PCI-Window */ |
/*------------- addresses of vmemm local devices ------------------------*/ |
#define CSR (u32)0x0000 /* control status register */ |
#define VICRES (u32)0x0004 /* VIC reset register / interrupt status */ |
#define ADRHL (u32)0x0008 /* AdrH and AdrL as long */ |
#define VICBASE (u32)0x0400 /* base of VIC68A */ |
#define VECBASE (u32)0x0800 /* base of vector registers */ |
#define VMEBASE (u32)0x1000 /* base of 4k VME-BUS window */ |
/*---------- parts of addresses derived from above ----------------------*/ |
#define IVEC1 (u32)(VECBASE + 3) /* IACK 1 vector */ |
#define IVEC2 (u32)(VECBASE + 5) /* IACK 2 vector */ |
#define IVEC3 (u32)(VECBASE + 7) /* IACK 3 vector */ |
#define IVEC4 (u32)(VECBASE + 9) /* IACK 4 vector */ |
#define IVEC5 (u32)(VECBASE + b) /* IACK 5 vector */ |
#define IVEC6 (u32)(VECBASE + d) /* IACK 6 vector */ |
#define IVEC7 (u32)(VECBASE + f) /* IACK 7 vector */ |
#define ADRL (u32)ADRHL /* u16 access addr. VME-addr */ |
#define ADRH (u32)(ADRHL + 2) |
/*--------- address mask ------------------------------------------------*/ |
#define VME_ADR_MASK (u32)0x00000FFF /* masks lower part of address */ |
/*--------- some masks in CSR -------------------------------------------*/ |
#define FLAG_RMC (u16)0x0001 /* set = next cycle is RMC */ |
#define FLAG_BLT (u16)0x0002 /* don't use it. must be 0 */ |
#define FLAG_WORD (u16)0x0004 /* it is a u16 wide interface */ |
#define FLAG_SYSCTL (u16)0x0008 /* the system contrl. is enabled */ |
#define MASK_MODNR (u16)0x00F0 /* the mask to get the module No */ |
#define MASK_FPGA (u16)0x0F00 /* the mask to get the FPGA rev. */ |
#define MASK_MODTYPE (u16)0xF000 /* the mask to get type of module*/ |
/*---------- action commands in VICRES -----------------------------------*/ |
#define GLOBAL_RESET (u16)0x000A /* write this to reset the intrfc */ |
#define LOCAL_RESET (u16)0x0005 /* generate a local reset */ |
#endif // __PCIIF_H__ |
/pcivme-3.2/driver/pcivme.mod.c |
---|
0,0 → 1,63 |
#include <linux/module.h> |
#include <linux/vermagic.h> |
#include <linux/compiler.h> |
MODULE_INFO(vermagic, VERMAGIC_STRING); |
struct module __this_module |
__attribute__((section(".gnu.linkonce.this_module"))) = { |
.name = KBUILD_MODNAME, |
.init = init_module, |
#ifdef CONFIG_MODULE_UNLOAD |
.exit = cleanup_module, |
#endif |
.arch = MODULE_ARCH_INIT, |
}; |
static const struct modversion_info ____versions[] |
__used |
__attribute__((section("__versions"))) = { |
{ 0xee584c90, "module_layout" }, |
{ 0x6bc3fbc0, "__unregister_chrdev" }, |
{ 0x1fedf0f4, "__request_region" }, |
{ 0x440a4045, "kmalloc_caches" }, |
{ 0x69a358a6, "iomem_resource" }, |
{ 0xc8b57c27, "autoremove_wake_function" }, |
{ 0x27ca2b04, "pci_disable_device" }, |
{ 0x88ef4b8, "remove_proc_entry" }, |
{ 0xc8f68b16, "__register_chrdev" }, |
{ 0x6339a8bc, "mutex_unlock" }, |
{ 0x91715312, "sprintf" }, |
{ 0x68dfc59f, "__init_waitqueue_head" }, |
{ 0x215f9a25, "current_task" }, |
{ 0xc5c74531, "__mutex_init" }, |
{ 0x50eedeb8, "printk" }, |
{ 0xb4390f9a, "mcount" }, |
{ 0xfd03d00a, "pci_bus_write_config_dword" }, |
{ 0xcf510c4a, "mutex_lock" }, |
{ 0x2072ee9b, "request_threaded_irq" }, |
{ 0xa8a6f639, "__check_region" }, |
{ 0x42c8de35, "ioremap_nocache" }, |
{ 0x4d66a1f8, "pci_bus_read_config_word" }, |
{ 0x580199b1, "pci_bus_read_config_dword" }, |
{ 0x4292364c, "schedule" }, |
{ 0xf68c082c, "create_proc_entry" }, |
{ 0x7c61340c, "__release_region" }, |
{ 0x7807eace, "kmem_cache_alloc_trace" }, |
{ 0xe45f60d8, "__wake_up" }, |
{ 0x37a0cba, "kfree" }, |
{ 0x622fa02a, "prepare_to_wait" }, |
{ 0xedc03953, "iounmap" }, |
{ 0x1fb6d7da, "pci_get_device" }, |
{ 0x75bb675a, "finish_wait" }, |
{ 0xedeaaff1, "pci_enable_device" }, |
{ 0xf20dabd8, "free_irq" }, |
}; |
static const char __module_depends[] |
__used |
__attribute__((section(".modinfo"))) = |
"depends="; |
MODULE_INFO(srcversion, "BC454FCFCA2F039491927C2"); |
/pcivme-3.2/driver/modules.order |
---|
0,0 → 1,0 |
kernel//home/f9daq/pcivme-3.2/driver/pcivme.ko |
/pcivme-3.2/driver/pcivme_load |
---|
0,0 → 1,36 |
#!/bin/sh |
# |
# a simple shell script to load the pcivme driver module |
# and to install the associated device files (Hi, 2004) |
# |
# $Log: pcivme_load,v $ |
# Revision 1.4 2004/08/13 19:34:45 klaus |
# Changed to support kernels 2.6 and lesser |
# |
# Revision 1.3 2004/08/13 19:23:26 klaus |
# conversion to kernel-version 2.6, released version 3.0 |
# |
# |
module="pcivme" |
device="vmemm_" |
group="root" |
mode="666" |
# the modulenumber must be given |
if test $1 |
then |
# invoke insmod |
/sbin/insmod $module.ko || /sbin/insmod $module.o || exit 1 |
# get major number from /proc/devices |
major=`cat /proc/devices | awk "\\$2==\"$module\" {print \\$1}"` |
rm -f /dev/${device}$1 |
mknod /dev/${device}$1 c $major $1 |
chgrp $group /dev/${device}$1 |
chmod $mode /dev/${device}$1 |
else |
echo "usage: pcivme_load module_number" |
fi |
Property changes: |
Added: svn:executable |
/pcivme-3.2/driver/plxbug.c |
---|
0,0 → 1,138 |
//**************************************************************************** |
// Copyright (C) 2000-2004 ARW Elektronik Germany |
// |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// plxbug.c -- plx 9050 bug fix code the PCIVME PCI to VME Interface |
// |
// $Log: plxbug.c,v $ |
// Revision 1.6 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.3 2002/10/10 18:57:46 klaus |
// source beautyfied |
// |
//**************************************************************************** |
#include "common.h" /* must be the first include */ |
#include <asm/types.h> |
#include "plxbug.h" |
#include "main.h" |
/*------------------------------------------------------------------------- |
// DEFINES |
*/ |
#define PCR_MEMORY_BUG 0x00 // 1st PCR index of potential bug |
#define PCR_IO_BUG 0x01 // 2nd PCR index of potential bug |
#define PCR_MEMORY_OK 0x04 // 1st PCR index of no bug |
#define PCR_IO_OK 0x05 // 2nd PCR index of no bug |
//------------------------------------------------------------------------- |
// EXTERNALS |
//------------------------------------------------------------------------- |
// function to call for bug fix |
// fixes address of LCR through change in address windows - updates PCIConfigHeader |
int PLX9050BugFix(PCIConfig *pHeader) |
{ |
u32 dwDataBug; |
u32 dwDataOK; |
int result = 0; |
if (pHeader->pciDev->resource[PCR_MEMORY_BUG].start & 0x80) |
{ |
result = pci_read_config_dword(pHeader->pciDev, PCI_BASE_ADDRESS_0, &dwDataBug); |
if (result) |
goto fail; |
result = pci_read_config_dword(pHeader->pciDev, PCI_BASE_ADDRESS_4, &dwDataOK); |
if (result) |
goto fail; |
result = pci_write_config_dword(pHeader->pciDev, PCI_BASE_ADDRESS_0, dwDataOK); |
if (result) |
goto fail; |
result = pci_write_config_dword(pHeader->pciDev, PCI_BASE_ADDRESS_4, dwDataBug); |
if (result) |
goto fail; |
// put changes in structures, too |
dwDataBug = pHeader->pciDev->resource[PCR_MEMORY_BUG].start; |
dwDataOK = pHeader->pciDev->resource[PCR_MEMORY_OK].start; |
pHeader->pciDev->resource[PCR_MEMORY_BUG].start = dwDataOK; |
pHeader->pciDev->resource[PCR_MEMORY_OK].start = dwDataBug; |
PRINTK(KERN_DEBUG "%s : bugfix memory done.\n", DEVICE_NAME); |
} |
if (pHeader->pciDev->resource[PCR_IO_BUG].start & 0x80) |
{ |
result = pci_read_config_dword(pHeader->pciDev, PCI_BASE_ADDRESS_1, &dwDataBug); |
if (result) |
goto fail; |
result = pci_read_config_dword(pHeader->pciDev, PCI_BASE_ADDRESS_5, &dwDataOK); |
if (result) |
goto fail; |
result = pci_write_config_dword(pHeader->pciDev, PCI_BASE_ADDRESS_1, dwDataOK); |
if (result) |
goto fail; |
result = pci_write_config_dword(pHeader->pciDev, PCI_BASE_ADDRESS_5, dwDataBug); |
if (result) |
goto fail; |
// put changes in structures, too |
dwDataBug = pHeader->pciDev->resource[PCR_IO_BUG].start; |
dwDataOK = pHeader->pciDev->resource[PCR_IO_OK].start; |
pHeader->pciDev->resource[PCR_IO_BUG].start = dwDataOK; |
pHeader->pciDev->resource[PCR_IO_OK].start = dwDataBug; |
PRINTK(KERN_DEBUG "%s : bugfix io done.\n", DEVICE_NAME); |
} |
fail: |
if (result) |
printk(KERN_ERR "%s : PCI-error %d!\n", DEVICE_NAME, result); |
return result; |
} |
/pcivme-3.2/driver/.fops.o.cmd |
---|
0,0 → 1,758 |
cmd_/home/f9daq/pcivme-3.2/driver/./fops.o := gcc -Wp,-MD,/home/f9daq/pcivme-3.2/driver/./.fops.o.d -nostdinc -isystem /usr/lib/gcc/i686-linux-gnu/4.6/include -I/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include -Iarch/x86/include/generated -Iinclude -include /usr/src/linux-headers-3.5.0-28-generic/include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i686 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_AVX=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=1024 -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I. -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(fops)" -D"KBUILD_MODNAME=KBUILD_STR(pcivme)" -c -o /home/f9daq/pcivme-3.2/driver/./.tmp_fops.o /home/f9daq/pcivme-3.2/driver/./fops.c |
source_/home/f9daq/pcivme-3.2/driver/./fops.o := /home/f9daq/pcivme-3.2/driver/./fops.c |
deps_/home/f9daq/pcivme-3.2/driver/./fops.o := \ |
/home/f9daq/pcivme-3.2/driver/./common.h \ |
$(wildcard include/config/modversions.h) \ |
include/linux/version.h \ |
include/config/modversions.h \ |
include/linux/kernel.h \ |
$(wildcard include/config/lbdaf.h) \ |
$(wildcard include/config/preempt/voluntary.h) \ |
$(wildcard include/config/debug/atomic/sleep.h) \ |
$(wildcard include/config/prove/locking.h) \ |
$(wildcard include/config/ring/buffer.h) \ |
$(wildcard include/config/tracing.h) \ |
$(wildcard include/config/numa.h) \ |
$(wildcard include/config/compaction.h) \ |
$(wildcard include/config/ftrace/mcount/record.h) \ |
include/linux/sysinfo.h \ |
include/linux/types.h \ |
$(wildcard include/config/uid16.h) \ |
$(wildcard include/config/arch/dma/addr/t/64bit.h) \ |
$(wildcard include/config/phys/addr/t/64bit.h) \ |
$(wildcard include/config/64bit.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/types.h \ |
include/asm-generic/types.h \ |
include/asm-generic/int-ll64.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bitsperlong.h \ |
include/asm-generic/bitsperlong.h \ |
include/linux/posix_types.h \ |
include/linux/stddef.h \ |
include/linux/compiler.h \ |
$(wildcard include/config/sparse/rcu/pointer.h) \ |
$(wildcard include/config/trace/branch/profiling.h) \ |
$(wildcard include/config/profile/all/branches.h) \ |
$(wildcard include/config/enable/must/check.h) \ |
$(wildcard include/config/enable/warn/deprecated.h) \ |
include/linux/compiler-gcc.h \ |
$(wildcard include/config/arch/supports/optimized/inlining.h) \ |
$(wildcard include/config/optimize/inlining.h) \ |
include/linux/compiler-gcc4.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/posix_types.h \ |
$(wildcard include/config/x86/32.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/posix_types_32.h \ |
include/asm-generic/posix_types.h \ |
/usr/lib/gcc/i686-linux-gnu/4.6/include/stdarg.h \ |
include/linux/linkage.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/linkage.h \ |
$(wildcard include/config/x86/64.h) \ |
$(wildcard include/config/x86/alignment/16.h) \ |
include/linux/stringify.h \ |
include/linux/bitops.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bitops.h \ |
$(wildcard include/config/x86/cmov.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/alternative.h \ |
$(wildcard include/config/smp.h) \ |
$(wildcard include/config/paravirt.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/asm.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cpufeature.h \ |
$(wildcard include/config/x86/invlpg.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/required-features.h \ |
$(wildcard include/config/x86/minimum/cpu/family.h) \ |
$(wildcard include/config/math/emulation.h) \ |
$(wildcard include/config/x86/pae.h) \ |
$(wildcard include/config/x86/cmpxchg64.h) \ |
$(wildcard include/config/x86/use/3dnow.h) \ |
$(wildcard include/config/x86/p6/nop.h) \ |
include/asm-generic/bitops/fls64.h \ |
include/asm-generic/bitops/find.h \ |
$(wildcard include/config/generic/find/first/bit.h) \ |
include/asm-generic/bitops/sched.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/arch_hweight.h \ |
include/asm-generic/bitops/const_hweight.h \ |
include/asm-generic/bitops/le.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/byteorder.h \ |
include/linux/byteorder/little_endian.h \ |
include/linux/swab.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/swab.h \ |
$(wildcard include/config/x86/bswap.h) \ |
include/linux/byteorder/generic.h \ |
include/asm-generic/bitops/ext2-atomic-setbit.h \ |
include/linux/log2.h \ |
$(wildcard include/config/arch/has/ilog2/u32.h) \ |
$(wildcard include/config/arch/has/ilog2/u64.h) \ |
include/linux/typecheck.h \ |
include/linux/printk.h \ |
$(wildcard include/config/printk.h) \ |
$(wildcard include/config/dynamic/debug.h) \ |
include/linux/init.h \ |
$(wildcard include/config/modules.h) \ |
$(wildcard include/config/hotplug.h) \ |
include/linux/dynamic_debug.h \ |
include/linux/string.h \ |
$(wildcard include/config/binary/printf.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/string.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/string_32.h \ |
$(wildcard include/config/kmemcheck.h) \ |
include/linux/errno.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/errno.h \ |
include/asm-generic/errno.h \ |
include/asm-generic/errno-base.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/div64.h \ |
include/linux/module.h \ |
$(wildcard include/config/sysfs.h) \ |
$(wildcard include/config/unused/symbols.h) \ |
$(wildcard include/config/generic/bug.h) \ |
$(wildcard include/config/kallsyms.h) \ |
$(wildcard include/config/tracepoints.h) \ |
$(wildcard include/config/event/tracing.h) \ |
$(wildcard include/config/module/unload.h) \ |
$(wildcard include/config/constructors.h) \ |
$(wildcard include/config/debug/set/module/ronx.h) \ |
include/linux/list.h \ |
$(wildcard include/config/debug/list.h) \ |
include/linux/poison.h \ |
$(wildcard include/config/illegal/pointer/value.h) \ |
include/linux/const.h \ |
include/linux/stat.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/stat.h \ |
include/linux/time.h \ |
$(wildcard include/config/arch/uses/gettimeoffset.h) \ |
include/linux/cache.h \ |
$(wildcard include/config/arch/has/cache/line/size.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cache.h \ |
$(wildcard include/config/x86/l1/cache/shift.h) \ |
$(wildcard include/config/x86/internode/cache/shift.h) \ |
$(wildcard include/config/x86/vsmp.h) \ |
include/linux/seqlock.h \ |
include/linux/spinlock.h \ |
$(wildcard include/config/debug/spinlock.h) \ |
$(wildcard include/config/generic/lockbreak.h) \ |
$(wildcard include/config/preempt.h) \ |
$(wildcard include/config/debug/lock/alloc.h) \ |
include/linux/preempt.h \ |
$(wildcard include/config/debug/preempt.h) \ |
$(wildcard include/config/preempt/tracer.h) \ |
$(wildcard include/config/preempt/count.h) \ |
$(wildcard include/config/preempt/notifiers.h) \ |
include/linux/thread_info.h \ |
$(wildcard include/config/compat.h) \ |
$(wildcard include/config/debug/stack/usage.h) \ |
include/linux/bug.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bug.h \ |
$(wildcard include/config/bug.h) \ |
$(wildcard include/config/debug/bugverbose.h) \ |
include/asm-generic/bug.h \ |
$(wildcard include/config/generic/bug/relative/pointers.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/thread_info.h \ |
$(wildcard include/config/ia32/emulation.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_32_types.h \ |
$(wildcard include/config/highmem4g.h) \ |
$(wildcard include/config/highmem64g.h) \ |
$(wildcard include/config/page/offset.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_32.h \ |
$(wildcard include/config/hugetlb/page.h) \ |
$(wildcard include/config/debug/virtual.h) \ |
$(wildcard include/config/flatmem.h) \ |
$(wildcard include/config/x86/3dnow.h) \ |
include/asm-generic/memory_model.h \ |
$(wildcard include/config/discontigmem.h) \ |
$(wildcard include/config/sparsemem/vmemmap.h) \ |
$(wildcard include/config/sparsemem.h) \ |
include/asm-generic/getorder.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/processor.h \ |
$(wildcard include/config/cc/stackprotector.h) \ |
$(wildcard include/config/m386.h) \ |
$(wildcard include/config/m486.h) \ |
$(wildcard include/config/x86/debugctlmsr.h) \ |
$(wildcard include/config/cpu/sup/amd.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/processor-flags.h \ |
$(wildcard include/config/vm86.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/vm86.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ptrace.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ptrace-abi.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/segment.h \ |
$(wildcard include/config/x86/32/lazy/gs.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/paravirt_types.h \ |
$(wildcard include/config/x86/local/apic.h) \ |
$(wildcard include/config/paravirt/debug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/desc_defs.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/kmap_types.h \ |
$(wildcard include/config/debug/highmem.h) \ |
include/asm-generic/kmap_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_types.h \ |
$(wildcard include/config/compat/vdso.h) \ |
$(wildcard include/config/proc/fs.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32_types.h \ |
$(wildcard include/config/highmem.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable-3level_types.h \ |
include/asm-generic/pgtable-nopud.h \ |
include/asm-generic/ptrace.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/math_emu.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/sigcontext.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/current.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/percpu.h \ |
$(wildcard include/config/x86/64/smp.h) \ |
include/asm-generic/percpu.h \ |
$(wildcard include/config/have/setup/per/cpu/area.h) \ |
include/linux/threads.h \ |
$(wildcard include/config/nr/cpus.h) \ |
$(wildcard include/config/base/small.h) \ |
include/linux/percpu-defs.h \ |
$(wildcard include/config/debug/force/weak/per/cpu.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/msr.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/msr-index.h \ |
include/linux/ioctl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ioctl.h \ |
include/asm-generic/ioctl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cpumask.h \ |
include/linux/cpumask.h \ |
$(wildcard include/config/cpumask/offstack.h) \ |
$(wildcard include/config/hotplug/cpu.h) \ |
$(wildcard include/config/debug/per/cpu/maps.h) \ |
$(wildcard include/config/disable/obsolete/cpumask/functions.h) \ |
include/linux/bitmap.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/paravirt.h \ |
$(wildcard include/config/transparent/hugepage.h) \ |
$(wildcard include/config/paravirt/spinlocks.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/nops.h \ |
$(wildcard include/config/mk7.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/special_insns.h \ |
include/linux/personality.h \ |
include/linux/math64.h \ |
include/linux/err.h \ |
include/linux/irqflags.h \ |
$(wildcard include/config/trace/irqflags.h) \ |
$(wildcard include/config/irqsoff/tracer.h) \ |
$(wildcard include/config/trace/irqflags/support.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irqflags.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ftrace.h \ |
$(wildcard include/config/function/tracer.h) \ |
$(wildcard include/config/dynamic/ftrace.h) \ |
include/linux/atomic.h \ |
$(wildcard include/config/arch/has/atomic/or.h) \ |
$(wildcard include/config/generic/atomic64.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/atomic.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cmpxchg.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cmpxchg_32.h \ |
$(wildcard include/config/x86/cmpxchg.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/atomic64_32.h \ |
include/asm-generic/atomic-long.h \ |
include/linux/bottom_half.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/barrier.h \ |
$(wildcard include/config/x86/ppro/fence.h) \ |
$(wildcard include/config/x86/oostore.h) \ |
include/linux/spinlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/spinlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/rwlock.h \ |
include/linux/lockdep.h \ |
$(wildcard include/config/lockdep.h) \ |
$(wildcard include/config/lock/stat.h) \ |
$(wildcard include/config/prove/rcu.h) \ |
include/linux/rwlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/spinlock.h \ |
include/linux/rwlock.h \ |
include/linux/spinlock_api_smp.h \ |
$(wildcard include/config/inline/spin/lock.h) \ |
$(wildcard include/config/inline/spin/lock/bh.h) \ |
$(wildcard include/config/inline/spin/lock/irq.h) \ |
$(wildcard include/config/inline/spin/lock/irqsave.h) \ |
$(wildcard include/config/inline/spin/trylock.h) \ |
$(wildcard include/config/inline/spin/trylock/bh.h) \ |
$(wildcard include/config/uninline/spin/unlock.h) \ |
$(wildcard include/config/inline/spin/unlock/bh.h) \ |
$(wildcard include/config/inline/spin/unlock/irq.h) \ |
$(wildcard include/config/inline/spin/unlock/irqrestore.h) \ |
include/linux/rwlock_api_smp.h \ |
$(wildcard include/config/inline/read/lock.h) \ |
$(wildcard include/config/inline/write/lock.h) \ |
$(wildcard include/config/inline/read/lock/bh.h) \ |
$(wildcard include/config/inline/write/lock/bh.h) \ |
$(wildcard include/config/inline/read/lock/irq.h) \ |
$(wildcard include/config/inline/write/lock/irq.h) \ |
$(wildcard include/config/inline/read/lock/irqsave.h) \ |
$(wildcard include/config/inline/write/lock/irqsave.h) \ |
$(wildcard include/config/inline/read/trylock.h) \ |
$(wildcard include/config/inline/write/trylock.h) \ |
$(wildcard include/config/inline/read/unlock.h) \ |
$(wildcard include/config/inline/write/unlock.h) \ |
$(wildcard include/config/inline/read/unlock/bh.h) \ |
$(wildcard include/config/inline/write/unlock/bh.h) \ |
$(wildcard include/config/inline/read/unlock/irq.h) \ |
$(wildcard include/config/inline/write/unlock/irq.h) \ |
$(wildcard include/config/inline/read/unlock/irqrestore.h) \ |
$(wildcard include/config/inline/write/unlock/irqrestore.h) \ |
include/linux/uidgid.h \ |
$(wildcard include/config/uidgid/strict/type/checks.h) \ |
$(wildcard include/config/user/ns.h) \ |
include/linux/highuid.h \ |
include/linux/kmod.h \ |
include/linux/gfp.h \ |
$(wildcard include/config/zone/dma.h) \ |
$(wildcard include/config/zone/dma32.h) \ |
$(wildcard include/config/pm/sleep.h) \ |
$(wildcard include/config/cma.h) \ |
include/linux/mmzone.h \ |
$(wildcard include/config/force/max/zoneorder.h) \ |
$(wildcard include/config/cgroup/mem/res/ctlr.h) \ |
$(wildcard include/config/memory/hotplug.h) \ |
$(wildcard include/config/have/memblock/node/map.h) \ |
$(wildcard include/config/flat/node/mem/map.h) \ |
$(wildcard include/config/no/bootmem.h) \ |
$(wildcard include/config/have/memory/present.h) \ |
$(wildcard include/config/have/memoryless/nodes.h) \ |
$(wildcard include/config/need/node/memmap/size.h) \ |
$(wildcard include/config/have/memblock/node.h) \ |
$(wildcard include/config/need/multiple/nodes.h) \ |
$(wildcard include/config/have/arch/early/pfn/to/nid.h) \ |
$(wildcard include/config/sparsemem/extreme.h) \ |
$(wildcard include/config/have/arch/pfn/valid.h) \ |
$(wildcard include/config/nodes/span/other/nodes.h) \ |
$(wildcard include/config/holes/in/zone.h) \ |
$(wildcard include/config/arch/has/holes/memorymodel.h) \ |
include/linux/wait.h \ |
include/linux/numa.h \ |
$(wildcard include/config/nodes/shift.h) \ |
include/linux/nodemask.h \ |
include/linux/pageblock-flags.h \ |
$(wildcard include/config/hugetlb/page/size/variable.h) \ |
include/generated/bounds.h \ |
include/linux/memory_hotplug.h \ |
$(wildcard include/config/memory/hotremove.h) \ |
$(wildcard include/config/have/arch/nodedata/extension.h) \ |
include/linux/notifier.h \ |
include/linux/mutex.h \ |
$(wildcard include/config/debug/mutexes.h) \ |
$(wildcard include/config/have/arch/mutex/cpu/relax.h) \ |
include/linux/rwsem.h \ |
$(wildcard include/config/rwsem/generic/spinlock.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/rwsem.h \ |
include/linux/srcu.h \ |
include/linux/rcupdate.h \ |
$(wildcard include/config/rcu/torture/test.h) \ |
$(wildcard include/config/tree/rcu.h) \ |
$(wildcard include/config/tree/preempt/rcu.h) \ |
$(wildcard include/config/rcu/trace.h) \ |
$(wildcard include/config/preempt/rcu.h) \ |
$(wildcard include/config/tiny/rcu.h) \ |
$(wildcard include/config/tiny/preempt/rcu.h) \ |
$(wildcard include/config/debug/objects/rcu/head.h) \ |
$(wildcard include/config/preempt/rt.h) \ |
include/linux/completion.h \ |
include/linux/debugobjects.h \ |
$(wildcard include/config/debug/objects.h) \ |
$(wildcard include/config/debug/objects/free.h) \ |
include/linux/rcutree.h \ |
include/linux/workqueue.h \ |
$(wildcard include/config/debug/objects/work.h) \ |
$(wildcard include/config/freezer.h) \ |
include/linux/timer.h \ |
$(wildcard include/config/timer/stats.h) \ |
$(wildcard include/config/debug/objects/timers.h) \ |
include/linux/ktime.h \ |
$(wildcard include/config/ktime/scalar.h) \ |
include/linux/jiffies.h \ |
include/linux/timex.h \ |
include/linux/param.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/param.h \ |
include/asm-generic/param.h \ |
$(wildcard include/config/hz.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/timex.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/tsc.h \ |
$(wildcard include/config/x86/tsc.h) \ |
include/linux/topology.h \ |
$(wildcard include/config/sched/smt.h) \ |
$(wildcard include/config/sched/mc.h) \ |
$(wildcard include/config/sched/book.h) \ |
$(wildcard include/config/use/percpu/numa/node/id.h) \ |
include/linux/smp.h \ |
$(wildcard include/config/use/generic/smp/helpers.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/smp.h \ |
$(wildcard include/config/x86/io/apic.h) \ |
$(wildcard include/config/x86/32/smp.h) \ |
$(wildcard include/config/debug/nmi/selftest.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mpspec.h \ |
$(wildcard include/config/x86/numaq.h) \ |
$(wildcard include/config/eisa.h) \ |
$(wildcard include/config/x86/mpparse.h) \ |
$(wildcard include/config/acpi.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mpspec_def.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/x86_init.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bootparam.h \ |
include/linux/screen_info.h \ |
include/linux/apm_bios.h \ |
include/linux/edd.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/e820.h \ |
$(wildcard include/config/efi.h) \ |
$(wildcard include/config/intel/txt.h) \ |
$(wildcard include/config/hibernation.h) \ |
$(wildcard include/config/memtest.h) \ |
include/linux/ioport.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ist.h \ |
include/video/edid.h \ |
$(wildcard include/config/x86.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/apicdef.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/apic.h \ |
$(wildcard include/config/x86/x2apic.h) \ |
include/linux/pm.h \ |
$(wildcard include/config/pm.h) \ |
$(wildcard include/config/pm/runtime.h) \ |
$(wildcard include/config/pm/clk.h) \ |
$(wildcard include/config/pm/generic/domains.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/fixmap.h \ |
$(wildcard include/config/provide/ohci1394/dma/init.h) \ |
$(wildcard include/config/x86/visws/apic.h) \ |
$(wildcard include/config/x86/f00f/bug.h) \ |
$(wildcard include/config/x86/cyclone/timer.h) \ |
$(wildcard include/config/pci/mmconfig.h) \ |
$(wildcard include/config/x86/intel/mid.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/acpi.h \ |
$(wildcard include/config/acpi/numa.h) \ |
include/acpi/pdc_intel.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/numa.h \ |
$(wildcard include/config/numa/emu.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/topology.h \ |
$(wildcard include/config/x86/ht.h) \ |
include/asm-generic/topology.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/numa_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mmu.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/realmode.h \ |
$(wildcard include/config/acpi/sleep.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/io.h \ |
$(wildcard include/config/xen.h) \ |
include/asm-generic/iomap.h \ |
$(wildcard include/config/has/ioport.h) \ |
$(wildcard include/config/pci.h) \ |
$(wildcard include/config/generic/iomap.h) \ |
include/asm-generic/pci_iomap.h \ |
$(wildcard include/config/no/generic/pci/ioport/map.h) \ |
$(wildcard include/config/generic/pci/iomap.h) \ |
include/linux/vmalloc.h \ |
$(wildcard include/config/mmu.h) \ |
include/xen/xen.h \ |
$(wildcard include/config/xen/dom0.h) \ |
include/xen/interface/xen.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/interface.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/interface_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pvclock-abi.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/hypervisor.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/io_apic.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irq_vectors.h \ |
include/linux/percpu.h \ |
$(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ |
$(wildcard include/config/need/per/cpu/page/first/chunk.h) \ |
include/linux/pfn.h \ |
include/linux/mmdebug.h \ |
$(wildcard include/config/debug/vm.h) \ |
include/linux/sysctl.h \ |
$(wildcard include/config/sysctl.h) \ |
include/linux/rbtree.h \ |
include/linux/elf.h \ |
include/linux/elf-em.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/elf.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/user.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/user_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/auxvec.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/vdso.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/desc.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ldt.h \ |
include/linux/kobject.h \ |
include/linux/sysfs.h \ |
include/linux/kobject_ns.h \ |
include/linux/kref.h \ |
include/linux/moduleparam.h \ |
$(wildcard include/config/alpha.h) \ |
$(wildcard include/config/ia64.h) \ |
$(wildcard include/config/ppc64.h) \ |
include/linux/tracepoint.h \ |
include/linux/static_key.h \ |
include/linux/jump_label.h \ |
$(wildcard include/config/jump/label.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/jump_label.h \ |
include/linux/export.h \ |
$(wildcard include/config/symbol/prefix.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/module.h \ |
$(wildcard include/config/m586.h) \ |
$(wildcard include/config/m586tsc.h) \ |
$(wildcard include/config/m586mmx.h) \ |
$(wildcard include/config/mcore2.h) \ |
$(wildcard include/config/matom.h) \ |
$(wildcard include/config/m686.h) \ |
$(wildcard include/config/mpentiumii.h) \ |
$(wildcard include/config/mpentiumiii.h) \ |
$(wildcard include/config/mpentiumm.h) \ |
$(wildcard include/config/mpentium4.h) \ |
$(wildcard include/config/mk6.h) \ |
$(wildcard include/config/mk8.h) \ |
$(wildcard include/config/melan.h) \ |
$(wildcard include/config/mcrusoe.h) \ |
$(wildcard include/config/mefficeon.h) \ |
$(wildcard include/config/mwinchipc6.h) \ |
$(wildcard include/config/mwinchip3d.h) \ |
$(wildcard include/config/mcyrixiii.h) \ |
$(wildcard include/config/mviac3/2.h) \ |
$(wildcard include/config/mviac7.h) \ |
$(wildcard include/config/mgeodegx1.h) \ |
$(wildcard include/config/mgeode/lx.h) \ |
include/asm-generic/module.h \ |
include/linux/pci.h \ |
$(wildcard include/config/pci/iov.h) \ |
$(wildcard include/config/pcieaspm.h) \ |
$(wildcard include/config/pci/msi.h) \ |
$(wildcard include/config/pci/ats.h) \ |
$(wildcard include/config/pcieportbus.h) \ |
$(wildcard include/config/pcieaer.h) \ |
$(wildcard include/config/pcie/ecrc.h) \ |
$(wildcard include/config/ht/irq.h) \ |
$(wildcard include/config/pci/domains.h) \ |
$(wildcard include/config/pci/quirks.h) \ |
$(wildcard include/config/hotplug/pci.h) \ |
$(wildcard include/config/of.h) \ |
$(wildcard include/config/eeh.h) \ |
include/linux/pci_regs.h \ |
include/linux/mod_devicetable.h \ |
include/linux/device.h \ |
$(wildcard include/config/debug/devres.h) \ |
$(wildcard include/config/devtmpfs.h) \ |
$(wildcard include/config/sysfs/deprecated.h) \ |
include/linux/klist.h \ |
include/linux/ratelimit.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/device.h \ |
$(wildcard include/config/x86/dev/dma/ops.h) \ |
$(wildcard include/config/intel/iommu.h) \ |
$(wildcard include/config/amd/iommu.h) \ |
include/linux/pm_wakeup.h \ |
include/linux/io.h \ |
include/linux/irqreturn.h \ |
include/linux/pci_ids.h \ |
include/linux/pci-dma.h \ |
include/linux/dmapool.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/scatterlist.h \ |
include/asm-generic/scatterlist.h \ |
$(wildcard include/config/debug/sg.h) \ |
$(wildcard include/config/need/sg/dma/length.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pci.h \ |
include/linux/mm.h \ |
$(wildcard include/config/stack/growsup.h) \ |
$(wildcard include/config/ksm.h) \ |
$(wildcard include/config/debug/pagealloc.h) \ |
$(wildcard include/config/hugetlbfs.h) \ |
include/linux/prio_tree.h \ |
include/linux/debug_locks.h \ |
$(wildcard include/config/debug/locking/api/selftests.h) \ |
include/linux/mm_types.h \ |
$(wildcard include/config/split/ptlock/cpus.h) \ |
$(wildcard include/config/have/cmpxchg/double.h) \ |
$(wildcard include/config/have/aligned/struct/page.h) \ |
$(wildcard include/config/want/page/debug/flags.h) \ |
$(wildcard include/config/aio.h) \ |
$(wildcard include/config/mm/owner.h) \ |
$(wildcard include/config/mmu/notifier.h) \ |
include/linux/auxvec.h \ |
include/linux/page-debug-flags.h \ |
$(wildcard include/config/page/poisoning.h) \ |
$(wildcard include/config/page/guard.h) \ |
$(wildcard include/config/page/debug/something/else.h) \ |
include/linux/uprobes.h \ |
$(wildcard include/config/arch/supports/uprobes.h) \ |
$(wildcard include/config/uprobes.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/uprobes.h \ |
include/linux/range.h \ |
include/linux/bit_spinlock.h \ |
include/linux/shrinker.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32.h \ |
$(wildcard include/config/highpte.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable-3level.h \ |
include/asm-generic/pgtable.h \ |
include/linux/page-flags.h \ |
$(wildcard include/config/pageflags/extended.h) \ |
$(wildcard include/config/arch/uses/pg/uncached.h) \ |
$(wildcard include/config/memory/failure.h) \ |
$(wildcard include/config/swap.h) \ |
$(wildcard include/config/s390.h) \ |
include/linux/huge_mm.h \ |
include/linux/vmstat.h \ |
$(wildcard include/config/vm/event/counters.h) \ |
include/linux/vm_event_item.h \ |
include/linux/slab.h \ |
$(wildcard include/config/slab/debug.h) \ |
$(wildcard include/config/failslab.h) \ |
$(wildcard include/config/slub.h) \ |
$(wildcard include/config/slob.h) \ |
$(wildcard include/config/debug/slab.h) \ |
$(wildcard include/config/slab.h) \ |
include/linux/slub_def.h \ |
$(wildcard include/config/slub/stats.h) \ |
$(wildcard include/config/slub/debug.h) \ |
include/linux/kmemleak.h \ |
$(wildcard include/config/debug/kmemleak.h) \ |
include/asm-generic/pci-dma-compat.h \ |
include/linux/dma-mapping.h \ |
$(wildcard include/config/has/dma.h) \ |
$(wildcard include/config/arch/has/dma/set/coherent/mask.h) \ |
$(wildcard include/config/have/dma/attrs.h) \ |
$(wildcard include/config/need/dma/map/state.h) \ |
include/linux/dma-attrs.h \ |
include/linux/dma-direction.h \ |
include/linux/scatterlist.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/dma-mapping.h \ |
$(wildcard include/config/isa.h) \ |
$(wildcard include/config/x86/dma/remap.h) \ |
include/linux/kmemcheck.h \ |
include/linux/dma-debug.h \ |
$(wildcard include/config/dma/api/debug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/swiotlb.h \ |
$(wildcard include/config/swiotlb.h) \ |
include/linux/swiotlb.h \ |
include/asm-generic/dma-coherent.h \ |
$(wildcard include/config/have/generic/dma/coherent.h) \ |
include/linux/dma-contiguous.h \ |
$(wildcard include/config/cma/areas.h) \ |
include/asm-generic/dma-mapping-common.h \ |
include/asm-generic/pci.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/uaccess.h \ |
$(wildcard include/config/x86/wp/works/ok.h) \ |
$(wildcard include/config/x86/intel/usercopy.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/uaccess_32.h \ |
$(wildcard include/config/debug/strict/user/copy/checks.h) \ |
include/linux/sched.h \ |
$(wildcard include/config/sched/debug.h) \ |
$(wildcard include/config/no/hz.h) \ |
$(wildcard include/config/lockup/detector.h) \ |
$(wildcard include/config/detect/hung/task.h) \ |
$(wildcard include/config/core/dump/default/elf/headers.h) \ |
$(wildcard include/config/sched/autogroup.h) \ |
$(wildcard include/config/virt/cpu/accounting.h) \ |
$(wildcard include/config/bsd/process/acct.h) \ |
$(wildcard include/config/taskstats.h) \ |
$(wildcard include/config/audit.h) \ |
$(wildcard include/config/cgroups.h) \ |
$(wildcard include/config/inotify/user.h) \ |
$(wildcard include/config/fanotify.h) \ |
$(wildcard include/config/epoll.h) \ |
$(wildcard include/config/posix/mqueue.h) \ |
$(wildcard include/config/keys.h) \ |
$(wildcard include/config/perf/events.h) \ |
$(wildcard include/config/schedstats.h) \ |
$(wildcard include/config/task/delay/acct.h) \ |
$(wildcard include/config/fair/group/sched.h) \ |
$(wildcard include/config/rt/group/sched.h) \ |
$(wildcard include/config/cgroup/sched.h) \ |
$(wildcard include/config/blk/dev/io/trace.h) \ |
$(wildcard include/config/rcu/boost.h) \ |
$(wildcard include/config/compat/brk.h) \ |
$(wildcard include/config/sysvipc.h) \ |
$(wildcard include/config/auditsyscall.h) \ |
$(wildcard include/config/rt/mutexes.h) \ |
$(wildcard include/config/block.h) \ |
$(wildcard include/config/task/xacct.h) \ |
$(wildcard include/config/cpusets.h) \ |
$(wildcard include/config/futex.h) \ |
$(wildcard include/config/fault/injection.h) \ |
$(wildcard include/config/latencytop.h) \ |
$(wildcard include/config/function/graph/tracer.h) \ |
$(wildcard include/config/have/hw/breakpoint.h) \ |
$(wildcard include/config/have/unstable/sched/clock.h) \ |
$(wildcard include/config/irq/time/accounting.h) \ |
$(wildcard include/config/cfs/bandwidth.h) \ |
include/linux/capability.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cputime.h \ |
include/asm-generic/cputime.h \ |
include/linux/sem.h \ |
include/linux/ipc.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ipcbuf.h \ |
include/asm-generic/ipcbuf.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/sembuf.h \ |
include/linux/signal.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/signal.h \ |
include/asm-generic/signal-defs.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/siginfo.h \ |
include/asm-generic/siginfo.h \ |
include/linux/pid.h \ |
include/linux/proportions.h \ |
include/linux/percpu_counter.h \ |
include/linux/seccomp.h \ |
$(wildcard include/config/seccomp.h) \ |
$(wildcard include/config/seccomp/filter.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/seccomp.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/seccomp_32.h \ |
include/linux/unistd.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/unistd.h \ |
$(wildcard include/config/x86/x32/abi.h) \ |
arch/x86/include/generated/asm/unistd_32.h \ |
include/linux/rculist.h \ |
include/linux/rtmutex.h \ |
$(wildcard include/config/debug/rt/mutexes.h) \ |
include/linux/plist.h \ |
$(wildcard include/config/debug/pi/list.h) \ |
include/linux/resource.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/resource.h \ |
include/asm-generic/resource.h \ |
include/linux/hrtimer.h \ |
$(wildcard include/config/high/res/timers.h) \ |
$(wildcard include/config/timerfd.h) \ |
include/linux/timerqueue.h \ |
include/linux/task_io_accounting.h \ |
$(wildcard include/config/task/io/accounting.h) \ |
include/linux/latencytop.h \ |
include/linux/cred.h \ |
$(wildcard include/config/debug/credentials.h) \ |
$(wildcard include/config/security.h) \ |
include/linux/key.h \ |
include/linux/selinux.h \ |
$(wildcard include/config/security/selinux.h) \ |
include/linux/llist.h \ |
$(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ |
include/linux/aio.h \ |
include/linux/aio_abi.h \ |
include/linux/uio.h \ |
include/linux/fs.h \ |
$(wildcard include/config/fs/posix/acl.h) \ |
$(wildcard include/config/quota.h) \ |
$(wildcard include/config/fsnotify.h) \ |
$(wildcard include/config/ima.h) \ |
$(wildcard include/config/debug/writecount.h) \ |
$(wildcard include/config/file/locking.h) \ |
$(wildcard include/config/fs/xip.h) \ |
$(wildcard include/config/migration.h) \ |
include/linux/limits.h \ |
include/linux/blk_types.h \ |
$(wildcard include/config/blk/cgroup.h) \ |
$(wildcard include/config/blk/dev/integrity.h) \ |
include/linux/kdev_t.h \ |
include/linux/dcache.h \ |
include/linux/rculist_bl.h \ |
include/linux/list_bl.h \ |
include/linux/path.h \ |
include/linux/radix-tree.h \ |
include/linux/semaphore.h \ |
include/linux/fiemap.h \ |
include/linux/migrate_mode.h \ |
include/linux/quota.h \ |
$(wildcard include/config/quota/netlink/interface.h) \ |
include/linux/dqblk_xfs.h \ |
include/linux/dqblk_v1.h \ |
include/linux/dqblk_v2.h \ |
include/linux/dqblk_qtree.h \ |
include/linux/nfs_fs_i.h \ |
include/linux/fcntl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/fcntl.h \ |
include/asm-generic/fcntl.h \ |
/home/f9daq/pcivme-3.2/driver/./fops.h \ |
/home/f9daq/pcivme-3.2/driver/./plx9050.h \ |
/home/f9daq/pcivme-3.2/driver/./pcivme.h \ |
/home/f9daq/pcivme-3.2/driver/./main.h \ |
/home/f9daq/pcivme-3.2/driver/./askpci.h \ |
/home/f9daq/pcivme-3.2/driver/./pciif.h \ |
/home/f9daq/pcivme-3.2/driver/./vic.h \ |
/home/f9daq/pcivme-3.2/driver/./vme.h \ |
/home/f9daq/pcivme-3.2/driver/./fops.o: $(deps_/home/f9daq/pcivme-3.2/driver/./fops.o) |
$(deps_/home/f9daq/pcivme-3.2/driver/./fops.o): |
/pcivme-3.2/driver/plxbug.h |
---|
0,0 → 1,55 |
#ifndef __PLXBUG_H__ |
#define __PLXBUG_H__ |
//**************************************************************************** |
// Copyright (C) 2000-2004 ARW Elektronik Germany |
// |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// plxbug.h -- plx 9050 bug fix prototype for the PCIVME PCI to VME Interface |
// |
// $Log: plxbug.h,v $ |
// Revision 1.4 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.3 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.2 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.1.1.1 2002/10/09 19:36:30 klaus |
// initial import |
// |
//**************************************************************************** |
#include "askpci.h" |
int PLX9050BugFix(PCIConfig *pHeader); |
#endif /* __PLXBUG_H__ */ |
/pcivme-3.2/driver/.askpci.o.cmd |
---|
0,0 → 1,566 |
cmd_/home/f9daq/pcivme-3.2/driver/./askpci.o := gcc -Wp,-MD,/home/f9daq/pcivme-3.2/driver/./.askpci.o.d -nostdinc -isystem /usr/lib/gcc/i686-linux-gnu/4.6/include -I/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include -Iarch/x86/include/generated -Iinclude -include /usr/src/linux-headers-3.5.0-28-generic/include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i686 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_AVX=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=1024 -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I. -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(askpci)" -D"KBUILD_MODNAME=KBUILD_STR(pcivme)" -c -o /home/f9daq/pcivme-3.2/driver/./.tmp_askpci.o /home/f9daq/pcivme-3.2/driver/./askpci.c |
source_/home/f9daq/pcivme-3.2/driver/./askpci.o := /home/f9daq/pcivme-3.2/driver/./askpci.c |
deps_/home/f9daq/pcivme-3.2/driver/./askpci.o := \ |
$(wildcard include/config/pci.h) \ |
/home/f9daq/pcivme-3.2/driver/./common.h \ |
$(wildcard include/config/modversions.h) \ |
include/linux/version.h \ |
include/config/modversions.h \ |
include/linux/pci.h \ |
$(wildcard include/config/pci/iov.h) \ |
$(wildcard include/config/pcieaspm.h) \ |
$(wildcard include/config/pci/msi.h) \ |
$(wildcard include/config/pci/ats.h) \ |
$(wildcard include/config/hotplug.h) \ |
$(wildcard include/config/pcieportbus.h) \ |
$(wildcard include/config/pcieaer.h) \ |
$(wildcard include/config/pcie/ecrc.h) \ |
$(wildcard include/config/ht/irq.h) \ |
$(wildcard include/config/pci/domains.h) \ |
$(wildcard include/config/pci/quirks.h) \ |
$(wildcard include/config/pci/mmconfig.h) \ |
$(wildcard include/config/hotplug/pci.h) \ |
$(wildcard include/config/of.h) \ |
$(wildcard include/config/eeh.h) \ |
include/linux/pci_regs.h \ |
include/linux/mod_devicetable.h \ |
include/linux/types.h \ |
$(wildcard include/config/uid16.h) \ |
$(wildcard include/config/lbdaf.h) \ |
$(wildcard include/config/arch/dma/addr/t/64bit.h) \ |
$(wildcard include/config/phys/addr/t/64bit.h) \ |
$(wildcard include/config/64bit.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/types.h \ |
include/asm-generic/types.h \ |
include/asm-generic/int-ll64.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bitsperlong.h \ |
include/asm-generic/bitsperlong.h \ |
include/linux/posix_types.h \ |
include/linux/stddef.h \ |
include/linux/compiler.h \ |
$(wildcard include/config/sparse/rcu/pointer.h) \ |
$(wildcard include/config/trace/branch/profiling.h) \ |
$(wildcard include/config/profile/all/branches.h) \ |
$(wildcard include/config/enable/must/check.h) \ |
$(wildcard include/config/enable/warn/deprecated.h) \ |
include/linux/compiler-gcc.h \ |
$(wildcard include/config/arch/supports/optimized/inlining.h) \ |
$(wildcard include/config/optimize/inlining.h) \ |
include/linux/compiler-gcc4.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/posix_types.h \ |
$(wildcard include/config/x86/32.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/posix_types_32.h \ |
include/asm-generic/posix_types.h \ |
include/linux/init.h \ |
$(wildcard include/config/modules.h) \ |
include/linux/ioport.h \ |
include/linux/list.h \ |
$(wildcard include/config/debug/list.h) \ |
include/linux/poison.h \ |
$(wildcard include/config/illegal/pointer/value.h) \ |
include/linux/const.h \ |
include/linux/errno.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/errno.h \ |
include/asm-generic/errno.h \ |
include/asm-generic/errno-base.h \ |
include/linux/kobject.h \ |
include/linux/sysfs.h \ |
$(wildcard include/config/debug/lock/alloc.h) \ |
$(wildcard include/config/sysfs.h) \ |
include/linux/lockdep.h \ |
$(wildcard include/config/lockdep.h) \ |
$(wildcard include/config/lock/stat.h) \ |
$(wildcard include/config/trace/irqflags.h) \ |
$(wildcard include/config/prove/locking.h) \ |
$(wildcard include/config/prove/rcu.h) \ |
include/linux/kobject_ns.h \ |
include/linux/atomic.h \ |
$(wildcard include/config/arch/has/atomic/or.h) \ |
$(wildcard include/config/generic/atomic64.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/atomic.h \ |
$(wildcard include/config/m386.h) \ |
$(wildcard include/config/x86/64.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/processor.h \ |
$(wildcard include/config/x86/vsmp.h) \ |
$(wildcard include/config/smp.h) \ |
$(wildcard include/config/cc/stackprotector.h) \ |
$(wildcard include/config/paravirt.h) \ |
$(wildcard include/config/m486.h) \ |
$(wildcard include/config/x86/debugctlmsr.h) \ |
$(wildcard include/config/cpu/sup/amd.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/processor-flags.h \ |
$(wildcard include/config/vm86.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/vm86.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ptrace.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ptrace-abi.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/segment.h \ |
$(wildcard include/config/x86/32/lazy/gs.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_32_types.h \ |
$(wildcard include/config/highmem4g.h) \ |
$(wildcard include/config/highmem64g.h) \ |
$(wildcard include/config/page/offset.h) \ |
$(wildcard include/config/x86/pae.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/paravirt_types.h \ |
$(wildcard include/config/x86/local/apic.h) \ |
$(wildcard include/config/paravirt/debug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/desc_defs.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/kmap_types.h \ |
$(wildcard include/config/debug/highmem.h) \ |
include/asm-generic/kmap_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_types.h \ |
$(wildcard include/config/kmemcheck.h) \ |
$(wildcard include/config/compat/vdso.h) \ |
$(wildcard include/config/proc/fs.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32_types.h \ |
$(wildcard include/config/highmem.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable-3level_types.h \ |
include/asm-generic/pgtable-nopud.h \ |
include/asm-generic/ptrace.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/math_emu.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/sigcontext.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/current.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/percpu.h \ |
$(wildcard include/config/x86/64/smp.h) \ |
$(wildcard include/config/x86/cmpxchg64.h) \ |
include/linux/kernel.h \ |
$(wildcard include/config/preempt/voluntary.h) \ |
$(wildcard include/config/debug/atomic/sleep.h) \ |
$(wildcard include/config/ring/buffer.h) \ |
$(wildcard include/config/tracing.h) \ |
$(wildcard include/config/numa.h) \ |
$(wildcard include/config/compaction.h) \ |
$(wildcard include/config/ftrace/mcount/record.h) \ |
include/linux/sysinfo.h \ |
/usr/lib/gcc/i686-linux-gnu/4.6/include/stdarg.h \ |
include/linux/linkage.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/linkage.h \ |
$(wildcard include/config/x86/alignment/16.h) \ |
include/linux/stringify.h \ |
include/linux/bitops.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bitops.h \ |
$(wildcard include/config/x86/cmov.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/alternative.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/asm.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cpufeature.h \ |
$(wildcard include/config/x86/invlpg.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/required-features.h \ |
$(wildcard include/config/x86/minimum/cpu/family.h) \ |
$(wildcard include/config/math/emulation.h) \ |
$(wildcard include/config/x86/use/3dnow.h) \ |
$(wildcard include/config/x86/p6/nop.h) \ |
include/asm-generic/bitops/fls64.h \ |
include/asm-generic/bitops/find.h \ |
$(wildcard include/config/generic/find/first/bit.h) \ |
include/asm-generic/bitops/sched.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/arch_hweight.h \ |
include/asm-generic/bitops/const_hweight.h \ |
include/asm-generic/bitops/le.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/byteorder.h \ |
include/linux/byteorder/little_endian.h \ |
include/linux/swab.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/swab.h \ |
$(wildcard include/config/x86/bswap.h) \ |
include/linux/byteorder/generic.h \ |
include/asm-generic/bitops/ext2-atomic-setbit.h \ |
include/linux/log2.h \ |
$(wildcard include/config/arch/has/ilog2/u32.h) \ |
$(wildcard include/config/arch/has/ilog2/u64.h) \ |
include/linux/typecheck.h \ |
include/linux/printk.h \ |
$(wildcard include/config/printk.h) \ |
$(wildcard include/config/dynamic/debug.h) \ |
include/linux/dynamic_debug.h \ |
include/linux/string.h \ |
$(wildcard include/config/binary/printf.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/string.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/string_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/div64.h \ |
include/asm-generic/percpu.h \ |
$(wildcard include/config/debug/preempt.h) \ |
$(wildcard include/config/have/setup/per/cpu/area.h) \ |
include/linux/threads.h \ |
$(wildcard include/config/nr/cpus.h) \ |
$(wildcard include/config/base/small.h) \ |
include/linux/percpu-defs.h \ |
$(wildcard include/config/debug/force/weak/per/cpu.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_32.h \ |
$(wildcard include/config/hugetlb/page.h) \ |
$(wildcard include/config/debug/virtual.h) \ |
$(wildcard include/config/flatmem.h) \ |
$(wildcard include/config/x86/3dnow.h) \ |
include/asm-generic/memory_model.h \ |
$(wildcard include/config/discontigmem.h) \ |
$(wildcard include/config/sparsemem/vmemmap.h) \ |
$(wildcard include/config/sparsemem.h) \ |
include/asm-generic/getorder.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/msr.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/msr-index.h \ |
include/linux/ioctl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ioctl.h \ |
include/asm-generic/ioctl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cpumask.h \ |
include/linux/cpumask.h \ |
$(wildcard include/config/cpumask/offstack.h) \ |
$(wildcard include/config/hotplug/cpu.h) \ |
$(wildcard include/config/debug/per/cpu/maps.h) \ |
$(wildcard include/config/disable/obsolete/cpumask/functions.h) \ |
include/linux/bitmap.h \ |
include/linux/bug.h \ |
$(wildcard include/config/generic/bug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bug.h \ |
$(wildcard include/config/bug.h) \ |
$(wildcard include/config/debug/bugverbose.h) \ |
include/asm-generic/bug.h \ |
$(wildcard include/config/generic/bug/relative/pointers.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/paravirt.h \ |
$(wildcard include/config/transparent/hugepage.h) \ |
$(wildcard include/config/paravirt/spinlocks.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/nops.h \ |
$(wildcard include/config/mk7.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/special_insns.h \ |
include/linux/personality.h \ |
include/linux/cache.h \ |
$(wildcard include/config/arch/has/cache/line/size.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cache.h \ |
$(wildcard include/config/x86/l1/cache/shift.h) \ |
$(wildcard include/config/x86/internode/cache/shift.h) \ |
include/linux/math64.h \ |
include/linux/err.h \ |
include/linux/irqflags.h \ |
$(wildcard include/config/irqsoff/tracer.h) \ |
$(wildcard include/config/preempt/tracer.h) \ |
$(wildcard include/config/trace/irqflags/support.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irqflags.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cmpxchg.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cmpxchg_32.h \ |
$(wildcard include/config/x86/cmpxchg.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/atomic64_32.h \ |
include/asm-generic/atomic-long.h \ |
include/linux/spinlock.h \ |
$(wildcard include/config/debug/spinlock.h) \ |
$(wildcard include/config/generic/lockbreak.h) \ |
$(wildcard include/config/preempt.h) \ |
include/linux/preempt.h \ |
$(wildcard include/config/preempt/count.h) \ |
$(wildcard include/config/preempt/notifiers.h) \ |
include/linux/thread_info.h \ |
$(wildcard include/config/compat.h) \ |
$(wildcard include/config/debug/stack/usage.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/thread_info.h \ |
$(wildcard include/config/ia32/emulation.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ftrace.h \ |
$(wildcard include/config/function/tracer.h) \ |
$(wildcard include/config/dynamic/ftrace.h) \ |
include/linux/bottom_half.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/barrier.h \ |
$(wildcard include/config/x86/ppro/fence.h) \ |
$(wildcard include/config/x86/oostore.h) \ |
include/linux/spinlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/spinlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/rwlock.h \ |
include/linux/rwlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/spinlock.h \ |
include/linux/rwlock.h \ |
include/linux/spinlock_api_smp.h \ |
$(wildcard include/config/inline/spin/lock.h) \ |
$(wildcard include/config/inline/spin/lock/bh.h) \ |
$(wildcard include/config/inline/spin/lock/irq.h) \ |
$(wildcard include/config/inline/spin/lock/irqsave.h) \ |
$(wildcard include/config/inline/spin/trylock.h) \ |
$(wildcard include/config/inline/spin/trylock/bh.h) \ |
$(wildcard include/config/uninline/spin/unlock.h) \ |
$(wildcard include/config/inline/spin/unlock/bh.h) \ |
$(wildcard include/config/inline/spin/unlock/irq.h) \ |
$(wildcard include/config/inline/spin/unlock/irqrestore.h) \ |
include/linux/rwlock_api_smp.h \ |
$(wildcard include/config/inline/read/lock.h) \ |
$(wildcard include/config/inline/write/lock.h) \ |
$(wildcard include/config/inline/read/lock/bh.h) \ |
$(wildcard include/config/inline/write/lock/bh.h) \ |
$(wildcard include/config/inline/read/lock/irq.h) \ |
$(wildcard include/config/inline/write/lock/irq.h) \ |
$(wildcard include/config/inline/read/lock/irqsave.h) \ |
$(wildcard include/config/inline/write/lock/irqsave.h) \ |
$(wildcard include/config/inline/read/trylock.h) \ |
$(wildcard include/config/inline/write/trylock.h) \ |
$(wildcard include/config/inline/read/unlock.h) \ |
$(wildcard include/config/inline/write/unlock.h) \ |
$(wildcard include/config/inline/read/unlock/bh.h) \ |
$(wildcard include/config/inline/write/unlock/bh.h) \ |
$(wildcard include/config/inline/read/unlock/irq.h) \ |
$(wildcard include/config/inline/write/unlock/irq.h) \ |
$(wildcard include/config/inline/read/unlock/irqrestore.h) \ |
$(wildcard include/config/inline/write/unlock/irqrestore.h) \ |
include/linux/kref.h \ |
include/linux/wait.h \ |
include/linux/device.h \ |
$(wildcard include/config/debug/devres.h) \ |
$(wildcard include/config/cma.h) \ |
$(wildcard include/config/devtmpfs.h) \ |
$(wildcard include/config/sysfs/deprecated.h) \ |
include/linux/klist.h \ |
include/linux/mutex.h \ |
$(wildcard include/config/debug/mutexes.h) \ |
$(wildcard include/config/have/arch/mutex/cpu/relax.h) \ |
include/linux/pm.h \ |
$(wildcard include/config/pm.h) \ |
$(wildcard include/config/pm/sleep.h) \ |
$(wildcard include/config/pm/runtime.h) \ |
$(wildcard include/config/pm/clk.h) \ |
$(wildcard include/config/pm/generic/domains.h) \ |
include/linux/workqueue.h \ |
$(wildcard include/config/debug/objects/work.h) \ |
$(wildcard include/config/freezer.h) \ |
include/linux/timer.h \ |
$(wildcard include/config/timer/stats.h) \ |
$(wildcard include/config/debug/objects/timers.h) \ |
include/linux/ktime.h \ |
$(wildcard include/config/ktime/scalar.h) \ |
include/linux/time.h \ |
$(wildcard include/config/arch/uses/gettimeoffset.h) \ |
include/linux/seqlock.h \ |
include/linux/jiffies.h \ |
include/linux/timex.h \ |
include/linux/param.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/param.h \ |
include/asm-generic/param.h \ |
$(wildcard include/config/hz.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/timex.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/tsc.h \ |
$(wildcard include/config/x86/tsc.h) \ |
include/linux/debugobjects.h \ |
$(wildcard include/config/debug/objects.h) \ |
$(wildcard include/config/debug/objects/free.h) \ |
include/linux/completion.h \ |
include/linux/ratelimit.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/device.h \ |
$(wildcard include/config/acpi.h) \ |
$(wildcard include/config/x86/dev/dma/ops.h) \ |
$(wildcard include/config/intel/iommu.h) \ |
$(wildcard include/config/amd/iommu.h) \ |
include/linux/pm_wakeup.h \ |
include/linux/io.h \ |
$(wildcard include/config/mmu.h) \ |
$(wildcard include/config/has/ioport.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/io.h \ |
$(wildcard include/config/xen.h) \ |
include/asm-generic/iomap.h \ |
$(wildcard include/config/generic/iomap.h) \ |
include/asm-generic/pci_iomap.h \ |
$(wildcard include/config/no/generic/pci/ioport/map.h) \ |
$(wildcard include/config/generic/pci/iomap.h) \ |
include/linux/vmalloc.h \ |
include/xen/xen.h \ |
$(wildcard include/config/xen/dom0.h) \ |
include/xen/interface/xen.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/interface.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/interface_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pvclock-abi.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/hypervisor.h \ |
include/linux/irqreturn.h \ |
include/linux/pci_ids.h \ |
include/linux/pci-dma.h \ |
include/linux/dmapool.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/scatterlist.h \ |
include/asm-generic/scatterlist.h \ |
$(wildcard include/config/debug/sg.h) \ |
$(wildcard include/config/need/sg/dma/length.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pci.h \ |
include/linux/mm.h \ |
$(wildcard include/config/sysctl.h) \ |
$(wildcard include/config/stack/growsup.h) \ |
$(wildcard include/config/ia64.h) \ |
$(wildcard include/config/ksm.h) \ |
$(wildcard include/config/have/memblock/node/map.h) \ |
$(wildcard include/config/have/arch/early/pfn/to/nid.h) \ |
$(wildcard include/config/debug/pagealloc.h) \ |
$(wildcard include/config/hibernation.h) \ |
$(wildcard include/config/hugetlbfs.h) \ |
include/linux/gfp.h \ |
$(wildcard include/config/zone/dma.h) \ |
$(wildcard include/config/zone/dma32.h) \ |
include/linux/mmzone.h \ |
$(wildcard include/config/force/max/zoneorder.h) \ |
$(wildcard include/config/cgroup/mem/res/ctlr.h) \ |
$(wildcard include/config/memory/hotplug.h) \ |
$(wildcard include/config/flat/node/mem/map.h) \ |
$(wildcard include/config/no/bootmem.h) \ |
$(wildcard include/config/have/memory/present.h) \ |
$(wildcard include/config/have/memoryless/nodes.h) \ |
$(wildcard include/config/need/node/memmap/size.h) \ |
$(wildcard include/config/have/memblock/node.h) \ |
$(wildcard include/config/need/multiple/nodes.h) \ |
$(wildcard include/config/sparsemem/extreme.h) \ |
$(wildcard include/config/have/arch/pfn/valid.h) \ |
$(wildcard include/config/nodes/span/other/nodes.h) \ |
$(wildcard include/config/holes/in/zone.h) \ |
$(wildcard include/config/arch/has/holes/memorymodel.h) \ |
include/linux/numa.h \ |
$(wildcard include/config/nodes/shift.h) \ |
include/linux/nodemask.h \ |
include/linux/pageblock-flags.h \ |
$(wildcard include/config/hugetlb/page/size/variable.h) \ |
include/generated/bounds.h \ |
include/linux/memory_hotplug.h \ |
$(wildcard include/config/memory/hotremove.h) \ |
$(wildcard include/config/have/arch/nodedata/extension.h) \ |
include/linux/notifier.h \ |
include/linux/rwsem.h \ |
$(wildcard include/config/rwsem/generic/spinlock.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/rwsem.h \ |
include/linux/srcu.h \ |
include/linux/rcupdate.h \ |
$(wildcard include/config/rcu/torture/test.h) \ |
$(wildcard include/config/tree/rcu.h) \ |
$(wildcard include/config/tree/preempt/rcu.h) \ |
$(wildcard include/config/rcu/trace.h) \ |
$(wildcard include/config/preempt/rcu.h) \ |
$(wildcard include/config/tiny/rcu.h) \ |
$(wildcard include/config/tiny/preempt/rcu.h) \ |
$(wildcard include/config/debug/objects/rcu/head.h) \ |
$(wildcard include/config/preempt/rt.h) \ |
include/linux/rcutree.h \ |
include/linux/topology.h \ |
$(wildcard include/config/sched/smt.h) \ |
$(wildcard include/config/sched/mc.h) \ |
$(wildcard include/config/sched/book.h) \ |
$(wildcard include/config/use/percpu/numa/node/id.h) \ |
include/linux/smp.h \ |
$(wildcard include/config/use/generic/smp/helpers.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/smp.h \ |
$(wildcard include/config/x86/io/apic.h) \ |
$(wildcard include/config/x86/32/smp.h) \ |
$(wildcard include/config/debug/nmi/selftest.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mpspec.h \ |
$(wildcard include/config/x86/numaq.h) \ |
$(wildcard include/config/eisa.h) \ |
$(wildcard include/config/x86/mpparse.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mpspec_def.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/x86_init.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bootparam.h \ |
include/linux/screen_info.h \ |
include/linux/apm_bios.h \ |
include/linux/edd.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/e820.h \ |
$(wildcard include/config/efi.h) \ |
$(wildcard include/config/intel/txt.h) \ |
$(wildcard include/config/memtest.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ist.h \ |
include/video/edid.h \ |
$(wildcard include/config/x86.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/apicdef.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/apic.h \ |
$(wildcard include/config/x86/x2apic.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/fixmap.h \ |
$(wildcard include/config/provide/ohci1394/dma/init.h) \ |
$(wildcard include/config/x86/visws/apic.h) \ |
$(wildcard include/config/x86/f00f/bug.h) \ |
$(wildcard include/config/x86/cyclone/timer.h) \ |
$(wildcard include/config/x86/intel/mid.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/acpi.h \ |
$(wildcard include/config/acpi/numa.h) \ |
include/acpi/pdc_intel.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/numa.h \ |
$(wildcard include/config/numa/emu.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/topology.h \ |
$(wildcard include/config/x86/ht.h) \ |
include/asm-generic/topology.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/numa_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mmu.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/realmode.h \ |
$(wildcard include/config/acpi/sleep.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/io_apic.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irq_vectors.h \ |
include/linux/percpu.h \ |
$(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ |
$(wildcard include/config/need/per/cpu/page/first/chunk.h) \ |
include/linux/pfn.h \ |
include/linux/mmdebug.h \ |
$(wildcard include/config/debug/vm.h) \ |
include/linux/rbtree.h \ |
include/linux/prio_tree.h \ |
include/linux/debug_locks.h \ |
$(wildcard include/config/debug/locking/api/selftests.h) \ |
include/linux/mm_types.h \ |
$(wildcard include/config/split/ptlock/cpus.h) \ |
$(wildcard include/config/have/cmpxchg/double.h) \ |
$(wildcard include/config/have/aligned/struct/page.h) \ |
$(wildcard include/config/want/page/debug/flags.h) \ |
$(wildcard include/config/aio.h) \ |
$(wildcard include/config/mm/owner.h) \ |
$(wildcard include/config/mmu/notifier.h) \ |
include/linux/auxvec.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/auxvec.h \ |
include/linux/page-debug-flags.h \ |
$(wildcard include/config/page/poisoning.h) \ |
$(wildcard include/config/page/guard.h) \ |
$(wildcard include/config/page/debug/something/else.h) \ |
include/linux/uprobes.h \ |
$(wildcard include/config/arch/supports/uprobes.h) \ |
$(wildcard include/config/uprobes.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/uprobes.h \ |
include/linux/range.h \ |
include/linux/bit_spinlock.h \ |
include/linux/shrinker.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32.h \ |
$(wildcard include/config/highpte.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable-3level.h \ |
include/asm-generic/pgtable.h \ |
include/linux/page-flags.h \ |
$(wildcard include/config/pageflags/extended.h) \ |
$(wildcard include/config/arch/uses/pg/uncached.h) \ |
$(wildcard include/config/memory/failure.h) \ |
$(wildcard include/config/swap.h) \ |
$(wildcard include/config/s390.h) \ |
include/linux/huge_mm.h \ |
include/linux/vmstat.h \ |
$(wildcard include/config/vm/event/counters.h) \ |
include/linux/vm_event_item.h \ |
include/linux/slab.h \ |
$(wildcard include/config/slab/debug.h) \ |
$(wildcard include/config/failslab.h) \ |
$(wildcard include/config/slub.h) \ |
$(wildcard include/config/slob.h) \ |
$(wildcard include/config/debug/slab.h) \ |
$(wildcard include/config/slab.h) \ |
include/linux/slub_def.h \ |
$(wildcard include/config/slub/stats.h) \ |
$(wildcard include/config/slub/debug.h) \ |
include/linux/kmemleak.h \ |
$(wildcard include/config/debug/kmemleak.h) \ |
include/asm-generic/pci-dma-compat.h \ |
include/linux/dma-mapping.h \ |
$(wildcard include/config/has/dma.h) \ |
$(wildcard include/config/arch/has/dma/set/coherent/mask.h) \ |
$(wildcard include/config/have/dma/attrs.h) \ |
$(wildcard include/config/need/dma/map/state.h) \ |
include/linux/dma-attrs.h \ |
include/linux/dma-direction.h \ |
include/linux/scatterlist.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/dma-mapping.h \ |
$(wildcard include/config/isa.h) \ |
$(wildcard include/config/x86/dma/remap.h) \ |
include/linux/kmemcheck.h \ |
include/linux/dma-debug.h \ |
$(wildcard include/config/dma/api/debug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/swiotlb.h \ |
$(wildcard include/config/swiotlb.h) \ |
include/linux/swiotlb.h \ |
include/asm-generic/dma-coherent.h \ |
$(wildcard include/config/have/generic/dma/coherent.h) \ |
include/linux/dma-contiguous.h \ |
$(wildcard include/config/cma/areas.h) \ |
include/asm-generic/dma-mapping-common.h \ |
include/asm-generic/pci.h \ |
/home/f9daq/pcivme-3.2/driver/./askpci.h \ |
/home/f9daq/pcivme-3.2/driver/./main.h \ |
/home/f9daq/pcivme-3.2/driver/./askpci.o: $(deps_/home/f9daq/pcivme-3.2/driver/./askpci.o) |
$(deps_/home/f9daq/pcivme-3.2/driver/./askpci.o): |
/pcivme-3.2/driver/fops.c |
---|
0,0 → 1,1047 |
//**************************************************************************** |
// Copyright (C) 2000-2004 ARW Elektronik Germany |
// |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// fops.c -- the file operations module for the PCIVME PCI to VME Interface |
// |
// $Log: fops.c,v $ |
// Revision 1.11 2005/03/01 10:56:12 klaus |
// removed warnings with gcc 3.3.3 |
// |
// Revision 1.10 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.9 2003/06/27 17:25:52 klaus |
// incomplete try to get mmap() with nopage() running for automatic page switch |
// |
// Revision 1.8 2002/10/20 18:06:51 klaus |
// changed error handling |
// |
// Revision 1.7 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.6 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.5 2002/10/17 19:05:03 klaus |
// VME access is working through test to lib to driver |
// |
//**************************************************************************** |
/*--- INCLUDES -----------------------------------------------------------------------------------*/ |
#include "common.h" /* must be the first include */ |
#include <linux/kernel.h> /* printk() */ |
#include <linux/module.h> /* only here ?cause of MAJOR ... */ |
#include <linux/pci.h> |
#include <linux/list.h> |
#include <asm/errno.h> |
#include <asm/types.h> |
#include <asm/uaccess.h> |
#include <linux/sched.h> |
#include <linux/fs.h> |
#if HAVE_UNLOCKED_IOCTL |
#include <linux/mutex.h> |
#else |
#include <linux/smp_lock.h> |
#endif |
#include "fops.h" |
#include "plx9050.h" |
#include "pcivme.h" /* the common ioctl commands and structures between driver and application */ |
#include "main.h" |
#include "askpci.h" |
#include "pciif.h" |
#include "vic.h" |
#include "vme.h" |
/*--- DEFINES ------------------------------------------------------------------------------------*/ |
#ifndef MINOR |
#define MINOR(x) minor(x) // since 2.5.? |
#endif |
static PCIVME_INIT_ELEMENT init_element[] = |
{{LCR, WORD_ACCESS, PLX9050_INTCSR, DISABLE_PCIADA_IRQS}, // disable interrupts |
{LCR, WORD_ACCESS, PLX9050_CNTRL, RELEASE_VMEMM}, // enable interface |
{VIC, BYTE_ACCESS, VIICR, 0xf8+1}, // VIICR |
{VIC, BYTE_ACCESS, VICR1, 0x78+1}, // VICR1 |
{VIC, BYTE_ACCESS, VICR2, 0x78+2}, |
{VIC, BYTE_ACCESS, VICR3, 0x78+3}, |
{VIC, BYTE_ACCESS, VICR4, 0x78+4}, |
{VIC, BYTE_ACCESS, VICR5, 0x78+5}, |
{VIC, BYTE_ACCESS, VICR6, 0x78+6}, |
{VIC, BYTE_ACCESS, VICR7, 0x78+7}, // VICR7 |
{VIC, BYTE_ACCESS, DSICR, 0xf8+0}, // DSICR |
{VIC, BYTE_ACCESS, LICR1, 0xf8+1}, // LICR1 |
{VIC, BYTE_ACCESS, LICR2, 0xf8+2}, |
{VIC, BYTE_ACCESS, LICR3, 0xf8+3}, |
{VIC, BYTE_ACCESS, LICR4, 0xf8+4}, |
{VIC, BYTE_ACCESS, LICR5, 0xf8+5}, |
{VIC, BYTE_ACCESS, LICR6, 0x38+6}, |
{VIC, BYTE_ACCESS, LICR7, 0x38+7}, // LICR7 |
{VIC, BYTE_ACCESS, ICGSICR, 0xf8+2}, // ICGS |
{VIC, BYTE_ACCESS, ICMSICR, 0xf8+3}, // ICMS |
{VIC, BYTE_ACCESS, EGICR, 0xf8+6}, // EGICR |
{VIC, BYTE_ACCESS, ICGSVBR, 0x08}, // ICGS-IVBR (!) |
{VIC, BYTE_ACCESS, ICMSVBR, 0x0c}, // ICMS-IVBR (!) |
{VIC, BYTE_ACCESS, LIVBR, 0x00}, // LIVBR (!) |
{VIC, BYTE_ACCESS, EGIVBR, 0x10}, // EGIVBR (!) |
{VIC, BYTE_ACCESS, ICSR, 0x00}, // ICSR |
{VIC, BYTE_ACCESS, ICR0, 0x00}, // ICR0 |
{VIC, BYTE_ACCESS, ICR1, 0x00}, |
{VIC, BYTE_ACCESS, ICR2, 0x00}, |
{VIC, BYTE_ACCESS, ICR3, 0x00}, |
{VIC, BYTE_ACCESS, ICR4, 0x00}, // ICR4 |
{VIC, BYTE_ACCESS, VIRSR, 0xfe}, // VIRSR |
{VIC, BYTE_ACCESS, VIVR1, 0x0f}, // VIVR1 |
{VIC, BYTE_ACCESS, VIVR2, 0x0f}, |
{VIC, BYTE_ACCESS, VIVR3, 0x0f}, |
{VIC, BYTE_ACCESS, VIVR4, 0x0f}, |
{VIC, BYTE_ACCESS, VIVR5, 0x0f}, |
{VIC, BYTE_ACCESS, VIVR6, 0x0f}, |
{VIC, BYTE_ACCESS, VIVR7, 0x0f}, // VIVR7 |
{VIC, BYTE_ACCESS, TTR, 0x3c}, // TTR |
{VIC, BYTE_ACCESS, ARCR, 0x40}, // ARCR |
{VIC, BYTE_ACCESS, AMSR, 0x29}, // AMSR |
{VIC, BYTE_ACCESS, RCR, 0x00}, // RCR |
{IFR, LONG_ACCESS, (u16)ADRHL, 0xF0F0F0F0}, // ADR-H, ADR-L |
{IFR, WORD_ACCESS, (u16)CSR , 0x0000}, // Contr-Reg |
{VIC, BYTE_ACCESS, ICR7, 0x80}, // ICR7 |
{LCR, WORD_ACCESS, PLX9050_INTCSR, DISABLE_PCIADA_IRQS}, // disable interrupts |
{STOP, WORD_ACCESS, 0, 0}}; |
static PCIVME_INIT_ELEMENT deinit_element_pre[] = |
{{VIC, BYTE_ACCESS, ICR7, 0x00}, // ICR7 - sysfail |
{LCR, WORD_ACCESS, PLX9050_INTCSR, DISABLE_PCIADA_IRQS}, // disable interrupts |
{STOP, WORD_ACCESS, 0, 0}}; |
static PCIVME_INIT_ELEMENT deinit_element_post[] = |
{{LCR, WORD_ACCESS, PLX9050_CNTRL, INHIBIT_VMEMM}, // disable interface |
{STOP, WORD_ACCESS, 0, 0}}; |
/*--- EXTERNALS ----------------------------------------------------------------------------------*/ |
/*--- TYPEDEFS -----------------------------------------------------------------------------------*/ |
/*--- FUNCTIONS ----------------------------------------------------------------------------------*/ |
static inline void switch_VMEMM_on(DEVICE_OBJ *pd) |
{ |
writew(RELEASE_VMEMM, (volatile void *) (pd->pLCR + PLX9050_CNTRL)); /* enable access */ |
} |
static inline void switch_VMEMM_off(DEVICE_OBJ *pd) |
{ |
writew(INHIBIT_VMEMM, (volatile void *) (pd->pLCR + PLX9050_CNTRL)); /* enable access */ |
} |
static inline void setPageAddress(DEVICE_OBJ *pd, u32 newPageAddress) |
{ |
PRINTK(KERN_DEBUG "%s : setPageAddress(0x%08x)\n", DEVICE_NAME, newPageAddress); |
writel(newPageAddress, (volatile void *) pd->pAdrReg); |
pd->dwCurrentPageAddress = newPageAddress; |
} |
static inline void setModifier(DEVICE_OBJ *pd, u8 newModifier) |
{ |
PRINTK(KERN_DEBUG "%s : setModifier(0x%02x)\n", DEVICE_NAME, newModifier); |
writeb(newModifier, (volatile void *) pd->pAdrMod); |
pd->bCurrentModifier = newModifier; |
} |
/* read and write functions -----------------------------------------------------------------------*/ |
static inline u8 *increment8(void **pvBuffer) |
{ |
u8 *tmp = (u8*)*pvBuffer; |
*pvBuffer += sizeof(u8); |
return tmp; |
} |
static inline u16 *increment16(void **pvBuffer) |
{ |
u16 *tmp = (u16*)*pvBuffer; |
*pvBuffer += sizeof(u16); |
return tmp; |
} |
static inline u32 *increment32(void **pvBuffer) |
{ |
u32 *tmp = (u32*)*pvBuffer; |
*pvBuffer += sizeof(u32); |
return tmp; |
} |
static void readByte(DEVICE_OBJ *pd, void **pvBuffer, u32 dwLocalAddressInPage) |
{ |
u8 tmp; |
tmp = readb((const volatile void *) (pd->pVME + dwLocalAddressInPage)); |
__put_user(tmp, increment8(pvBuffer)); |
} |
static void writeByte(DEVICE_OBJ *pd, u32 dwLocalAddressInPage, void **pvBuffer) |
{ |
u8 tmp; |
__get_user(tmp, increment8(pvBuffer)); |
writeb(tmp, (volatile void *) (pd->pVME + dwLocalAddressInPage )); |
} |
static void readWord(DEVICE_OBJ *pd, void **pvBuffer, u32 dwLocalAddressInPage) |
{ |
u16 tmp; |
tmp = readw((const volatile void *) (pd->pVME + dwLocalAddressInPage)); |
__put_user(tmp, increment16(pvBuffer)); |
} |
static void writeWord(DEVICE_OBJ *pd, u32 dwLocalAddressInPage, void **pvBuffer) |
{ |
u16 tmp; |
__get_user(tmp, increment16(pvBuffer)); |
writew(tmp, (volatile void *) ( pd->pVME + dwLocalAddressInPage )); |
} |
static void readLong(DEVICE_OBJ *pd, void **pvBuffer, u32 dwLocalAddressInPage) |
{ |
u32 tmp; |
tmp = readl((const volatile void *) (pd->pVME + dwLocalAddressInPage)); |
__put_user(tmp, increment32(pvBuffer)); |
} |
static void writeLong(DEVICE_OBJ *pd, u32 dwLocalAddressInPage, void **pvBuffer) |
{ |
u32 tmp; |
__get_user(tmp, increment32(pvBuffer)); |
writel(tmp, (volatile void *) (pd->pVME + dwLocalAddressInPage)); |
} |
/* test alignment functions -----------------------------------------------------------------------*/ |
static int MisalignmentForByteAccess(loff_t offset) |
{ |
return 0; |
} |
static int MisalignmentForWordAccess(loff_t offset) |
{ |
return(offset & 1); |
} |
static int MisalignmentForLongAccess(loff_t offset) |
{ |
return(offset & 3); |
} |
// helper functions -------------------------------------------------------------------------------- |
int check_command(const PCIVME_INIT_ELEMENT *psInitElement) |
{ |
u16 range; |
u16 access_size; |
// PRINTK(KERN_DEBUG "%s : check_command()\n", DEVICE_NAME); |
switch (psInitElement->bDestination) |
{ |
case LCR: |
range = 0x54; |
break; |
case IFR: |
range = 0x0c; |
break; |
case VIC: |
range = 0xe4; |
if ((psInitElement->wOffset & 3) != 3) |
return -EINVAL; |
break; |
default: |
return -EINVAL; |
break; |
} |
// check alignment and allowed address range |
switch (psInitElement->bAccessType) |
{ |
case LONG_ACCESS: |
if (psInitElement->wOffset & 3) |
return -EINVAL; |
access_size = sizeof(u32); |
break; |
case WORD_ACCESS: |
if (psInitElement->wOffset & 1) |
return -EINVAL; |
access_size = sizeof(u16); |
break; |
case BYTE_ACCESS: |
access_size = sizeof(u8); |
break; |
default : |
return -EINVAL; |
break; |
} |
if ((psInitElement->wOffset + access_size) > range) |
return -EINVAL; // ignore it |
return 0; |
} |
static int CmdMachine(DEVICE_OBJ *pd, const PCIVME_INIT_ELEMENT *psInitElement) |
{ |
u32 adr; |
int err; |
PRINTK(KERN_DEBUG "%s : CmdMachine()\n", DEVICE_NAME); |
// loop through the init (or deinit) list |
while (psInitElement->bDestination != STOP) |
{ |
err = check_command(psInitElement); |
if (!err) |
{ |
switch (psInitElement->bDestination) |
{ |
case LCR: |
adr = pd->pLCR; |
break; |
case VIC: |
adr = pd->pCtl + VICBASE; |
break; |
case IFR: |
adr = pd->pCtl + CSR; |
break; |
default: |
return -EINVAL; |
} |
switch (psInitElement->bAccessType) |
{ |
case LONG_ACCESS: |
writel(psInitElement->dwValue, (volatile void *) (adr + psInitElement->wOffset)); |
break; |
case WORD_ACCESS: |
writew((u16)psInitElement->dwValue, (volatile void *) (adr + psInitElement->wOffset)); |
break; |
case BYTE_ACCESS: |
writeb((u8)psInitElement->dwValue, (volatile void *) (adr + psInitElement->wOffset)); |
break; |
default: |
return -EINVAL; |
} |
} |
else |
return err; |
psInitElement++; |
} |
return 0; |
} |
// all ioctls -------------------------------------------------------------------------------------- |
static int init_hardware(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_INIT_COMMAND *init) |
{ |
int err; |
PCIVME_INIT_ELEMENT *element = init->sVie; |
PRINTK(KERN_DEBUG "%s : init_hardware()\n", DEVICE_NAME); |
err = CmdMachine(pd, element); |
if (err) |
{ |
PRINTK(KERN_DEBUG "%s : init failed with err = %d!\n", DEVICE_NAME, err); |
return err; |
} |
// sync storage with hardware |
pd->bCurrentModifier = readb((const volatile void *) pd->pAdrMod) & 0x3f; |
pd->dwCurrentPageAddress = readl((const volatile void *) pd->pAdrReg) & HI_ADDRESS_MASK; |
return 0; |
} |
static int deinit_hardware(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_INIT_COMMAND *deinit) |
{ |
int err; |
PCIVME_INIT_ELEMENT *element = deinit->sVie; |
PRINTK(KERN_DEBUG "%s : deinit_hardware()\n", DEVICE_NAME); |
err = CmdMachine(pd, deinit_element_pre); |
if (err) |
goto fail; |
err = CmdMachine(pd, element); |
if (err) |
goto fail; |
err = CmdMachine(pd, deinit_element_post); |
if (err) |
goto fail; |
return 0; |
fail: |
return err; |
} |
static int access_command(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_ACCESS_COMMAND *cmd) |
{ |
PRINTK(KERN_DEBUG "%s : access_command()\n", DEVICE_NAME); |
pp->bModifier = cmd->bModifier; |
pp->bAccessType = cmd->bAccessType; |
pp->bIncrement = cmd->bIncrement; |
switch (pp->bAccessType) |
{ |
case BYTE_ACCESS: |
pp->read = readByte; |
pp->write = writeByte; |
pp->AlignmentCheck = MisalignmentForByteAccess; |
break; |
case WORD_ACCESS: |
pp->read = readWord; |
pp->write = writeWord; |
pp->AlignmentCheck = MisalignmentForWordAccess; |
break; |
case LONG_ACCESS: |
pp->read = readLong; |
pp->write = writeLong; |
pp->AlignmentCheck = MisalignmentForLongAccess; |
break; |
default: |
return -EINVAL; |
} |
return 0; |
} |
static int get_static_status(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_STATIC_STATUS *static_status) |
{ |
PRINTK(KERN_DEBUG "%s : get_static_status()\n", DEVICE_NAME); |
static_status->bConnected = pd->bConnected; |
static_status->cModuleNumber = pd->cModuleNumber; |
static_status->cFPGAVersion = pd->cFPGAVersion; |
static_status->cSystemController = pd->cSystemController; |
static_status->cWordMode = pd->cWordMode; |
return 0; |
} |
static int get_dynamic_status(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_DYNAMIC_STATUS *dynamic_status) |
{ |
u16 cntrl = readw((const volatile void *) pd->pPCIADACntrl); |
u16 intCSR = readw((const volatile void *) pd->pPCIADAIntCSR); |
PRINTK(KERN_DEBUG "%s : get_dynamic_status()\n", DEVICE_NAME); |
dynamic_status->bConnected = (cntrl & 0x0800) ? 1 : 0; |
dynamic_status->bPCIADAIrq = (intCSR & 0x0020) ? 1 : 0; |
dynamic_status->bVMEMMIrq = (intCSR & 0x0004) ? 1 : 0; |
return 0; |
} |
static int read_vector_polling(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_VECTOR_LEVEL *vector) |
{ |
u16 cntrl = readw((const volatile void *) pd->pPCIADACntrl); |
u16 intCSR = readw((const volatile void *) pd->pPCIADAIntCSR); |
PRINTK(KERN_DEBUG "%s : read_vector()\n", DEVICE_NAME); |
vector->dwStatusID = 0; |
vector->bLevel = 0; |
vector->bPCIADAIrq = 0; |
if (intCSR & 0x20) // check for PCIADA interrupt |
{ |
vector->bPCIADAIrq = 1; |
vector->dwStatusID = 1; // force for PCIADA irqs |
writew(cntrl & ~0x0100, (volatile void *) pd->pPCIADACntrl); // clear pending PCIADA irq |
writew(cntrl, (volatile void *) pd->pPCIADACntrl); |
} |
else |
{ |
if ((cntrl & 0x0980) == 0x0980) // check if VMEMM is connected and ready |
{ |
vector->bLevel = (u8)readw((const volatile void *) ( pd->pCtl + VICRES )); |
if (vector->bLevel & 1) |
{ |
if (vector->bLevel != 1) |
vector->dwStatusID = (u32)readb((const volatile void *) (pd->pCtl + VECBASE + vector->bLevel)); |
vector->bLevel >>= 1; |
} |
} |
} |
return 0; |
} |
static int read_vector_blocking(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_VECTOR_LEVEL *vector, struct file *pFile) |
{ |
int error; |
vector->dwStatusID = 0; |
vector->bLevel = 0; |
vector->bPCIADAIrq = 0; |
// support nonblocking read if requested |
if ((pFile->f_flags & O_NONBLOCK) && (!pd->wIrqStatus)) |
return -EAGAIN; |
// sleep until data are available |
if ((error = wait_event_interruptible(pd->event_queue, (pd->wIrqStatus)))) |
return error; |
error = read_vector_polling(pp, pd, vector); |
pd->wIrqStatus = 0; // clear the status since it is read |
return error; |
} |
static int control_interrupts(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_IRQ_CONTROL *irq_control) |
{ |
u16 intCSR = readw((const volatile void *) pd->pPCIADAIntCSR); |
u8 ret = (intCSR & 0x40) ? 1 : 0; |
PRINTK(KERN_DEBUG "%s : control_interrupts()\n", DEVICE_NAME); |
if (irq_control->bEnable) |
writew(intCSR | 0x40, (volatile void *) pd->pPCIADAIntCSR); |
else |
writew(intCSR & ~0x40, (volatile void *) pd->pPCIADAIntCSR); |
// return the switch before set |
irq_control->bEnable = ret; |
return 0; |
} |
static int VME_TAS(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_TAS_STRUCT *tas_cmd) |
{ |
u32 access_adr = pd->pVME + (tas_cmd->dwAddress & LO_ADDRESS_MASK); // make low part of address |
u8 data; |
// save old contents |
u32 old_address = readl((const volatile void *) pd->pAdrReg); |
u16 old_CSR = readw((const volatile void *) pd->pCSR); |
u16 intCSR = readw((const volatile void *) pd->pPCIADAIntCSR); |
pd->bCurrentModifier = readb((const volatile void *) pd->pAdrMod) & 0x3f; |
PRINTK(KERN_DEBUG "%s : VME_TAS()\n", DEVICE_NAME); |
// set new contents |
writew(DISABLE_PCIADA_IRQS, (volatile void *) pd->pPCIADAIntCSR); |
writeb((u8)tas_cmd->bModifier & 0x3f, (volatile void *) pd->pAdrMod); |
writel(tas_cmd->dwAddress, (volatile void *) pd->pAdrReg); |
writew(old_CSR | FLAG_RMC, (volatile void *) pd->pCSR); |
// do the read - modify - write |
data = readb((const volatile void *) access_adr); |
writeb(tas_cmd->bContent, (volatile void *) access_adr); |
// restore old contents |
writeb(pd->bCurrentModifier, (volatile void *) pd->pAdrMod); |
writew(old_CSR, (volatile void *) pd->pCSR); |
writel(old_address, (volatile void *) pd->pAdrReg); |
writew(intCSR, (volatile void *) pd->pPCIADAIntCSR); |
// get back read data |
tas_cmd->bContent = data; |
return 0; |
} |
static int VMEMM_RESET(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_RESET_COMMAND *reset_cmd) |
{ |
u16 cntrl = readw((const volatile void *) pd->pPCIADACntrl); |
u16 intCSR = readw((const volatile void *) pd->pPCIADAIntCSR); |
int status = 0; |
PRINTK(KERN_DEBUG "%s : VMEMM_RESET()\n", DEVICE_NAME); |
// am I connected and switched on?? |
if ((cntrl & 0x0980) == 0x0980) |
{ |
// do command |
switch (reset_cmd->bCommand) |
{ |
case POLL_RESET_CMD: |
break; |
case VME_RESET_CMD: |
writeb(0, (volatile void *) pd->pAdrMod); |
writeb(0xf0, (volatile void *) (pd->pCtl + VICBASE + SRR)); // make VME reset |
break; |
case LOCAL_RESET_CMD: |
writeb(0, (volatile void *) pd->pAdrMod); |
writew(LOCAL_RESET, (volatile void *) (pd->pCtl + VICRES)); |
break; |
case GLOBAL_RESET_CMD: |
writeb(0, (volatile void *) pd->pAdrMod); |
writew(GLOBAL_RESET, (volatile void *) (pd->pCtl + VICRES)); |
break; |
default: status = -EINVAL; |
} |
// inhibit PCIADA generated irqs |
writew(DISABLE_PCIADA_IRQS, (volatile void *) pd->pPCIADAIntCSR); |
// always poll reset status - access will sometimes generate PCIADA #2 interrupt |
reset_cmd->bResult = readb((const volatile void *) pd->pAdrMod); |
// reset any pending PCIADA interrupt #2 |
writew(cntrl & ~0x0100, (volatile void *) pd->pPCIADACntrl); |
writew(cntrl , (volatile void *) pd->pPCIADACntrl); |
// restore IRQStatus |
writew(intCSR , (volatile void *) pd->pPCIADAIntCSR); |
} |
else |
status = -EBUSY; |
// sync storage with hardware |
pd->bCurrentModifier = readb((const volatile void *) pd->pAdrMod) & 0x3f; |
return status; |
} |
static int access_VIC68A(PATH_OBJ *pp, DEVICE_OBJ *pd, PCIVME_VIC68A_ACTION *action) |
{ |
int nStatus = 0; |
PRINTK(KERN_DEBUG "%s : access_VIC68A()\n", DEVICE_NAME); |
if ((action->wRegisterAddress <= SRR) && ((action->wRegisterAddress & 0x03) == 3)) |
{ |
u32 dwAddress; |
u8 bByte = 0; |
dwAddress = (pd->pCtl + VICBASE + action->wRegisterAddress); |
switch (action->bAccessMode) |
{ |
case VIC68A_WRITE_ONLY: |
writeb(action->bContent, (volatile void *) dwAddress); |
break; |
case VIC68A_WRITE: |
writeb(action->bContent, (volatile void *) dwAddress); |
action->bContent = readb((const volatile void *) dwAddress); |
break; |
case VIC68A_OR: |
bByte = readb((const volatile void *) dwAddress); |
bByte |= action->bContent; |
writeb(bByte, (volatile void *) dwAddress); |
action->bContent = readb((const volatile void *) dwAddress); |
break; |
case VIC68A_AND: |
bByte = readb((const volatile void *) dwAddress); |
bByte &= action->bContent; |
writeb(bByte, (volatile void *) dwAddress); |
action->bContent = readb((const volatile void *) dwAddress); |
break; |
case VIC68A_READ: |
action->bContent = readb((const volatile void *) dwAddress); |
break; |
default: |
nStatus = -EINVAL; |
} |
} |
else |
nStatus = -EINVAL; |
return nStatus; |
} |
// the dispatcher ---------------------------------------------------------------------------------- |
int pcivme_ioctl(struct inode *pInode, struct file *pFile, unsigned int cmd, unsigned long arg) |
{ |
PATH_OBJ *pp = (PATH_OBJ *)pFile->private_data; |
DEVICE_OBJ *pd = pp->pDo; |
int err = 1; |
PRINTK(KERN_DEBUG "%s : pcivme_ioctl(0x%08x), size = %d\n", DEVICE_NAME, cmd, _IOC_SIZE(cmd)); |
if (_IOC_TYPE(cmd) != PCIVME_MAGIC) |
return -EINVAL; |
// check for accessible user buffer |
if (_IOC_DIR(cmd) & _IOC_READ) |
err = !access_ok(VERIFY_WRITE, (void *)arg, _IOC_SIZE(cmd)); |
if (_IOC_DIR(cmd) & _IOC_WRITE) |
err = !access_ok(VERIFY_READ, (void *)arg, _IOC_SIZE(cmd)); |
if (err) |
return -EFAULT; |
switch (_IOC_NR(cmd)) |
{ |
case _IOC_NR(PCIVME_READ_VECTOR_BLOCK): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_VECTOR_LEVEL)) |
return -EINVAL; |
return read_vector_blocking(pp, pd, (PCIVME_VECTOR_LEVEL *)arg, pFile); |
case _IOC_NR(PCIVME_READ_VECTOR_POLL): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_VECTOR_LEVEL)) |
return -EINVAL; |
return read_vector_polling(pp, pd, (PCIVME_VECTOR_LEVEL *)arg); |
case _IOC_NR(PCIVME_CONTROL_INTERRUPTS): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_IRQ_CONTROL)) |
return -EINVAL; |
return control_interrupts(pp, pd, (PCIVME_IRQ_CONTROL *)arg); |
case _IOC_NR(PCIVME_TAS): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_TAS_STRUCT)) |
return -EINVAL; |
return VME_TAS(pp, pd, (PCIVME_TAS_STRUCT *)arg); |
case _IOC_NR(PCIVME_ACCESS_VIC68A): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_VIC68A_ACTION)) |
return -EINVAL; |
return access_VIC68A(pp, pd, (PCIVME_VIC68A_ACTION *)arg); |
case _IOC_NR(PCIVME_GET_DYNAMIC_STATUS): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_DYNAMIC_STATUS)) |
return -EINVAL; |
return get_dynamic_status(pp, pd, (PCIVME_DYNAMIC_STATUS *)arg); |
case _IOC_NR(PCIVME_RESET): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_RESET_COMMAND)) |
return -EINVAL; |
return VMEMM_RESET(pp, pd, (PCIVME_RESET_COMMAND *)arg); |
case _IOC_NR(PCIVME_SET_ACCESS_PARA): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_ACCESS_COMMAND)) |
return -EINVAL; |
return access_command(pp, pd, (PCIVME_ACCESS_COMMAND *)arg); |
case _IOC_NR(PCIVME_GET_STATIC_STATUS): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_STATIC_STATUS)) |
return -EINVAL; |
return get_static_status(pp, pd, (PCIVME_STATIC_STATUS *)arg); |
case _IOC_NR(PCIVME_INIT_HARDWARE): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_INIT_COMMAND)) |
return -EINVAL; |
return init_hardware(pp, pd, (PCIVME_INIT_COMMAND *)arg); |
case _IOC_NR(PCIVME_DEINIT_HARDWARE): |
if (_IOC_SIZE(cmd) < sizeof(PCIVME_INIT_COMMAND)) |
return -EINVAL; |
return deinit_hardware(pp, pd, (PCIVME_INIT_COMMAND *)arg); |
default: |
PRINTK(KERN_DEBUG "%s : pcivme_ioctl(0x%08x) is illegal\n", DEVICE_NAME, cmd); |
return -EINVAL; |
} |
return 0; |
} |
static long pcivme_unlocked_ioctl(struct file *pFile, unsigned int cmd, unsigned long arg){ |
long retval=0; |
#if HAVE_UNLOCKED_IOCTL |
struct mutex fs_mutex; |
mutex_init(&fs_mutex); |
mutex_lock(&fs_mutex); |
#else |
lock_kernel(); |
#endif |
retval = pcivme_ioctl(NULL, pFile, cmd,arg); |
#if HAVE_UNLOCKED_IOCTL |
mutex_unlock(&fs_mutex); |
#else |
unlock_kernel(); |
#endif |
return retval; |
} |
int pcivme_open(struct inode *pInode, struct file *pFile) |
{ |
DEVICE_OBJ *pd = 0; |
DEVICE_OBJ *desc = 0; |
int nMinor = MINOR(pInode->i_rdev); |
struct list_head *ptr; |
PRINTK(KERN_DEBUG "%s : pcivme_open(), %d, %d, scanning %d devices\n", DEVICE_NAME, major(pInode->i_rdev), nMinor, drv.count); |
/* search for device */ |
for (ptr = drv.devList.next; ptr != &drv.devList; ptr = ptr->next) |
{ |
pd = list_entry(ptr, DEVICE_OBJ, list); |
pd->bConnected = get_module_info(pd); |
if (pd->bConnected) |
{ |
if (test_connection(pd)) |
{ |
printk(KERN_ERR "%s : connection test for module %d failed!\n", DEVICE_NAME, pd->cModuleNumber); |
pd->bConnected = 0; |
} |
else |
if (pd->cModuleNumber == nMinor) |
{ |
desc = pd; |
break; |
} |
} |
else |
PRINTK(KERN_DEBUG "%s : module %d not connected!\n", DEVICE_NAME, nMinor); |
} |
if (desc) |
{ |
int err; |
PATH_OBJ *pp; |
pp = (PATH_OBJ *)kmalloc(sizeof(PATH_OBJ), GFP_ATOMIC); |
if (!pp) |
return -ENOMEM; |
// file PATH_OBJ structure with initialisation data |
pp->pDo = pd; |
pp->bAccessType = pp->bIncrement = BYTE_ACCESS; |
pp->bModifier = Short_NoPriv; |
pp->read = readByte; |
pp->write = writeByte; |
pp->AlignmentCheck = MisalignmentForByteAccess; |
pFile->private_data = (void *)pp; |
PRINTK(KERN_DEBUG "%s : found VMEMM module with number %d.\n", DEVICE_NAME, nMinor); |
if (!pd->nOpenCounter) |
{ |
err = CmdMachine(pd, init_element); |
if (err) |
{ |
printk(KERN_ERR "%s : default init failed with err = %d!\n", DEVICE_NAME, err); |
kfree_s(pp, sizeof(*pp)); // FREE(pFile->private_data); |
return err; |
} |
} |
pd->nOpenCounter++; |
} |
else |
{ |
printk(KERN_ERR "%s : No VMEMM module found.\n", DEVICE_NAME); |
return -ENODEV; |
} |
__MOD_INC_USE_COUNT__; |
return 0; |
} |
int pcivme_release(struct inode *pInode, struct file *pFile) |
{ |
PATH_OBJ *pp; |
PRINTK(KERN_DEBUG "%s : release()\n", DEVICE_NAME); |
if (pFile->private_data) |
{ |
pp = (PATH_OBJ *)pFile->private_data; |
if (pp && pp->pDo ) |
{ |
DEVICE_OBJ *pd = pp->pDo; |
pd->nOpenCounter--; |
// the last one closes the door |
if (pd->nOpenCounter <= 0) |
{ |
CmdMachine(pd, deinit_element_pre); |
CmdMachine(pd, deinit_element_post); |
// Vorsicht ist die Mutter der Porzelankiste! |
pd->nOpenCounter = 0; |
} |
pp->pDo = 0; |
} |
kfree_s(pp, sizeof(*pp)); // FREE(pFile->private_data); |
} |
__MOD_DEC_USE_COUNT__; |
return 0; |
} |
static ssize_t pcivme_read(struct file *pFile, char *pcBuffer, size_t count, loff_t *offp) |
{ |
PATH_OBJ *pp = (PATH_OBJ *)pFile->private_data; |
DEVICE_OBJ *pd = pp->pDo; |
u32 dwLocalCount = count; |
register u32 dwLocalPageAddress; |
u32 dwLocalAddressInPage; |
PRINTK(KERN_DEBUG "%s : pcivme_read(0x%08x, %d)\n", DEVICE_NAME, (u32)*offp, dwLocalCount); |
// inhibit misaligned accesses |
if (pp->AlignmentCheck(*offp)) |
return -EFAULT; |
// check for free access to user buffer |
if (!access_ok(VERIFY_WRITE, pcBuffer, count)) |
return -EFAULT; |
// do I still have the same modifier? |
if (pp->bModifier != pd->bCurrentModifier) |
setModifier(pd, pp->bModifier); |
while (count >= pp->bAccessType) |
{ |
dwLocalPageAddress = *offp & HI_ADDRESS_MASK; |
dwLocalAddressInPage = *offp & LO_ADDRESS_MASK; |
// do I still work in the same page? |
if (dwLocalPageAddress != pd->dwCurrentPageAddress) |
setPageAddress(pd, dwLocalPageAddress); |
// standard access method |
pp->read(pd, (void **)&pcBuffer, dwLocalAddressInPage); |
// decrement count and update pointer to next access address |
count -= pp->bAccessType; |
*offp += pp->bIncrement; |
} |
return dwLocalCount - count; |
} |
static ssize_t pcivme_write(struct file *pFile, const char *pcBuffer, size_t count, loff_t *offp) |
{ |
PATH_OBJ *pp = (PATH_OBJ *)pFile->private_data; |
DEVICE_OBJ *pd = pp->pDo; |
u32 dwLocalCount = count; |
register u32 dwLocalPageAddress; |
u32 dwLocalAddressInPage; |
PRINTK(KERN_DEBUG "%s : pcivme_write(0x%08x, %d)\n", DEVICE_NAME, (u32)*offp, dwLocalCount); |
// inhibit misaligned accesses |
if (pp->AlignmentCheck(*offp)) |
return -EFAULT; |
// check for free access to user buffer |
if (!access_ok(VERIFY_READ, pcBuffer, count)) |
return -EFAULT; |
// do I still have the same modifier? |
if (pp->bModifier != pd->bCurrentModifier) |
setModifier(pd, pp->bModifier); |
while (count >= pp->bAccessType) |
{ |
dwLocalPageAddress = *offp & HI_ADDRESS_MASK; |
dwLocalAddressInPage = *offp & LO_ADDRESS_MASK; |
// do I still work in the same page? |
if (dwLocalPageAddress != pd->dwCurrentPageAddress) |
setPageAddress(pd, dwLocalPageAddress); |
// standard access method |
pp->write(pd, dwLocalAddressInPage, (void **)&pcBuffer); |
// decrement count and update pointer to next access address |
count -= pp->bAccessType; |
*offp += pp->bIncrement; |
} |
return dwLocalCount - count; |
} |
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) |
struct file_operations pcivme_fops = |
{ |
NULL, /* lseek */ |
pcivme_read, /* read */ |
pcivme_write, /* write */ |
NULL, /* readdir */ |
NULL, /* select */ |
pcivme_ioctl, /* ioctl */ |
NULL, /* mmap */ |
pcivme_open, /* open */ |
NULL, /* flush */ |
pcivme_release, /* release */ |
}; |
#else |
struct file_operations pcivme_fops = |
{ |
.read = pcivme_read, /* read */ |
.write = pcivme_write, /* write */ |
.unlocked_ioctl = pcivme_unlocked_ioctl, /* ioctl */ |
.open = pcivme_open, /* open */ |
.release = pcivme_release, /* release */ |
}; |
#endif |
/pcivme-3.2/driver/Module.markers |
---|
0,0 → 1,4 |
core_marker_format vmlinux name %s format %s |
kernel_sched_schedule vmlinux prev_pid %d next_pid %d prev_state %ld ## rq %p prev %p next %p |
kernel_sched_wakeup vmlinux pid %d state %ld ## rq %p task %p rq->curr %p |
kernel_sched_wakeup_new vmlinux pid %d state %ld ## rq %p task %p rq->curr %p |
/pcivme-3.2/driver/pcivme.ko |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/pcivme-3.2/driver/askpci.c |
---|
0,0 → 1,174 |
//**************************************************************************** |
// Copyright (C) 2000-2006 ARW Elektronik Germany |
// |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// askpci.c - a hardware independent tool to get |
// information about searched pci-hardware |
// |
// $Log: askpci.c,v $ |
// Revision 1.7 2006/06/04 12:20:46 klaus |
// release_20060604; Version 3.2; pci_{en|dis}able_device() added |
// |
// Revision 1.6 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.3 2002/10/10 18:57:46 klaus |
// source beautyfied |
// |
//**************************************************************************** |
/*--- INCLUDES -------------------------------------------------------------*/ |
#include "common.h" /* must be the first include */ |
#include <linux/pci.h> |
#include <asm/types.h> |
#include "askpci.h" |
/*--- DEFINES ---------------------------------------------------------------*/ |
/*--- FUNCTIONS -------------------------------------------------------------*/ |
void DeletePCIConfig(DRIVER_OBJ *drv) |
{ |
PCIConfig *dev = NULL; |
while (!list_empty(&drv->pciList)) // cycle through the list of pci devices and remove them |
{ |
dev = (PCIConfig *)drv->pciList.prev; // empty in reverse order |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10) |
if (dev->pciDev) |
pci_disable_device(dev->pciDev); |
#endif |
list_del(&dev->list); |
kfree(dev); |
} |
} |
int GetPCIConfig(DRIVER_OBJ *drv, u16 device_id, u16 vendor_id, u16 subsys_id, u16 subven_id) |
{ |
int result = 0; |
PCIConfig *dev = NULL; |
int i = 0; |
// search pci devices |
PRINTK(KERN_DEBUG "%s : GetPCIConfig(0x%04x, 0x%04x, 0x%04x, 0x%04x)\n", DEVICE_NAME, device_id, vendor_id, subsys_id, subven_id); |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) |
if (CONFIG_PCI) |
#else |
if (pci_present()) |
#endif |
{ |
struct pci_dev *pciDev; |
struct pci_dev *from = NULL; |
do |
{ |
// https://groups.google.com/forum/?fromgroups=#!topic/fa.linux.kernel/aMXNYIFrOP8 |
// pciDev = pci_find_device((unsigned int)vendor_id, (unsigned int)device_id, from); |
pciDev = pci_get_device((unsigned int)vendor_id, (unsigned int)device_id, from); |
if (pciDev != NULL) |
{ |
u16 wSubSysID; |
u16 wSubVenID; |
// a PCI device with PCAN_PCI_VENDOR_ID and PCAN_PCI_DEVICE_ID was found |
from = pciDev; |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10) |
if (pci_enable_device(pciDev)) |
continue; |
#endif |
// get the PCI Subsystem-ID |
result = pci_read_config_word(pciDev, PCI_SUBSYSTEM_ID, &wSubSysID); |
if (result) |
{ |
result = -ENXIO; |
goto fail; |
} |
// get the PCI Subvendor-ID |
result = pci_read_config_word(pciDev, PCI_SUBSYSTEM_VENDOR_ID, &wSubVenID); |
if (result) |
{ |
result = -ENXIO; |
goto fail; |
} |
// get next if the subsys and subvendor ids do not match |
if ((wSubVenID != subven_id) || (wSubSysID != subsys_id)) |
continue; |
// create space for PCIConfig descriptor |
if ((dev = (PCIConfig *)kmalloc(sizeof(PCIConfig), GFP_KERNEL)) == NULL) |
{ |
result = -ENOMEM; |
goto fail; |
} |
// put data into pci device |
dev->pciDev = pciDev; |
list_add_tail(&dev->list, &drv->pciList); // add this device to the list of unchecked devices |
dev->index++; |
i++; |
} |
} while (pciDev != NULL); |
result = 0; |
} |
else |
{ |
printk(KERN_ERR "%s: No pcibios present!\n", DEVICE_NAME); |
result = -ENXIO; |
} |
fail: |
if (result) |
DeletePCIConfig(drv); |
PRINTK(KERN_DEBUG "%s : %d devices found (%d).\n", DEVICE_NAME, i, result); |
return result; |
} |
/* ------------------------------------------------------------------------- */ |
/* ------------------------------------------------------------------------- */ |
/pcivme-3.2/driver/Module.symvers |
---|
--- pcivme-3.2/driver/fops.h (nonexistent) |
+++ pcivme-3.2/driver/fops.h (revision 9) |
@@ -0,0 +1,59 @@ |
+#ifndef __FOPS_H__ |
+#define __FOPS_H__ |
+ |
+//**************************************************************************** |
+// Copyright (C) 2000-2004 ARW Elektronik Germany |
+// |
+// |
+// This program is free software; you can redistribute it and/or modify |
+// it under the terms of the GNU General Public License as published by |
+// the Free Software Foundation; either version 2 of the License, or |
+// (at your option) any later version. |
+// |
+// This program is distributed in the hope that it will be useful, |
+// but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+// GNU General Public License for more details. |
+// |
+// You should have received a copy of the GNU General Public License |
+// along with this program; if not, write to the Free Software |
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
+// |
+// This product is not authorized for use as critical component in |
+// life support systems without the express written approval of |
+// ARW Elektronik Germany. |
+// |
+// Please announce changes and hints to ARW Elektronik |
+// |
+// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
+// |
+//**************************************************************************** |
+ |
+//**************************************************************************** |
+// |
+// fops.h -- the file operations header for the PCIVME PCI to VME Interface |
+// |
+// $Log: fops.h,v $ |
+// Revision 1.4 2004/08/13 19:23:26 klaus |
+// conversion to kernel-version 2.6, released version 3.0 |
+// |
+// Revision 1.3 2002/10/18 21:56:28 klaus |
+// completed functional features, untested |
+// |
+// Revision 1.2 2002/10/18 21:56:28 klaus |
+// completed functional features, untested |
+// |
+// Revision 1.1.1.1 2002/10/09 19:36:30 klaus |
+// initial import |
+// |
+//**************************************************************************** |
+ |
+/*--- INCLUDES ----------------------------------------------------------------------------*/ |
+#include <linux/fs.h> |
+ |
+/*--- TYPEDEFS ----------------------------------------------------------------------------*/ |
+ |
+/*--- PROTOTYPES --------------------------------------------------------------------------*/ |
+extern struct file_operations pcivme_fops; |
+ |
+#endif // __FOPS_H__ |
/pcivme-3.2/driver/.pcivme.o.cmd |
---|
0,0 → 1,0 |
cmd_/home/f9daq/pcivme-3.2/driver/pcivme.o := ld -m elf_i386 -r -o /home/f9daq/pcivme-3.2/driver/pcivme.o /home/f9daq/pcivme-3.2/driver/./main.o /home/f9daq/pcivme-3.2/driver/./askpci.o /home/f9daq/pcivme-3.2/driver/./plxbug.o /home/f9daq/pcivme-3.2/driver/./fops.o |
/pcivme-3.2/driver/askpci.h |
---|
0,0 → 1,67 |
#ifndef __ASKPCI_H__ |
#define __ASKPCI_H__ |
//**************************************************************************** |
// Copyright (C) 2000-2004 ARW Elektronik Germany |
// |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// askpci.h - definitions for basic access functions of pci information |
// |
// $Log: askpci.h,v $ |
// Revision 1.6 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.3 2002/10/10 18:57:46 klaus |
// source beautyfied |
// |
//**************************************************************************** |
/*--- INCLUDES -------------------------------------------------------------------------*/ |
#include <linux/version.h> |
#include <linux/pci.h> |
#include <asm/types.h> |
#include <linux/list.h> |
#include "main.h" |
/*--- TYPEDEFS -------------------------------------------------------------------------*/ |
/*--- PROTOTYPES -------------------------------------------------------------------------*/ |
int GetPCIConfig(DRIVER_OBJ *drv, u16 device_id, u16 vendor_id, u16 subsys_id, u16 subven_id); |
void DeletePCIConfig(DRIVER_OBJ *drv); |
#endif /* __ASKPCI_H__ */ |
/pcivme-3.2/driver/.main.o.cmd |
---|
0,0 → 1,787 |
cmd_/home/f9daq/pcivme-3.2/driver/./main.o := gcc -Wp,-MD,/home/f9daq/pcivme-3.2/driver/./.main.o.d -nostdinc -isystem /usr/lib/gcc/i686-linux-gnu/4.6/include -I/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include -Iarch/x86/include/generated -Iinclude -include /usr/src/linux-headers-3.5.0-28-generic/include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i686 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_AVX=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=1024 -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I. -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(main)" -D"KBUILD_MODNAME=KBUILD_STR(pcivme)" -c -o /home/f9daq/pcivme-3.2/driver/./.tmp_main.o /home/f9daq/pcivme-3.2/driver/./main.c |
source_/home/f9daq/pcivme-3.2/driver/./main.o := /home/f9daq/pcivme-3.2/driver/./main.c |
deps_/home/f9daq/pcivme-3.2/driver/./main.o := \ |
/home/f9daq/pcivme-3.2/driver/./common.h \ |
$(wildcard include/config/modversions.h) \ |
include/linux/version.h \ |
include/config/modversions.h \ |
include/linux/module.h \ |
$(wildcard include/config/sysfs.h) \ |
$(wildcard include/config/modules.h) \ |
$(wildcard include/config/unused/symbols.h) \ |
$(wildcard include/config/generic/bug.h) \ |
$(wildcard include/config/kallsyms.h) \ |
$(wildcard include/config/smp.h) \ |
$(wildcard include/config/tracepoints.h) \ |
$(wildcard include/config/tracing.h) \ |
$(wildcard include/config/event/tracing.h) \ |
$(wildcard include/config/ftrace/mcount/record.h) \ |
$(wildcard include/config/module/unload.h) \ |
$(wildcard include/config/constructors.h) \ |
$(wildcard include/config/debug/set/module/ronx.h) \ |
include/linux/list.h \ |
$(wildcard include/config/debug/list.h) \ |
include/linux/types.h \ |
$(wildcard include/config/uid16.h) \ |
$(wildcard include/config/lbdaf.h) \ |
$(wildcard include/config/arch/dma/addr/t/64bit.h) \ |
$(wildcard include/config/phys/addr/t/64bit.h) \ |
$(wildcard include/config/64bit.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/types.h \ |
include/asm-generic/types.h \ |
include/asm-generic/int-ll64.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bitsperlong.h \ |
include/asm-generic/bitsperlong.h \ |
include/linux/posix_types.h \ |
include/linux/stddef.h \ |
include/linux/compiler.h \ |
$(wildcard include/config/sparse/rcu/pointer.h) \ |
$(wildcard include/config/trace/branch/profiling.h) \ |
$(wildcard include/config/profile/all/branches.h) \ |
$(wildcard include/config/enable/must/check.h) \ |
$(wildcard include/config/enable/warn/deprecated.h) \ |
include/linux/compiler-gcc.h \ |
$(wildcard include/config/arch/supports/optimized/inlining.h) \ |
$(wildcard include/config/optimize/inlining.h) \ |
include/linux/compiler-gcc4.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/posix_types.h \ |
$(wildcard include/config/x86/32.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/posix_types_32.h \ |
include/asm-generic/posix_types.h \ |
include/linux/poison.h \ |
$(wildcard include/config/illegal/pointer/value.h) \ |
include/linux/const.h \ |
include/linux/stat.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/stat.h \ |
include/linux/time.h \ |
$(wildcard include/config/arch/uses/gettimeoffset.h) \ |
include/linux/cache.h \ |
$(wildcard include/config/arch/has/cache/line/size.h) \ |
include/linux/kernel.h \ |
$(wildcard include/config/preempt/voluntary.h) \ |
$(wildcard include/config/debug/atomic/sleep.h) \ |
$(wildcard include/config/prove/locking.h) \ |
$(wildcard include/config/ring/buffer.h) \ |
$(wildcard include/config/numa.h) \ |
$(wildcard include/config/compaction.h) \ |
include/linux/sysinfo.h \ |
/usr/lib/gcc/i686-linux-gnu/4.6/include/stdarg.h \ |
include/linux/linkage.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/linkage.h \ |
$(wildcard include/config/x86/64.h) \ |
$(wildcard include/config/x86/alignment/16.h) \ |
include/linux/stringify.h \ |
include/linux/bitops.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bitops.h \ |
$(wildcard include/config/x86/cmov.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/alternative.h \ |
$(wildcard include/config/paravirt.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/asm.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cpufeature.h \ |
$(wildcard include/config/x86/invlpg.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/required-features.h \ |
$(wildcard include/config/x86/minimum/cpu/family.h) \ |
$(wildcard include/config/math/emulation.h) \ |
$(wildcard include/config/x86/pae.h) \ |
$(wildcard include/config/x86/cmpxchg64.h) \ |
$(wildcard include/config/x86/use/3dnow.h) \ |
$(wildcard include/config/x86/p6/nop.h) \ |
include/asm-generic/bitops/fls64.h \ |
include/asm-generic/bitops/find.h \ |
$(wildcard include/config/generic/find/first/bit.h) \ |
include/asm-generic/bitops/sched.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/arch_hweight.h \ |
include/asm-generic/bitops/const_hweight.h \ |
include/asm-generic/bitops/le.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/byteorder.h \ |
include/linux/byteorder/little_endian.h \ |
include/linux/swab.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/swab.h \ |
$(wildcard include/config/x86/bswap.h) \ |
include/linux/byteorder/generic.h \ |
include/asm-generic/bitops/ext2-atomic-setbit.h \ |
include/linux/log2.h \ |
$(wildcard include/config/arch/has/ilog2/u32.h) \ |
$(wildcard include/config/arch/has/ilog2/u64.h) \ |
include/linux/typecheck.h \ |
include/linux/printk.h \ |
$(wildcard include/config/printk.h) \ |
$(wildcard include/config/dynamic/debug.h) \ |
include/linux/init.h \ |
$(wildcard include/config/hotplug.h) \ |
include/linux/dynamic_debug.h \ |
include/linux/string.h \ |
$(wildcard include/config/binary/printf.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/string.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/string_32.h \ |
$(wildcard include/config/kmemcheck.h) \ |
include/linux/errno.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/errno.h \ |
include/asm-generic/errno.h \ |
include/asm-generic/errno-base.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/div64.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cache.h \ |
$(wildcard include/config/x86/l1/cache/shift.h) \ |
$(wildcard include/config/x86/internode/cache/shift.h) \ |
$(wildcard include/config/x86/vsmp.h) \ |
include/linux/seqlock.h \ |
include/linux/spinlock.h \ |
$(wildcard include/config/debug/spinlock.h) \ |
$(wildcard include/config/generic/lockbreak.h) \ |
$(wildcard include/config/preempt.h) \ |
$(wildcard include/config/debug/lock/alloc.h) \ |
include/linux/preempt.h \ |
$(wildcard include/config/debug/preempt.h) \ |
$(wildcard include/config/preempt/tracer.h) \ |
$(wildcard include/config/preempt/count.h) \ |
$(wildcard include/config/preempt/notifiers.h) \ |
include/linux/thread_info.h \ |
$(wildcard include/config/compat.h) \ |
$(wildcard include/config/debug/stack/usage.h) \ |
include/linux/bug.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bug.h \ |
$(wildcard include/config/bug.h) \ |
$(wildcard include/config/debug/bugverbose.h) \ |
include/asm-generic/bug.h \ |
$(wildcard include/config/generic/bug/relative/pointers.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/thread_info.h \ |
$(wildcard include/config/ia32/emulation.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_32_types.h \ |
$(wildcard include/config/highmem4g.h) \ |
$(wildcard include/config/highmem64g.h) \ |
$(wildcard include/config/page/offset.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_32.h \ |
$(wildcard include/config/hugetlb/page.h) \ |
$(wildcard include/config/debug/virtual.h) \ |
$(wildcard include/config/flatmem.h) \ |
$(wildcard include/config/x86/3dnow.h) \ |
include/asm-generic/memory_model.h \ |
$(wildcard include/config/discontigmem.h) \ |
$(wildcard include/config/sparsemem/vmemmap.h) \ |
$(wildcard include/config/sparsemem.h) \ |
include/asm-generic/getorder.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/processor.h \ |
$(wildcard include/config/cc/stackprotector.h) \ |
$(wildcard include/config/m386.h) \ |
$(wildcard include/config/m486.h) \ |
$(wildcard include/config/x86/debugctlmsr.h) \ |
$(wildcard include/config/cpu/sup/amd.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/processor-flags.h \ |
$(wildcard include/config/vm86.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/vm86.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ptrace.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ptrace-abi.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/segment.h \ |
$(wildcard include/config/x86/32/lazy/gs.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/paravirt_types.h \ |
$(wildcard include/config/x86/local/apic.h) \ |
$(wildcard include/config/paravirt/debug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/desc_defs.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/kmap_types.h \ |
$(wildcard include/config/debug/highmem.h) \ |
include/asm-generic/kmap_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_types.h \ |
$(wildcard include/config/compat/vdso.h) \ |
$(wildcard include/config/proc/fs.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32_types.h \ |
$(wildcard include/config/highmem.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable-3level_types.h \ |
include/asm-generic/pgtable-nopud.h \ |
include/asm-generic/ptrace.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/math_emu.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/sigcontext.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/current.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/percpu.h \ |
$(wildcard include/config/x86/64/smp.h) \ |
include/asm-generic/percpu.h \ |
$(wildcard include/config/have/setup/per/cpu/area.h) \ |
include/linux/threads.h \ |
$(wildcard include/config/nr/cpus.h) \ |
$(wildcard include/config/base/small.h) \ |
include/linux/percpu-defs.h \ |
$(wildcard include/config/debug/force/weak/per/cpu.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/msr.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/msr-index.h \ |
include/linux/ioctl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ioctl.h \ |
include/asm-generic/ioctl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cpumask.h \ |
include/linux/cpumask.h \ |
$(wildcard include/config/cpumask/offstack.h) \ |
$(wildcard include/config/hotplug/cpu.h) \ |
$(wildcard include/config/debug/per/cpu/maps.h) \ |
$(wildcard include/config/disable/obsolete/cpumask/functions.h) \ |
include/linux/bitmap.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/paravirt.h \ |
$(wildcard include/config/transparent/hugepage.h) \ |
$(wildcard include/config/paravirt/spinlocks.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/nops.h \ |
$(wildcard include/config/mk7.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/special_insns.h \ |
include/linux/personality.h \ |
include/linux/math64.h \ |
include/linux/err.h \ |
include/linux/irqflags.h \ |
$(wildcard include/config/trace/irqflags.h) \ |
$(wildcard include/config/irqsoff/tracer.h) \ |
$(wildcard include/config/trace/irqflags/support.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irqflags.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ftrace.h \ |
$(wildcard include/config/function/tracer.h) \ |
$(wildcard include/config/dynamic/ftrace.h) \ |
include/linux/atomic.h \ |
$(wildcard include/config/arch/has/atomic/or.h) \ |
$(wildcard include/config/generic/atomic64.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/atomic.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cmpxchg.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cmpxchg_32.h \ |
$(wildcard include/config/x86/cmpxchg.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/atomic64_32.h \ |
include/asm-generic/atomic-long.h \ |
include/linux/bottom_half.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/barrier.h \ |
$(wildcard include/config/x86/ppro/fence.h) \ |
$(wildcard include/config/x86/oostore.h) \ |
include/linux/spinlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/spinlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/rwlock.h \ |
include/linux/lockdep.h \ |
$(wildcard include/config/lockdep.h) \ |
$(wildcard include/config/lock/stat.h) \ |
$(wildcard include/config/prove/rcu.h) \ |
include/linux/rwlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/spinlock.h \ |
include/linux/rwlock.h \ |
include/linux/spinlock_api_smp.h \ |
$(wildcard include/config/inline/spin/lock.h) \ |
$(wildcard include/config/inline/spin/lock/bh.h) \ |
$(wildcard include/config/inline/spin/lock/irq.h) \ |
$(wildcard include/config/inline/spin/lock/irqsave.h) \ |
$(wildcard include/config/inline/spin/trylock.h) \ |
$(wildcard include/config/inline/spin/trylock/bh.h) \ |
$(wildcard include/config/uninline/spin/unlock.h) \ |
$(wildcard include/config/inline/spin/unlock/bh.h) \ |
$(wildcard include/config/inline/spin/unlock/irq.h) \ |
$(wildcard include/config/inline/spin/unlock/irqrestore.h) \ |
include/linux/rwlock_api_smp.h \ |
$(wildcard include/config/inline/read/lock.h) \ |
$(wildcard include/config/inline/write/lock.h) \ |
$(wildcard include/config/inline/read/lock/bh.h) \ |
$(wildcard include/config/inline/write/lock/bh.h) \ |
$(wildcard include/config/inline/read/lock/irq.h) \ |
$(wildcard include/config/inline/write/lock/irq.h) \ |
$(wildcard include/config/inline/read/lock/irqsave.h) \ |
$(wildcard include/config/inline/write/lock/irqsave.h) \ |
$(wildcard include/config/inline/read/trylock.h) \ |
$(wildcard include/config/inline/write/trylock.h) \ |
$(wildcard include/config/inline/read/unlock.h) \ |
$(wildcard include/config/inline/write/unlock.h) \ |
$(wildcard include/config/inline/read/unlock/bh.h) \ |
$(wildcard include/config/inline/write/unlock/bh.h) \ |
$(wildcard include/config/inline/read/unlock/irq.h) \ |
$(wildcard include/config/inline/write/unlock/irq.h) \ |
$(wildcard include/config/inline/read/unlock/irqrestore.h) \ |
$(wildcard include/config/inline/write/unlock/irqrestore.h) \ |
include/linux/uidgid.h \ |
$(wildcard include/config/uidgid/strict/type/checks.h) \ |
$(wildcard include/config/user/ns.h) \ |
include/linux/highuid.h \ |
include/linux/kmod.h \ |
include/linux/gfp.h \ |
$(wildcard include/config/zone/dma.h) \ |
$(wildcard include/config/zone/dma32.h) \ |
$(wildcard include/config/pm/sleep.h) \ |
$(wildcard include/config/cma.h) \ |
include/linux/mmzone.h \ |
$(wildcard include/config/force/max/zoneorder.h) \ |
$(wildcard include/config/cgroup/mem/res/ctlr.h) \ |
$(wildcard include/config/memory/hotplug.h) \ |
$(wildcard include/config/have/memblock/node/map.h) \ |
$(wildcard include/config/flat/node/mem/map.h) \ |
$(wildcard include/config/no/bootmem.h) \ |
$(wildcard include/config/have/memory/present.h) \ |
$(wildcard include/config/have/memoryless/nodes.h) \ |
$(wildcard include/config/need/node/memmap/size.h) \ |
$(wildcard include/config/have/memblock/node.h) \ |
$(wildcard include/config/need/multiple/nodes.h) \ |
$(wildcard include/config/have/arch/early/pfn/to/nid.h) \ |
$(wildcard include/config/sparsemem/extreme.h) \ |
$(wildcard include/config/have/arch/pfn/valid.h) \ |
$(wildcard include/config/nodes/span/other/nodes.h) \ |
$(wildcard include/config/holes/in/zone.h) \ |
$(wildcard include/config/arch/has/holes/memorymodel.h) \ |
include/linux/wait.h \ |
include/linux/numa.h \ |
$(wildcard include/config/nodes/shift.h) \ |
include/linux/nodemask.h \ |
include/linux/pageblock-flags.h \ |
$(wildcard include/config/hugetlb/page/size/variable.h) \ |
include/generated/bounds.h \ |
include/linux/memory_hotplug.h \ |
$(wildcard include/config/memory/hotremove.h) \ |
$(wildcard include/config/have/arch/nodedata/extension.h) \ |
include/linux/notifier.h \ |
include/linux/mutex.h \ |
$(wildcard include/config/debug/mutexes.h) \ |
$(wildcard include/config/have/arch/mutex/cpu/relax.h) \ |
include/linux/rwsem.h \ |
$(wildcard include/config/rwsem/generic/spinlock.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/rwsem.h \ |
include/linux/srcu.h \ |
include/linux/rcupdate.h \ |
$(wildcard include/config/rcu/torture/test.h) \ |
$(wildcard include/config/tree/rcu.h) \ |
$(wildcard include/config/tree/preempt/rcu.h) \ |
$(wildcard include/config/rcu/trace.h) \ |
$(wildcard include/config/preempt/rcu.h) \ |
$(wildcard include/config/tiny/rcu.h) \ |
$(wildcard include/config/tiny/preempt/rcu.h) \ |
$(wildcard include/config/debug/objects/rcu/head.h) \ |
$(wildcard include/config/preempt/rt.h) \ |
include/linux/completion.h \ |
include/linux/debugobjects.h \ |
$(wildcard include/config/debug/objects.h) \ |
$(wildcard include/config/debug/objects/free.h) \ |
include/linux/rcutree.h \ |
include/linux/workqueue.h \ |
$(wildcard include/config/debug/objects/work.h) \ |
$(wildcard include/config/freezer.h) \ |
include/linux/timer.h \ |
$(wildcard include/config/timer/stats.h) \ |
$(wildcard include/config/debug/objects/timers.h) \ |
include/linux/ktime.h \ |
$(wildcard include/config/ktime/scalar.h) \ |
include/linux/jiffies.h \ |
include/linux/timex.h \ |
include/linux/param.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/param.h \ |
include/asm-generic/param.h \ |
$(wildcard include/config/hz.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/timex.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/tsc.h \ |
$(wildcard include/config/x86/tsc.h) \ |
include/linux/topology.h \ |
$(wildcard include/config/sched/smt.h) \ |
$(wildcard include/config/sched/mc.h) \ |
$(wildcard include/config/sched/book.h) \ |
$(wildcard include/config/use/percpu/numa/node/id.h) \ |
include/linux/smp.h \ |
$(wildcard include/config/use/generic/smp/helpers.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/smp.h \ |
$(wildcard include/config/x86/io/apic.h) \ |
$(wildcard include/config/x86/32/smp.h) \ |
$(wildcard include/config/debug/nmi/selftest.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mpspec.h \ |
$(wildcard include/config/x86/numaq.h) \ |
$(wildcard include/config/eisa.h) \ |
$(wildcard include/config/x86/mpparse.h) \ |
$(wildcard include/config/acpi.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mpspec_def.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/x86_init.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bootparam.h \ |
include/linux/screen_info.h \ |
include/linux/apm_bios.h \ |
include/linux/edd.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/e820.h \ |
$(wildcard include/config/efi.h) \ |
$(wildcard include/config/intel/txt.h) \ |
$(wildcard include/config/hibernation.h) \ |
$(wildcard include/config/memtest.h) \ |
include/linux/ioport.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ist.h \ |
include/video/edid.h \ |
$(wildcard include/config/x86.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/apicdef.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/apic.h \ |
$(wildcard include/config/x86/x2apic.h) \ |
include/linux/pm.h \ |
$(wildcard include/config/pm.h) \ |
$(wildcard include/config/pm/runtime.h) \ |
$(wildcard include/config/pm/clk.h) \ |
$(wildcard include/config/pm/generic/domains.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/fixmap.h \ |
$(wildcard include/config/provide/ohci1394/dma/init.h) \ |
$(wildcard include/config/x86/visws/apic.h) \ |
$(wildcard include/config/x86/f00f/bug.h) \ |
$(wildcard include/config/x86/cyclone/timer.h) \ |
$(wildcard include/config/pci/mmconfig.h) \ |
$(wildcard include/config/x86/intel/mid.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/acpi.h \ |
$(wildcard include/config/acpi/numa.h) \ |
include/acpi/pdc_intel.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/numa.h \ |
$(wildcard include/config/numa/emu.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/topology.h \ |
$(wildcard include/config/x86/ht.h) \ |
include/asm-generic/topology.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/numa_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mmu.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/realmode.h \ |
$(wildcard include/config/acpi/sleep.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/io.h \ |
$(wildcard include/config/xen.h) \ |
include/asm-generic/iomap.h \ |
$(wildcard include/config/has/ioport.h) \ |
$(wildcard include/config/pci.h) \ |
$(wildcard include/config/generic/iomap.h) \ |
include/asm-generic/pci_iomap.h \ |
$(wildcard include/config/no/generic/pci/ioport/map.h) \ |
$(wildcard include/config/generic/pci/iomap.h) \ |
include/linux/vmalloc.h \ |
$(wildcard include/config/mmu.h) \ |
include/xen/xen.h \ |
$(wildcard include/config/xen/dom0.h) \ |
include/xen/interface/xen.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/interface.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/interface_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pvclock-abi.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/hypervisor.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/io_apic.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irq_vectors.h \ |
include/linux/percpu.h \ |
$(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ |
$(wildcard include/config/need/per/cpu/page/first/chunk.h) \ |
include/linux/pfn.h \ |
include/linux/mmdebug.h \ |
$(wildcard include/config/debug/vm.h) \ |
include/linux/sysctl.h \ |
$(wildcard include/config/sysctl.h) \ |
include/linux/rbtree.h \ |
include/linux/elf.h \ |
include/linux/elf-em.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/elf.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/user.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/user_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/auxvec.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/vdso.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/desc.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ldt.h \ |
include/linux/kobject.h \ |
include/linux/sysfs.h \ |
include/linux/kobject_ns.h \ |
include/linux/kref.h \ |
include/linux/moduleparam.h \ |
$(wildcard include/config/alpha.h) \ |
$(wildcard include/config/ia64.h) \ |
$(wildcard include/config/ppc64.h) \ |
include/linux/tracepoint.h \ |
include/linux/static_key.h \ |
include/linux/jump_label.h \ |
$(wildcard include/config/jump/label.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/jump_label.h \ |
include/linux/export.h \ |
$(wildcard include/config/symbol/prefix.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/module.h \ |
$(wildcard include/config/m586.h) \ |
$(wildcard include/config/m586tsc.h) \ |
$(wildcard include/config/m586mmx.h) \ |
$(wildcard include/config/mcore2.h) \ |
$(wildcard include/config/matom.h) \ |
$(wildcard include/config/m686.h) \ |
$(wildcard include/config/mpentiumii.h) \ |
$(wildcard include/config/mpentiumiii.h) \ |
$(wildcard include/config/mpentiumm.h) \ |
$(wildcard include/config/mpentium4.h) \ |
$(wildcard include/config/mk6.h) \ |
$(wildcard include/config/mk8.h) \ |
$(wildcard include/config/melan.h) \ |
$(wildcard include/config/mcrusoe.h) \ |
$(wildcard include/config/mefficeon.h) \ |
$(wildcard include/config/mwinchipc6.h) \ |
$(wildcard include/config/mwinchip3d.h) \ |
$(wildcard include/config/mcyrixiii.h) \ |
$(wildcard include/config/mviac3/2.h) \ |
$(wildcard include/config/mviac7.h) \ |
$(wildcard include/config/mgeodegx1.h) \ |
$(wildcard include/config/mgeode/lx.h) \ |
include/asm-generic/module.h \ |
include/linux/sched.h \ |
$(wildcard include/config/sched/debug.h) \ |
$(wildcard include/config/no/hz.h) \ |
$(wildcard include/config/lockup/detector.h) \ |
$(wildcard include/config/detect/hung/task.h) \ |
$(wildcard include/config/core/dump/default/elf/headers.h) \ |
$(wildcard include/config/sched/autogroup.h) \ |
$(wildcard include/config/virt/cpu/accounting.h) \ |
$(wildcard include/config/bsd/process/acct.h) \ |
$(wildcard include/config/taskstats.h) \ |
$(wildcard include/config/audit.h) \ |
$(wildcard include/config/cgroups.h) \ |
$(wildcard include/config/inotify/user.h) \ |
$(wildcard include/config/fanotify.h) \ |
$(wildcard include/config/epoll.h) \ |
$(wildcard include/config/posix/mqueue.h) \ |
$(wildcard include/config/keys.h) \ |
$(wildcard include/config/perf/events.h) \ |
$(wildcard include/config/schedstats.h) \ |
$(wildcard include/config/task/delay/acct.h) \ |
$(wildcard include/config/fair/group/sched.h) \ |
$(wildcard include/config/rt/group/sched.h) \ |
$(wildcard include/config/cgroup/sched.h) \ |
$(wildcard include/config/blk/dev/io/trace.h) \ |
$(wildcard include/config/rcu/boost.h) \ |
$(wildcard include/config/compat/brk.h) \ |
$(wildcard include/config/sysvipc.h) \ |
$(wildcard include/config/auditsyscall.h) \ |
$(wildcard include/config/rt/mutexes.h) \ |
$(wildcard include/config/block.h) \ |
$(wildcard include/config/task/xacct.h) \ |
$(wildcard include/config/cpusets.h) \ |
$(wildcard include/config/futex.h) \ |
$(wildcard include/config/fault/injection.h) \ |
$(wildcard include/config/latencytop.h) \ |
$(wildcard include/config/function/graph/tracer.h) \ |
$(wildcard include/config/have/hw/breakpoint.h) \ |
$(wildcard include/config/uprobes.h) \ |
$(wildcard include/config/have/unstable/sched/clock.h) \ |
$(wildcard include/config/irq/time/accounting.h) \ |
$(wildcard include/config/cfs/bandwidth.h) \ |
$(wildcard include/config/stack/growsup.h) \ |
$(wildcard include/config/mm/owner.h) \ |
include/linux/capability.h \ |
include/linux/mm_types.h \ |
$(wildcard include/config/split/ptlock/cpus.h) \ |
$(wildcard include/config/have/cmpxchg/double.h) \ |
$(wildcard include/config/have/aligned/struct/page.h) \ |
$(wildcard include/config/want/page/debug/flags.h) \ |
$(wildcard include/config/aio.h) \ |
$(wildcard include/config/mmu/notifier.h) \ |
include/linux/auxvec.h \ |
include/linux/prio_tree.h \ |
include/linux/page-debug-flags.h \ |
$(wildcard include/config/page/poisoning.h) \ |
$(wildcard include/config/page/guard.h) \ |
$(wildcard include/config/page/debug/something/else.h) \ |
include/linux/uprobes.h \ |
$(wildcard include/config/arch/supports/uprobes.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/uprobes.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cputime.h \ |
include/asm-generic/cputime.h \ |
include/linux/sem.h \ |
include/linux/ipc.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ipcbuf.h \ |
include/asm-generic/ipcbuf.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/sembuf.h \ |
include/linux/signal.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/signal.h \ |
include/asm-generic/signal-defs.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/siginfo.h \ |
include/asm-generic/siginfo.h \ |
include/linux/pid.h \ |
include/linux/proportions.h \ |
include/linux/percpu_counter.h \ |
include/linux/seccomp.h \ |
$(wildcard include/config/seccomp.h) \ |
$(wildcard include/config/seccomp/filter.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/seccomp.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/seccomp_32.h \ |
include/linux/unistd.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/unistd.h \ |
$(wildcard include/config/x86/x32/abi.h) \ |
arch/x86/include/generated/asm/unistd_32.h \ |
include/linux/rculist.h \ |
include/linux/rtmutex.h \ |
$(wildcard include/config/debug/rt/mutexes.h) \ |
include/linux/plist.h \ |
$(wildcard include/config/debug/pi/list.h) \ |
include/linux/resource.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/resource.h \ |
include/asm-generic/resource.h \ |
include/linux/hrtimer.h \ |
$(wildcard include/config/high/res/timers.h) \ |
$(wildcard include/config/timerfd.h) \ |
include/linux/timerqueue.h \ |
include/linux/task_io_accounting.h \ |
$(wildcard include/config/task/io/accounting.h) \ |
include/linux/latencytop.h \ |
include/linux/cred.h \ |
$(wildcard include/config/debug/credentials.h) \ |
$(wildcard include/config/security.h) \ |
include/linux/key.h \ |
include/linux/selinux.h \ |
$(wildcard include/config/security/selinux.h) \ |
include/linux/llist.h \ |
$(wildcard include/config/arch/have/nmi/safe/cmpxchg.h) \ |
include/linux/aio.h \ |
include/linux/aio_abi.h \ |
include/linux/uio.h \ |
include/linux/proc_fs.h \ |
$(wildcard include/config/proc/devicetree.h) \ |
$(wildcard include/config/proc/kcore.h) \ |
include/linux/slab.h \ |
$(wildcard include/config/slab/debug.h) \ |
$(wildcard include/config/failslab.h) \ |
$(wildcard include/config/slub.h) \ |
$(wildcard include/config/slob.h) \ |
$(wildcard include/config/debug/slab.h) \ |
$(wildcard include/config/slab.h) \ |
include/linux/slub_def.h \ |
$(wildcard include/config/slub/stats.h) \ |
$(wildcard include/config/slub/debug.h) \ |
include/linux/kmemleak.h \ |
$(wildcard include/config/debug/kmemleak.h) \ |
include/linux/fs.h \ |
$(wildcard include/config/fs/posix/acl.h) \ |
$(wildcard include/config/quota.h) \ |
$(wildcard include/config/fsnotify.h) \ |
$(wildcard include/config/ima.h) \ |
$(wildcard include/config/debug/writecount.h) \ |
$(wildcard include/config/file/locking.h) \ |
$(wildcard include/config/fs/xip.h) \ |
$(wildcard include/config/migration.h) \ |
include/linux/limits.h \ |
include/linux/blk_types.h \ |
$(wildcard include/config/blk/cgroup.h) \ |
$(wildcard include/config/blk/dev/integrity.h) \ |
include/linux/kdev_t.h \ |
include/linux/dcache.h \ |
include/linux/rculist_bl.h \ |
include/linux/list_bl.h \ |
include/linux/bit_spinlock.h \ |
include/linux/path.h \ |
include/linux/radix-tree.h \ |
include/linux/semaphore.h \ |
include/linux/fiemap.h \ |
include/linux/shrinker.h \ |
include/linux/migrate_mode.h \ |
include/linux/quota.h \ |
$(wildcard include/config/quota/netlink/interface.h) \ |
include/linux/dqblk_xfs.h \ |
include/linux/dqblk_v1.h \ |
include/linux/dqblk_v2.h \ |
include/linux/dqblk_qtree.h \ |
include/linux/nfs_fs_i.h \ |
include/linux/fcntl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/fcntl.h \ |
include/asm-generic/fcntl.h \ |
include/linux/magic.h \ |
include/linux/pci.h \ |
$(wildcard include/config/pci/iov.h) \ |
$(wildcard include/config/pcieaspm.h) \ |
$(wildcard include/config/pci/msi.h) \ |
$(wildcard include/config/pci/ats.h) \ |
$(wildcard include/config/pcieportbus.h) \ |
$(wildcard include/config/pcieaer.h) \ |
$(wildcard include/config/pcie/ecrc.h) \ |
$(wildcard include/config/ht/irq.h) \ |
$(wildcard include/config/pci/domains.h) \ |
$(wildcard include/config/pci/quirks.h) \ |
$(wildcard include/config/hotplug/pci.h) \ |
$(wildcard include/config/of.h) \ |
$(wildcard include/config/eeh.h) \ |
include/linux/pci_regs.h \ |
include/linux/mod_devicetable.h \ |
include/linux/device.h \ |
$(wildcard include/config/debug/devres.h) \ |
$(wildcard include/config/devtmpfs.h) \ |
$(wildcard include/config/sysfs/deprecated.h) \ |
include/linux/klist.h \ |
include/linux/ratelimit.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/device.h \ |
$(wildcard include/config/x86/dev/dma/ops.h) \ |
$(wildcard include/config/intel/iommu.h) \ |
$(wildcard include/config/amd/iommu.h) \ |
include/linux/pm_wakeup.h \ |
include/linux/io.h \ |
include/linux/irqreturn.h \ |
include/linux/pci_ids.h \ |
include/linux/pci-dma.h \ |
include/linux/dmapool.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/scatterlist.h \ |
include/asm-generic/scatterlist.h \ |
$(wildcard include/config/debug/sg.h) \ |
$(wildcard include/config/need/sg/dma/length.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pci.h \ |
include/linux/mm.h \ |
$(wildcard include/config/ksm.h) \ |
$(wildcard include/config/debug/pagealloc.h) \ |
$(wildcard include/config/hugetlbfs.h) \ |
include/linux/debug_locks.h \ |
$(wildcard include/config/debug/locking/api/selftests.h) \ |
include/linux/range.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32.h \ |
$(wildcard include/config/highpte.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable-3level.h \ |
include/asm-generic/pgtable.h \ |
include/linux/page-flags.h \ |
$(wildcard include/config/pageflags/extended.h) \ |
$(wildcard include/config/arch/uses/pg/uncached.h) \ |
$(wildcard include/config/memory/failure.h) \ |
$(wildcard include/config/swap.h) \ |
$(wildcard include/config/s390.h) \ |
include/linux/huge_mm.h \ |
include/linux/vmstat.h \ |
$(wildcard include/config/vm/event/counters.h) \ |
include/linux/vm_event_item.h \ |
include/asm-generic/pci-dma-compat.h \ |
include/linux/dma-mapping.h \ |
$(wildcard include/config/has/dma.h) \ |
$(wildcard include/config/arch/has/dma/set/coherent/mask.h) \ |
$(wildcard include/config/have/dma/attrs.h) \ |
$(wildcard include/config/need/dma/map/state.h) \ |
include/linux/dma-attrs.h \ |
include/linux/dma-direction.h \ |
include/linux/scatterlist.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/dma-mapping.h \ |
$(wildcard include/config/isa.h) \ |
$(wildcard include/config/x86/dma/remap.h) \ |
include/linux/kmemcheck.h \ |
include/linux/dma-debug.h \ |
$(wildcard include/config/dma/api/debug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/swiotlb.h \ |
$(wildcard include/config/swiotlb.h) \ |
include/linux/swiotlb.h \ |
include/asm-generic/dma-coherent.h \ |
$(wildcard include/config/have/generic/dma/coherent.h) \ |
include/linux/dma-contiguous.h \ |
$(wildcard include/config/cma/areas.h) \ |
include/asm-generic/dma-mapping-common.h \ |
include/asm-generic/pci.h \ |
include/linux/interrupt.h \ |
$(wildcard include/config/generic/hardirqs.h) \ |
$(wildcard include/config/irq/forced/threading.h) \ |
$(wildcard include/config/generic/irq/probe.h) \ |
include/linux/irqnr.h \ |
include/linux/hardirq.h \ |
include/linux/ftrace_irq.h \ |
$(wildcard include/config/ftrace/nmi/enter.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/hardirq.h \ |
$(wildcard include/config/x86/thermal/vector.h) \ |
$(wildcard include/config/x86/mce/threshold.h) \ |
include/linux/irq.h \ |
$(wildcard include/config/generic/pending/irq.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irq.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irq_regs.h \ |
include/linux/irqdesc.h \ |
$(wildcard include/config/irq/preflow/fasteoi.h) \ |
$(wildcard include/config/sparse/irq.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/hw_irq.h \ |
$(wildcard include/config/irq/remap.h) \ |
include/linux/profile.h \ |
$(wildcard include/config/profiling.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/sections.h \ |
$(wildcard include/config/debug/rodata.h) \ |
include/asm-generic/sections.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/uaccess.h \ |
$(wildcard include/config/x86/wp/works/ok.h) \ |
$(wildcard include/config/x86/intel/usercopy.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/uaccess_32.h \ |
$(wildcard include/config/debug/strict/user/copy/checks.h) \ |
/home/f9daq/pcivme-3.2/driver/./askpci.h \ |
/home/f9daq/pcivme-3.2/driver/./main.h \ |
/home/f9daq/pcivme-3.2/driver/./plxbug.h \ |
/home/f9daq/pcivme-3.2/driver/./plx9050.h \ |
/home/f9daq/pcivme-3.2/driver/./fops.h \ |
/home/f9daq/pcivme-3.2/driver/./pcivme.h \ |
/home/f9daq/pcivme-3.2/driver/./pciif.h \ |
/home/f9daq/pcivme-3.2/driver/./vic.h \ |
/home/f9daq/pcivme-3.2/driver/./main.o: $(deps_/home/f9daq/pcivme-3.2/driver/./main.o) |
$(deps_/home/f9daq/pcivme-3.2/driver/./main.o): |
/pcivme-3.2/driver/README.changes |
---|
0,0 → 1,96 |
diff -r pcivme-3.2/driver/askpci.c pcivme-3.2-rok/driver/askpci.c |
53c53 |
< #include <common.h> /* must be the first include */ |
--- |
> #include "common.h" /* must be the first include */ |
57c57 |
< #include <askpci.h> |
--- |
> #include "askpci.h" |
diff -r pcivme-3.2/driver/askpci.h pcivme-3.2-rok/driver/askpci.h |
57c57 |
< #include <main.h> |
--- |
> #include "main.h" |
diff -r pcivme-3.2/driver/fops.c pcivme-3.2-rok/driver/fops.c |
58c58 |
< #include <common.h> /* must be the first include */ |
--- |
> #include "common.h" /* must be the first include */ |
68,75c68,75 |
< #include <fops.h> |
< #include <plx9050.h> |
< #include <pcivme.h> /* the common ioctl commands and structures between driver and application */ |
< #include <main.h> |
< #include <askpci.h> |
< #include <pciif.h> |
< #include <vic.h> |
< #include <vme.h> |
--- |
> #include "fops.h" |
> #include "plx9050.h" |
> #include "pcivme.h" /* the common ioctl commands and structures between driver and application */ |
> #include "main.h" |
> #include "askpci.h" |
> #include "pciif.h" |
> #include "vic.h" |
> #include "vme.h" |
diff -r pcivme-3.2/driver/main.c pcivme-3.2-rok/driver/main.c |
60c60 |
< #include <common.h> /* must be the first include */ |
--- |
> #include "common.h" /* must be the first include */ |
72,79c72,79 |
< #include <askpci.h> |
< #include <plxbug.h> |
< #include <plx9050.h> |
< #include <fops.h> |
< #include <pcivme.h> |
< #include <pciif.h> |
< #include <vic.h> |
< #include <main.h> |
--- |
> #include "askpci.h" |
> #include "plxbug.h" |
> #include "plx9050.h" |
> #include "fops.h" |
> #include "pcivme.h" |
> #include "pciif.h" |
> #include "vic.h" |
> #include "main.h" |
515c515 |
< if (request_irq(pd->pPch->pciDev->irq, pcivme_irqhandler, SA_INTERRUPT | SA_SHIRQ, DEVICE_NAME, pd)) |
--- |
> if (request_irq(pd->pPch->pciDev->irq, pcivme_irqhandler, IRQF_DISABLED| IRQF_SHARED, DEVICE_NAME, pd)) |
diff -r pcivme-3.2/driver/Makefile pcivme-3.2-rok/driver/Makefile |
43a44 |
> EXTRA_CFLAGS := -I. |
64c65 |
< VERSION := $(shell cpp -dM -I$(KERNEL_LOCATION)/include $(KERNEL_LOCATION)/include/linux/version.h \ |
--- |
> VERSION := $(shell cpp -dM -I$(KERNEL_LOCATION)/include $(KERNEL_LOCATION)/include/linux/utsrelease.h \ |
Only in pcivme-3.2-rok/driver/: Module.symvers |
diff -r pcivme-3.2/driver/pciif.h pcivme-3.2-rok/driver/pciif.h |
51c51 |
< #include <vic.h> |
--- |
> #include "vic.h" |
Only in pcivme-3.2-rok/driver/: pcivme.mod.c |
diff -r pcivme-3.2/driver/plxbug.c pcivme-3.2-rok/driver/plxbug.c |
48c48 |
< #include <common.h> /* must be the first include */ |
--- |
> #include "common.h" /* must be the first include */ |
51,52c51,52 |
< #include <plxbug.h> |
< #include <main.h> |
--- |
> #include "plxbug.h" |
> #include "main.h" |
diff -r pcivme-3.2/driver/plxbug.h pcivme-3.2-rok/driver/plxbug.h |
51c51 |
< #include <askpci.h> |
--- |
> #include "askpci.h" |
Only in pcivme-3.2-rok/driver/: README.changes |
Only in pcivme-3.2-rok/driver/: .tmp_versions |
/pcivme-3.2/driver/main.c |
---|
0,0 → 1,618 |
//**************************************************************************** |
// Copyright (C) 2000-2006 ARW Elektronik Germany |
// |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// main.c -- the main driver module for the PCIVME PCI to VME Interface |
// Thanks to A.Rubini's Book and Dirk Muelhlenberg and H.J.Mathes |
// for their arwvme driver |
// |
// $Log: main.c,v $ |
// Revision 1.10 2006/06/04 12:20:46 klaus |
// release_20060604; Version 3.2; pci_{en|dis}able_device() added |
// |
// Revision 1.9 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.8 2003/06/27 17:25:52 klaus |
// incomplete try to get mmap() with nopage() running for automatic page switch |
// |
// Revision 1.7 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.6 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.5 2002/10/17 19:05:03 klaus |
// VME access is working through test to lib to driver |
// |
//**************************************************************************** |
#define NOPAGE_SIGBUS (NULL) |
#define VERSION_HI 3 |
#define VERSION_LO 2 |
/*--- INCLUDES ---------------------------------------------------------------------------*/ |
#include "common.h" /* must be the first include */ |
#include <linux/module.h> |
#include <linux/sched.h> |
#include <linux/proc_fs.h> |
#include <linux/pci.h> |
#include <asm/types.h> |
#include <linux/mm.h> |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) |
#include <linux/interrupt.h> |
#endif |
#include "askpci.h" |
#include "plxbug.h" |
#include "plx9050.h" |
#include "fops.h" |
#include "pcivme.h" |
#include "pciif.h" |
#include "vic.h" |
#include "main.h" |
/*--- DEFINES -----------------------------------------------------------------------------*/ |
MODULE_AUTHOR("klaus.hitschler@gmx.de"); |
MODULE_DESCRIPTION("Driver for ARW Elektronik PCI VME interface."); |
MODULE_SUPPORTED_DEVICE("PCIVME"); |
MODULE_LICENSE("GPL"); |
#define MAJOR_NO 0 /* use dynamic assignment */ |
#define PCIVME_VENDOR_ID 0x10B5 |
#define PCIVME_DEVICE_ID 0x9050 |
#define PCIVME_SUBSYS_ID 0x1167 |
#define PCIVME_SUBVEN_ID 0x9050 |
/*--- TYPEDEFS ----------------------------------------------------------------------------*/ |
/*--- GLOBALS -----------------------------------------------------------------------------*/ |
DRIVER_OBJ drv; |
/*--- LOCALS ------------------------------------------------------------------------------*/ |
/*--- FUNCTIONS ---------------------------------------------------------------------------*/ |
static int my_interrupt(u16 intCSR) |
{ |
int result = NOT_MY_INTERRUPT; |
if (intCSR & 0x0040) // it is global enabled |
{ |
if ((intCSR & 0x0028) == 0x0028) // it is a enabled PCIADA interrupt |
result = PCIADA_INTERRUPT; |
else |
if ((intCSR & 0x0005) == 0x0005) // it is a enabled VMEMM interrupt |
result = VMEMM_INTERRUPT; |
} |
return result; |
} |
static irqreturn_t pcivme_irqhandler(int irq, void *dev_id, struct pt_regs *regs) |
{ |
DEVICE_OBJ *pd = (DEVICE_OBJ *)dev_id; |
if (pd) |
{ |
// evaluate the reason of the interrupt - if it is mine |
u16 intCSR = readw((const volatile void *) (pd->pPCIADAIntCSR)); |
int which_interrupt = my_interrupt(intCSR); |
if (which_interrupt) |
{ |
writew(intCSR & ~0x40, (volatile void *) pd->pPCIADAIntCSR); /* disable global interrupts */ |
pd->wIrqStatus = (u16)which_interrupt; |
pd->dwInterruptCount++; |
wake_up_interruptible(&pd->event_queue); /* stop blocking if any */ |
return IRQ_RETVAL(1); |
} |
} |
return IRQ_RETVAL(0); |
} |
static int request_io_memory(PCIConfig *pPch) |
{ |
if (check_mem_region(pci_resource_start(pPch->pciDev, 0), LCR_SPACE)) |
{ |
PRINTK(KERN_DEBUG "%s : LCR 0x%08lx\n", DEVICE_NAME, pci_resource_start(pPch->pciDev, 0)); |
return -EBUSY; |
} |
if (check_mem_region(pci_resource_start(pPch->pciDev, 2), CTL_SPACE)) |
{ |
PRINTK(KERN_DEBUG "%s : CTL 0x%08lx\n", DEVICE_NAME, pci_resource_start(pPch->pciDev, 2)); |
return -EBUSY; |
} |
if (check_mem_region(pci_resource_start(pPch->pciDev, 2) + CTL_SPACE, VME_SPACE)) |
{ |
PRINTK(KERN_DEBUG "%s : VME 0x%08lx\n", DEVICE_NAME, pci_resource_start(pPch->pciDev, 2) + CTL_SPACE); |
return -EBUSY; |
} |
request_mem_region(pci_resource_start(pPch->pciDev, 0), LCR_SPACE, DEVICE_NAME); |
request_mem_region(pci_resource_start(pPch->pciDev, 2), CTL_SPACE, DEVICE_NAME); |
request_mem_region(pci_resource_start(pPch->pciDev, 2) + CTL_SPACE, VME_SPACE, DEVICE_NAME); |
return 0; |
} |
static void release_io_memory(PCIConfig *pPch) |
{ |
release_mem_region(pci_resource_start(pPch->pciDev, 0), LCR_SPACE); |
release_mem_region(pci_resource_start(pPch->pciDev, 2), CTL_SPACE); |
release_mem_region(pci_resource_start(pPch->pciDev, 2) + CTL_SPACE, VME_SPACE); |
} |
static int translate_addresses(DEVICE_OBJ *pd, PCIConfig *pPch) /* differs from PCICC32 */ |
{ |
if (pci_resource_start(pPch->pciDev, 0) < LOW_MEMORY) /* LCR ISA base addresses */ |
pd->pLCR = (u32)bus_to_virt(pci_resource_start(pPch->pciDev, 0)); |
else |
pd->pLCR = (u32)ioremap(pci_resource_start(pPch->pciDev, 0), LCR_SPACE); |
if (pci_resource_start(pPch->pciDev, 2) < LOW_MEMORY) /* User ISA base addresses */ |
{ |
pd->pCtl = (u32)bus_to_virt(pci_resource_start(pPch->pciDev, 2) ); |
pd->pVME = (u32)bus_to_virt(pci_resource_start(pPch->pciDev, 2) + CTL_SPACE); |
} |
else |
{ |
pd->pPhysVME = pci_resource_start(pPch->pciDev, 2) + CTL_SPACE; |
pd->pCtl = (u32)ioremap(pci_resource_start(pPch->pciDev, 2) , CTL_SPACE); |
pd->pVME = (u32)ioremap(pci_resource_start(pPch->pciDev, 2) + CTL_SPACE, VME_SPACE); |
} |
return 0; |
} |
static void un_translate_addresses(DEVICE_OBJ *pd, PCIConfig *pPch) |
{ |
if (pci_resource_start(pPch->pciDev, 0) >= LOW_MEMORY) /* no LCR ISA base addresses */ |
iounmap((void *)pd->pLCR); |
if (pci_resource_start(pPch->pciDev, 2) >= LOW_MEMORY) |
{ |
pd->pPhysVME = 0; |
iounmap((void *)pd->pCtl); |
iounmap((void *)pd->pVME); |
} |
} |
static void soft_init(DEVICE_OBJ *pd) |
{ |
if (pd) |
{ |
init_waitqueue_head(&pd->event_queue); |
pd->pLCR = pd->pCtl = pd->pVME = 0; |
pd->pPch = (PCIConfig *)NULL; |
pd->bConnected = 0; |
pd->wInitStep = 0; |
pd->wIrq = 0xFFFF; |
pd->dwInterruptCount = 0; |
pd->wIrqStatus = 0; |
pd->nOpenCounter = 0; |
pd->cModuleNumber = 255; |
pd->cFPGAVersion = 255; |
pd->cSystemController = 0; |
pd->cWordMode = 0; |
pd->pAdrMod = 0; |
pd->pAdrReg = 0; |
pd->pCSR = 0; |
pd->pPCIADACntrl = 0; |
pd->pPCIADAIntCSR = 0; |
pd->bCurrentModifier = 0; |
pd->dwCurrentPageAddress = -1; |
pd->currentMap.pageptr = NOPAGE_SIGBUS; |
pd->currentMap.addr = 0; |
} |
} |
int test_connection(DEVICE_OBJ *pd) |
{ |
u16 intCSR_store; |
u16 cntrl_store; |
int i; |
int error = 0; |
u32 dwADRH = pd->pCtl + ADRH; |
u32 dwADRL = pd->pCtl + ADRL; |
u32 dwADRHL = pd->pCtl + ADRHL; |
u32 dwStore; |
u16 wRet; |
cntrl_store = readw((const volatile void *) pd->pPCIADACntrl); /* read CONTROL register */ |
intCSR_store = readw((const volatile void *) pd->pPCIADAIntCSR); /* read interrupt + CSR register */ |
writew(0, (volatile void *) pd->pPCIADAIntCSR); /* disable interrupts */ |
writew(cntrl_store | 0x0180, (volatile void *) pd->pPCIADACntrl); /* enable access */ |
// save adr register |
dwStore = readl((const volatile void *) dwADRHL); |
for (i = 1000; i; i--) |
{ |
writew(0x5555, (volatile void *) dwADRH); |
writew(0xAAAA, (volatile void *) dwADRL); |
wRet = readw((const volatile void *) dwADRH); |
if (wRet != 0x5555) |
{ |
error = 1; |
break; |
} |
writew(0xAAAA, (volatile void *) dwADRH); |
writew(0x5555, (volatile void *) dwADRL); |
wRet = readw((const volatile void *) dwADRH); |
if (wRet != 0xAAAA) |
{ |
error = 1; |
break; |
} |
writew(0x0000, (volatile void *) dwADRH); |
writew(0xFFFF, (volatile void *) dwADRL); |
wRet = readw((const volatile void *) dwADRH); |
if (wRet != 0x0000) |
{ |
error = 1; |
break; |
} |
writew(0xFFFF, (volatile void *) dwADRH); |
writew(0x0000, (volatile void *) dwADRL); |
wRet = readw((const volatile void *) dwADRH); |
if (wRet != 0xFFFF) |
{ |
error = 1; |
break; |
} |
} |
// restore register |
writel(dwStore, (volatile void *) dwADRHL); |
//clear possible interrupts |
writew(cntrl_store & ~0x0100, (volatile void *) pd->pPCIADACntrl); /* clear potential interrupt */ |
// restore LCR registers |
writew(cntrl_store, (volatile void *) pd->pPCIADACntrl); |
writew(intCSR_store, (volatile void *) pd->pPCIADAIntCSR); |
return error; |
} |
int get_module_info(DEVICE_OBJ *pd) |
{ |
u16 intCSR_store; |
u16 cntrl_store; |
int found = 0; |
u16 data; |
cntrl_store = readw((const volatile void *) pd->pPCIADACntrl); /* read CONTROL register */ |
intCSR_store = readw((const volatile void *) pd->pPCIADAIntCSR); /* read interrupt + CSR register */ |
PRINTK(KERN_DEBUG "%s : cntrl=0x%04x, intCSR=0x%04x\n", DEVICE_NAME, cntrl_store, intCSR_store); |
if (cntrl_store & 0x0800) /* a VMEMM is connected */ |
{ |
u16 bla = cntrl_store | 0x0180; |
writew(0, (volatile void *) pd->pPCIADAIntCSR); /* disable interrupts */ |
writew(bla, (volatile void *) pd->pPCIADACntrl); /* enable access */ |
// read main status register |
data = readw((const volatile void *) pd->pCSR); |
if ((data & 0xF000) != VMEMM_MODULE_TYPE) |
{ |
pd->cModuleNumber = pd->cFPGAVersion = 255; |
printk(KERN_ERR "%s : Wrong module type connected @ index %d!\n", DEVICE_NAME, pd->wIndex); |
} |
else |
{ |
found = 1; |
pd->cModuleNumber = (data >> 4) & 0xF; |
pd->cFPGAVersion = (data >> 8) & 0xF; |
pd->cSystemController = (data & 0x0008); |
pd->cWordMode = (data & 0x0004); |
} |
// clear possible interrupts |
writew(cntrl_store & ~0x0100, (volatile void *) pd->pPCIADACntrl); /* clear potential interrupt */ |
/* restore all contents */ |
writew(cntrl_store, (volatile void *) pd->pPCIADACntrl); |
writew(intCSR_store, (volatile void *) pd->pPCIADAIntCSR); |
} |
return found; |
} |
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) |
static int pcivme_read_proc(char *buf, char **start, off_t offset, int len) |
#else |
static int pcivme_read_proc(char *buf, char **start, off_t offset, int len, int *eof, void *data) |
#endif |
{ |
int pos = 0; |
DEVICE_OBJ *pd; |
PCIConfig *ch; |
u16 cntrl; |
char *cause = "none"; |
struct list_head *ptr; |
pos += sprintf(buf + pos, "\nPCIVME information. Version %d.%d of %s from Klaus Hitschler.\n", VERSION_HI, VERSION_LO, __DATE__); |
pos += sprintf(buf + pos, " ---------------------\n"); |
pos += sprintf(buf + pos, " Interfaces found : %d\n", drv.count); |
pos += sprintf(buf + pos, " Major Number : %d\n", drv.nMajor); |
for (ptr = drv.devList.next; ptr != &drv.devList; ptr = ptr->next) |
{ |
pd = list_entry(ptr, DEVICE_OBJ, list); |
ch = pd->pPch; |
cntrl = readw((const volatile void *)(pd->pLCR + PLX9050_CNTRL)); |
pos += sprintf(buf + pos, " --- %d ---------------\n", pd->wIndex + 1); |
pos += sprintf(buf + pos, " LCR phys/virt/size : 0x%08lx/0x%08x/%d\n",(long unsigned int) pci_resource_start(ch->pciDev, 0), pd->pLCR, LCR_SPACE); |
pos += sprintf(buf + pos, " Control phys/virt/size : 0x%08lx/0x%08x/%d\n",(long unsigned int) pci_resource_start(ch->pciDev, 2), pd->pCtl, CTL_SPACE); |
pos += sprintf(buf + pos, " VME phys/virt/size : 0x%08lx/0x%08x/%d\n",(long unsigned int) pci_resource_start(ch->pciDev, 2) + CTL_SPACE, pd->pVME, VME_SPACE); |
pos += sprintf(buf + pos, " Irq : %d\n", pd->wIrq); |
if (pd->bConnected) |
{ |
pos += sprintf(buf + pos, " VMEMM is or was : (software) connected.\n"); |
pos += sprintf(buf + pos, " Module-Number : %d\n", pd->cModuleNumber); |
pos += sprintf(buf + pos, " FPGA-Version : %d\n", pd->cFPGAVersion); |
pos += sprintf(buf + pos, " Systemcontroller : %s\n", (pd->cSystemController) ? "yes" : "no"); |
pos += sprintf(buf + pos, " Word Mode : %s\n", (pd->cWordMode) ? "yes" : "no"); |
} |
else |
pos += sprintf(buf + pos, " VMEMM is or was : not (software) connected.\n"); |
if (!((cntrl & 0x0800) && (!(cntrl & 0x0600)))) |
pos += sprintf(buf + pos, " VMEMM is : powered off or cable disconnected.\n"); |
pos += sprintf(buf + pos, " IrqCount : %d\n", pd->dwInterruptCount); |
if (pd->wIrqStatus & PCIADA_INTERRUPT) |
cause = "Timeout"; |
else |
if (pd->wIrqStatus & VMEMM_INTERRUPT) |
cause = "VME"; |
pos += sprintf(buf + pos, " Pending IrqStatus : %s\n", cause); |
} |
pos += sprintf(buf + pos, "\n"); |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0) |
*eof = 1; |
#endif |
return pos; |
} |
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) |
struct proc_dir_entry pcimod_proc_entry = |
{ |
namelen: 7, /* len of name */ |
name: DEVICE_NAME, /* entry name */ |
mode: S_IFREG | S_IRUGO, /* mode */ |
nlink: 1, /* nlinks */ |
get_info: pcivme_read_proc, /* function used to read data */ |
}; |
#endif |
static void deleteMyLists(void) |
{ |
DEVICE_OBJ *pd; |
/* delete my lists */ |
while (!list_empty(&drv.devList)) // cycle through the list of pci devices and remove them |
{ |
pd = (DEVICE_OBJ *)drv.devList.prev; // empty in reverse order |
list_del(&pd->list); |
kfree(pd); |
} |
DeletePCIConfig(&drv); |
} |
int init_module(void) |
{ |
PCIConfig *ch; |
DEVICE_OBJ *pd; |
int result = 0; |
struct list_head *ptr; |
PRINTK(KERN_DEBUG "%s : init_module\n", DEVICE_NAME); |
/* create list of PCIADAs and work devices */ |
INIT_LIST_HEAD(&drv.devList); |
INIT_LIST_HEAD(&drv.pciList); |
drv.count = 0; |
/* search for all PCIADA modules */ |
if ((result = GetPCIConfig(&drv, PCIVME_DEVICE_ID, PCIVME_VENDOR_ID, PCIVME_SUBSYS_ID, PCIVME_SUBVEN_ID))) |
{ |
deleteMyLists(); |
return result; |
} |
/* fix the PLX bug in all PCIADAs */ |
for (ptr = drv.pciList.next; ptr != &drv.pciList; ptr = ptr->next) |
{ |
ch = list_entry(ptr, PCIConfig, list); |
PLX9050BugFix(ch); |
} |
/* create work_devices and translate the access addresses */ |
for (ptr = drv.pciList.next; ptr != &drv.pciList; ptr = ptr->next) |
{ |
ch = list_entry(ptr, PCIConfig, list); |
pd = (DEVICE_OBJ *)kmalloc(sizeof(DEVICE_OBJ), GFP_ATOMIC); |
soft_init(pd); |
pd->pPch = ch; |
pd->wIndex = drv.count; |
if (!request_io_memory(ch)) |
{ |
pd->wInitStep = 1; |
if (translate_addresses(pd, ch)) |
{ |
printk(KERN_ERR "%s : translation of addresses failed!\n", DEVICE_NAME); |
kfree_s(pd, sizeof(*pd)); // FREE(pd); |
} |
else |
{ |
// successful translate_addresses |
pd->wInitStep = 2; |
// create some 'fast access' addresses |
pd->pAdrMod = pd->pCtl + VICBASE + AMSR; |
pd->pAdrReg = pd->pCtl + ADRHL; |
pd->pCSR = pd->pCtl + CSR; |
pd->pPCIADACntrl = pd->pLCR + PLX9050_CNTRL; |
pd->pPCIADAIntCSR = pd->pLCR + PLX9050_INTCSR; |
if (request_irq(pd->pPch->pciDev->irq, pcivme_irqhandler, IRQF_DISABLED| IRQF_SHARED, DEVICE_NAME, pd)) |
{ |
printk(KERN_ERR "%s : can't get irq @ %d\n", DEVICE_NAME, pd->pPch->pciDev->irq); |
kfree_s(pd, sizeof(*pd)); // FREE(pd); |
} |
else |
{ |
// successful request_irq |
pd->wInitStep = 3; |
pd->wIrq = pd->pPch->pciDev->irq; |
list_add_tail(&pd->list, &drv.devList); /* add this device to list of working devices*/ |
drv.count++; |
pd->bConnected = get_module_info(pd); |
if (pd->bConnected && test_connection(pd)) |
{ |
printk(KERN_ERR "%s : connection test @ driver install failed!\n", DEVICE_NAME); |
pd->bConnected = 0; |
} |
} |
} |
} |
else |
printk(KERN_ERR "%s : requested io-memory still claimed!\n", DEVICE_NAME); |
} |
drv.nMajor = MAJOR_NO; |
result = register_chrdev(drv.nMajor, DEVICE_NAME, &pcivme_fops); |
if (result < 0) |
{ |
printk(KERN_ERR "%s: Can't install driver (%d)\n", DEVICE_NAME, result); |
/* untranslate translated addresses */ |
for (ptr = drv.devList.next; ptr != &drv.devList; ptr = ptr->next) |
{ |
pd = list_entry(ptr, DEVICE_OBJ, list); |
ch = pd->pPch; |
un_translate_addresses(pd, ch); |
} |
/* delete my lists */ |
deleteMyLists(); |
return result; |
} |
else |
{ |
if (drv.nMajor == 0) |
drv.nMajor = result; |
printk(KERN_DEBUG "%s : major #%d assigned.\n", DEVICE_NAME, drv.nMajor); |
} |
/* register the proc device */ |
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) |
proc_register_dynamic(&proc_root, &pcimod_proc_entry); |
return 0; |
#else |
return create_proc_read_entry(DEVICE_NAME, 0, NULL, pcivme_read_proc, NULL) ? 0 : -ENODEV; |
#endif |
} |
void cleanup_module(void) |
{ |
PCIConfig *ch; |
DEVICE_OBJ *pd; |
struct list_head *ptr; |
PRINTK(KERN_DEBUG "%s : cleanup_module.\n", DEVICE_NAME); |
unregister_chrdev(drv.nMajor, DEVICE_NAME); |
/* unregister the proc device */ |
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) |
proc_unregister(&proc_root, pcimod_proc_entry.low_ino); |
#else |
remove_proc_entry(DEVICE_NAME, NULL); |
#endif |
/* redo all */ |
for (ptr = drv.devList.next; ptr != &drv.devList; ptr = ptr->next) |
{ |
pd = list_entry(ptr, DEVICE_OBJ, list); |
ch = pd->pPch; |
switch (pd->wInitStep) |
{ |
case 3: writew(readw((const volatile void *)(pd->pLCR + PLX9050_INTCSR)) & ~0x40, (volatile void *) (pd->pLCR + PLX9050_INTCSR)); // disable global interrupts |
free_irq(pd->wIrq, pd); |
case 2: un_translate_addresses(pd, ch); |
case 1: release_io_memory(ch); |
default: pd->wInitStep = 0; |
} |
drv.count--; |
} |
deleteMyLists(); |
return; |
} |
/pcivme-3.2/driver/.tmp_versions/pcivme.mod |
---|
0,0 → 1,2 |
/home/f9daq/pcivme-3.2/driver/pcivme.ko |
/home/f9daq/pcivme-3.2/driver/./main.o /home/f9daq/pcivme-3.2/driver/./askpci.o /home/f9daq/pcivme-3.2/driver/./plxbug.o /home/f9daq/pcivme-3.2/driver/./fops.o |
/pcivme-3.2/driver/plx9050.h |
---|
0,0 → 1,156 |
#ifndef __PLX9050_H__ |
#define __PLX9050_H__ |
//**************************************************************************** |
// Copyright (C) 2000-2004 ARW Elektronik Germany |
// |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// plx9050.h - Include header for the PCIbus target |
// interface chip PLX9050 from PLX Technology (www.plxtech.com) |
// |
// $Log: plx9050.h,v $ |
// Revision 1.6 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.3 2002/10/10 18:57:46 klaus |
// source beautyfied |
// |
// derived from original code from Dirk Muehlenberg and ? Mathes AR 18.02.2000 |
// |
//**************************************************************************** |
#include <asm/io.h> |
/* |
* defining the offsets from PCI CFG Register Area |
* (PCI registers, only accessible during a configuration 0 cycle) |
*/ |
/* 15:0 VendorId | 31:16 DeviceId */ |
#define PLX9050_PCIIDR 0x0 |
#define PLX9050_PCICR 0x4 |
#define PLX9050_PCISR 0x6 |
#define PLX9050_PCIREV 0x8 |
#define PLX9050_PCICCR 0xB |
#define PLX9050_PCICLSR 0xC |
#define PLX9050_PCILTR 0xD |
#define PLX9050_PCIHTR 0xE |
#define PLX9050_PCIBISTR 0xF |
/* |
** PCI Base Address Register |
*/ |
#define PLX9050_PCIBAR0 0x10 |
#define PLX9050_PCIBAR1 0x14 |
#define PLX9050_PCIBAR2 0x18 |
#define PLX9050_PCIBAR3 0x1C |
#define PLX9050_PCIBAR4 0x20 |
#define PLX9050_PCIBAR5 0x24 |
#define PLX9050_PCICIS 0x28 |
/* 15:0 Subsystem VendorId */ |
#define PLX9050_PCISVID 0x2C |
#define PLX9050_PCIERBAR 0x30 |
/* interrupt line routing */ |
#define PLX9050_PCIILR 0x3C |
/* interrupt pin register */ |
#define PLX9050_PCIIPR 0x3D |
#define PLX9050_PCIMGR 0x3E |
#define PLX9050_PCIMLR 0x3F |
/* |
* defining the offsets from Local Base Address |
* (local configuration registers, accessible by way of i/o- or |
* memory cycle) |
*/ |
#define PLX9050_LAS0RR 0x0 |
#define PLX9050_LAS1RR 0x4 |
#define PLX9050_LAS2RR 0x8 |
#define PLX9050_LAS3RR 0xC |
#define PLX9050_EROMRR 0x10 |
#define PLX9050_LAS0BA 0x14 |
#define PLX9050_LAS1BA 0x18 |
#define PLX9050_LAS2BA 0x1C |
#define PLX9050_LAS3BA 0x20 |
#define PLX9050_EROMBA 0x24 |
/* |
* Local Address Space I Bus Region Descriptor Register |
* Bit |
* 0 : Burst enable |
* 1 : Ready Input Enable |
* 2 : Bterm Input Enable |
* 4:3 : Prefetch Count - 00 no, 01 4 lwords, 10 8 lwords, 11 16 lwords |
* 5 : Prefetch Count Enable |
*/ |
#define PLX9050_LAS0BRD 0x28 |
#define PLX9050_LAS1BRD 0x2C |
#define PLX9050_LAS2BRD 0x30 |
#define PLX9050_LAS3BRD 0x34 |
#define PLX9050_EROMBRD 0x38 |
#define PLX9050_CS0BASE 0x3C |
#define PLX9050_CS1BASE 0x40 |
#define PLX9050_CS2BASE 0x44 |
#define PLX9050_CS4BASE 0x48 |
#define PLX9050_INTCSR 0x4C |
#define PLX9050_CNTRL 0x50 |
#ifndef L_SETBIT |
#define L_SETBIT(addr, b) writel(readl(addr) | (1<<(b)), addr); |
#define W_SETBIT(addr, b) writew(readw(addr) | (1<<(b)), addr); |
#define B_SETBIT(addr, b) writeb(readb(addr) | (1<<(b)), addr); |
#define L_CLRBIT(addr, b) writel(readl(addr) & ~(1<<(b)), addr); |
#define W_CLRBIT(addr, b) writew(readw(addr) & ~(1<<(b)), addr); |
#define B_CLRBIT(addr, b) writeb(readb(addr) & ~(1<<(b)), addr); |
#endif |
#define PLX9050_ENABLE_BURST(base, i) L_SETBIT(base+PLX9050_LAS0BRD+i*4, 0) |
#define PLX9050_DISABLE_BURST(base, i) L_CLRBIT(base+PLX9050_LAS0BRD+i*4, 0) |
#define PLX9050_SET_PREFETCH0(base, i) writel(readl(base+PLX9050_LAS0BRD+i*4) & ~0x180 , base+PLX9050_LAS0BRD+i*4); |
#define PLX9050_SET_PREFETCH4(base, i) writel(readl(base+PLX9050_LAS0BRD+i*4) & ~0x180 | 0x80, base+PLX9050_LAS0BRD+i*4); |
#define PLX9050_SET_PREFETCH8(base, i) writel(readl(base+PLX9050_LAS0BRD+i*4) & ~0x180 | 0x100, base+PLX9050_LAS0BRD+i*4); |
#define PLX9050_SET_PREFETCH16(base, i) writel(readl(base+PLX9050_LAS0BRD+i*4) | 0x180, base+PLX9050_LAS0BRD+i*4); |
#endif /* __PLX9050_H__ */ |
/pcivme-3.2/driver/vic.h |
---|
0,0 → 1,135 |
#ifndef __VIC_H__ |
#define __VIC_H__ |
//**************************************************************************** |
// Copyright (C) 2001-2004 ARW Elktronik Germany |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
//**************************************************************************** |
//**************************************************************************** |
// |
// vic.h - all definitions about the VIC68A chip |
// |
// $Log: vic.h,v $ |
// Revision 1.6 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.3 2002/10/10 18:57:46 klaus |
// source beautyfied |
// |
//**************************************************************************** |
//**************************************************************************** |
// INCLUDES |
#include <linux/types.h> |
//**************************************************************************** |
// DEFINES |
#ifndef __KERNEL__ |
#define u8 __u8 |
#define u16 __u16 |
#define u32 __u32 |
#endif |
#define VICR1 (u16)0x07 /* VMEbus Interrupt Control Register #.. */ |
#define VICR2 (u16)0x0b |
#define VICR3 (u16)0x0f |
#define VICR4 (u16)0x13 |
#define VICR5 (u16)0x17 |
#define VICR6 (u16)0x1b |
#define VICR7 (u16)0x1f |
#define LICR1 (u16)0x27 /* Local interrupt control register .. */ |
#define LICR2 (u16)0x2b |
#define LICR3 (u16)0x2f |
#define LICR4 (u16)0x33 |
#define LICR5 (u16)0x37 |
#define LICR6 (u16)0x3b |
#define LICR7 (u16)0x3f |
#define LIVBR (u16)0x57 /* Local interrupt vector base register */ |
#define ICGSICR (u16)0x43 /* ICGS interrupt control register */ |
#define ICGSVBR (u16)0x4f /* ICGS vector base register */ |
#define ICMSICR (u16)0x47 /* ICMS interrupt control register */ |
#define ICMSVBR (u16)0x53 /* ICMS vector base register */ |
#define EGICR (u16)0x4b /* Error group interrupt control register */ |
#define EGIVBR (u16)0x5b /* Error group interrupt vector base rg */ |
#define ICSR (u16)0x5f /* Interprozessor communication switch rg */ |
#define ICR0 (u16)0x63 |
#define ICR1 (u16)0x67 |
#define ICR2 (u16)0x6b |
#define ICR3 (u16)0x6f |
#define ICR4 (u16)0x73 |
#define ICR5 (u16)0x77 |
#define ICR6 (u16)0x7b |
#define ICR7 (u16)0x7f |
#define VIICR (u16)0x03 /* VMEbus Interrupter Interrupt Control */ |
#define VIRSR (u16)0x83 /* VMEbus interrupt request status reg */ |
#define VIVR1 (u16)0x87 /* VMEbus interrupt vector register .. */ |
#define VIVR2 (u16)0x8b |
#define VIVR3 (u16)0x8f |
#define VIVR4 (u16)0x93 |
#define VIVR5 (u16)0x97 |
#define VIVR6 (u16)0x9b |
#define VIVR7 (u16)0x9f |
#define TTR (u16)0xa3 /* transfer timeout register */ |
#define LTR (u16)0xa7 /* local timing register */ |
#define ICR (u16)0xaf /* interface configuration register */ |
#define ARCR (u16)0xb3 /* arbiter/requester configuration register*/ |
#define AMSR (u16)0xb7 /* address modifier source register */ |
#define BESR (u16)0xbb /* bus error source register */ |
#define DSICR (u16)0x23 /* DMA status interrupt control register */ |
#define DSR (u16)0xbf /* DMA status register */ |
#define SSCR00 (u16)0xc3 /* slave select 0 control register 0 */ |
#define SSCR01 (u16)0xc7 /* slave select 0 control register 1 */ |
#define SSCR10 (u16)0xcb /* slave select 1 control register 0 */ |
#define SSCR11 (u16)0xcf /* slave select 1 control register 1 */ |
#define RCR (u16)0xd3 /* release control register */ |
#define BTDR (u16)0xab /* block transfer definition register */ |
#define BTCR (u16)0xd7 /* block transfer control register */ |
#define BTLR0 (u16)0xdb /* block transfer length register 0 */ |
#define BTLR1 (u16)0xdf /* block transfer length register 1 */ |
#define SRR (u16)0xe3 /* system reset register */ |
#endif // __VIC_H__ |
/pcivme-3.2/driver/pcivme.h |
---|
0,0 → 1,212 |
#ifndef __PCIVME_H__ |
#define __PCIVME_H__ |
//**************************************************************************** |
// Copyright (C) 2000-2004 ARW Elektronik Germany |
// |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// pcivme.h -- the common header for driver and applications for the PCIVME |
// PCI to VME Interface |
// All commands and constants are similiar to WIN?? drivers, but |
// not equal. Please check if you cross-port or develop. |
// |
// $Log: pcivme.h,v $ |
// Revision 1.9 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.8 2003/06/27 17:25:52 klaus |
// incomplete try to get mmap() with nopage() running for automatic page switch |
// |
// Revision 1.7 2002/10/20 18:06:51 klaus |
// changed error handling |
// |
// Revision 1.6 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/17 19:05:03 klaus |
// VME access is working through test to lib to driver |
// |
//**************************************************************************** |
#include <linux/types.h> |
#include <asm/ioctl.h> |
#define PCIVME_MAGIC ' ' |
#define MAX_INIT_ELEMENTS 20 // maximum number of init in PCIVME_(DE)INIT_HARDWARE |
#ifndef __KERNEL__ |
#define u8 __u8 |
#define u16 __u16 |
#define u32 __u32 |
#endif |
//---------------------------------------------------------------------------- |
// shared structures between driver & app to support ioctls ------------------ |
typedef struct // one command element to initialize interface or deinitialize |
{ |
u8 bDestination; // 0 = lcr, 1 = vme-interface, -1 = stop |
u8 bAccessType; // 1 = byte access, 2 = word access, 4 = long access |
u16 wOffset; // offset into interface address range for initialisation |
u32 dwValue; // value to initialize |
} PCIVME_INIT_ELEMENT; |
typedef struct |
{ |
PCIVME_INIT_ELEMENT sVie[MAX_INIT_ELEMENTS]; // at least one zero element must be the last |
} PCIVME_INIT_COMMAND; |
typedef struct |
{ |
u8 bModifier; // set the current modifier |
u8 bAccessType; // set the current access type (1,2,4), not used |
u8 bIncrement; // set the current byte increment count, not used |
u8 bDummy; // reserved |
} PCIVME_ACCESS_COMMAND; |
typedef struct |
{ |
u32 dwAddress; // tas to address |
u8 bModifier; // VME address modifier for this window |
u8 bContent; // content to store and get back |
} PCIVME_TAS_STRUCT; |
typedef struct |
{ |
u16 wRegisterAddress; // address offset of vic68a register |
u8 bAccessMode; // read, write, or, and |
u8 bContent; // content to write, and, or |
u8 bDummy; // reserved |
} PCIVME_VIC68A_ACTION; |
typedef struct |
{ |
u8 bEnable; // set to 0 to disable, != 0 to enable |
u8 bDummy; // reserved |
} PCIVME_IRQ_CONTROL; |
typedef struct |
{ |
u8 bCommand; // makes and reads different reset commands |
u8 bResult; // return result, == 0 if command has finished |
} PCIVME_RESET_COMMAND; |
typedef struct // static information about status of PCIADA & VMEMM |
{ |
u8 bConnected; // is it or it was software connected |
u8 cModuleNumber; // module number |
u8 cFPGAVersion; // FPGA Version number |
u8 cSystemController; // set if VMEMM is system controller |
u8 cWordMode; // set if VMEMM is jumpered to word mode |
u8 bDummy; // reserved |
} PCIVME_STATIC_STATUS; |
typedef struct // dynamic information about status of PCIADA & VMEMM |
{ |
u8 bConnected; // the current cable connection state |
u8 bPCIADAIrq; // interrupt pending due to timeout or connection fail |
u8 bVMEMMIrq; // interrupt pending due to VMEMM event |
u8 bDummy; // reserved |
} PCIVME_DYNAMIC_STATUS; |
typedef struct |
{ |
u32 dwStatusID; // interrupt-vector (byte, word, long) |
u8 bLevel; // interrupt-level |
u8 bPCIADAIrq; // pending PCIADA Irq detected and cleared |
} PCIVME_VECTOR_LEVEL; |
//---------------------------------------------------------------------------- |
// commands to support ioctls ------------------------------------------------ |
#define PCIVME_INIT_HARDWARE _IOW(PCIVME_MAGIC, 1, PCIVME_INIT_COMMAND) // initializes the hardware with given parameters |
#define PCIVME_DEINIT_HARDWARE _IOW(PCIVME_MAGIC, 2, PCIVME_INIT_COMMAND) // uninitializes the hardware |
#define PCIVME_SET_ACCESS_PARA _IOWR(PCIVME_MAGIC, 3, PCIVME_ACCESS_COMMAND) // set the address modifier for this path |
#define PCIVME_GET_STATIC_STATUS _IOR(PCIVME_MAGIC, 4, PCIVME_STATIC_STATUS) // asks for static status of PCIADA & connected VMEMM |
#define PCIVME_GET_DYNAMIC_STATUS _IOR(PCIVME_MAGIC, 5, PCIVME_DYNAMIC_STATUS) // asks for dynamic status of PCIADA & connected VMEMM |
#define PCIVME_READ_VECTOR_POLL _IOR(PCIVME_MAGIC, 6, PCIVME_VECTOR_LEVEL) // reads the level and vector of IRQ |
#define PCIVME_READ_VECTOR_BLOCK _IOR(PCIVME_MAGIC, 7, PCIVME_VECTOR_LEVEL) // reads blocking the level and vector of IRQ |
#define PCIVME_CONTROL_INTERRUPTS _IOWR(PCIVME_MAGIC, 8, PCIVME_IRQ_CONTROL) // set, clear interrupt enable |
#define PCIVME_TAS _IOWR(PCIVME_MAGIC, 9, PCIVME_TAS_STRUCT) // make test and set |
#define PCIVME_RESET _IOWR(PCIVME_MAGIC, 10, PCIVME_RESET_COMMAND) // make a reset to VME or global |
#define PCIVME_ACCESS_VIC68A _IOWR(PCIVME_MAGIC, 11, PCIVME_VIC68A_ACTION) // access vic68a register (interface depended) |
//---------------------------------------------------------------------------- |
// input constants of ioctls ------------------------------------------------- |
// switches for PCIVME_INIT and DEINIT_COMMAND |
#define LCR (u8)0 // destination is PCIADA (LCR) register |
#define IFR (u8)1 // destination is VMEMM-Interface register |
#define VIC (u8)2 // destination is VIC68A register |
#define STOP (u8)255 // this command stops the init machine |
#define BYTE_ACCESS (u8)1 // write byte wise |
#define WORD_ACCESS (u8)2 // word |
#define LONG_ACCESS (u8)4 // long |
// switches for PCIVME_ACCESS_VIC68A |
#define VIC68A_READ 0 // read only access |
#define VIC68A_WRITE 1 // write and read back access |
#define VIC68A_OR 2 // read, bitwise 'or' content and read back access |
#define VIC68A_AND 3 // read, bitwise 'and' content and read back access |
#define VIC68A_WRITE_ONLY 4 // do not read back after write |
// switches for PCIVME_VECTOR_CMD |
#define READ_CURRENT_LEVEL 0 // try to get the current irq level |
#define READ_VECTOR 1 // (if level == 0) read vector @ current LEVEL else @ level |
// switches for the PCIVME_RESET |
#define VME_RESET_CMD 0 // raise a VME reset only |
#define LOCAL_RESET_CMD 1 // raise a local reset only |
#define GLOBAL_RESET_CMD 2 // raise a global reset |
#define POLL_RESET_CMD 3 // ask if reset is finished |
// address masks for the pager - to use for offset and size @ window alignment |
#define HI_ADDRESS_MASK (u32)0xFFFFF000 // masks the high part of a vme address |
#define LO_ADDRESS_MASK (~HI_ADDRESS_MASK) // masks the low part of a vme address |
#define ONE_PAGE_SIZE (LO_ADDRESS_MASK + 1) // size of 1 page (hardware related) |
// macros to calculate the real base and the real size of demand pages |
#define PCIVME_PAGE_BASE(base) (base & HI_ADDRESS_MASK) // makes an aligned base for a page |
#define PCIVME_PAGE_SIZE(base, size) (((base + size + LO_ADDRESS_MASK) / ONE_PAGE_SIZE) * ONE_PAGE_SIZE) |
//---------------------------------------------------------------------------- |
// results of ioctls --------------------------------------------------------- |
#define NOT_MY_INTERRUPT 0 |
#define PCIADA_INTERRUPT 1 |
#define VMEMM_INTERRUPT 2 |
#endif /* __PCIVME_H__ */ |
/pcivme-3.2/driver/main.h |
---|
0,0 → 1,151 |
#ifndef __MAIN_H__ |
#define __MAIN_H__ |
//**************************************************************************** |
// Copyright (C) 2000-2004 ARW Elektronik Germany |
// |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// main.h -- export parts of main.c |
// |
// $Log: main.h,v $ |
// Revision 1.7 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.6 2003/06/27 17:25:52 klaus |
// incomplete try to get mmap() with nopage() running for automatic page switch |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.3 2002/10/10 18:57:46 klaus |
// source beautyfied |
// |
//**************************************************************************** |
/*--- INCLUDES ----------------------------------------------------------------------------*/ |
#include <linux/wait.h> |
#include <linux/types.h> |
#include <linux/list.h> |
/*--- DEFINES -----------------------------------------------------------------------------*/ |
#define DEVICE_NAME "pcivme" |
#define LOW_MEMORY 0x1000000 // 1 Mbyte PC memory border |
#define LCR_SPACE 0x0080 // space in bytes of LCR |
#define IFR_SPACE 0x2000 // space in bytes of IFR |
#define CTL_SPACE 0x1000 // lower part of IFR_SPACE |
#define VME_SPACE (IFR_SPACE - CTL_SPACE) // higher part of IFR_SPACE used for VME window |
#define RELEASE_VMEMM (u16)0x4180 // write this to release access .. |
#define INHIBIT_VMEMM (u16)0x4080 // write this to inhibit access .. |
#define ENABLE_PCIADA_IRQS (u16)0x0049 // enable PCIADA IRQs |
#define DISABLE_PCIADA_IRQS (u16)0x0009 // disable PCIADA IRQs |
/*--- TYPEDEFS ----------------------------------------------------------------------------*/ |
typedef struct |
{ |
struct list_head devList; // link anchor for list of devices |
struct list_head pciList; // link anchor of all unchecked PCIADAs found |
u32 nMajor; // asigned major number |
int count; // count of found devices |
} DRIVER_OBJ; |
typedef struct |
{ |
struct list_head list; // chained list of found and not checked devices |
struct pci_dev *pciDev; // associated pci descriptors of the system |
u16 index; |
} PCIConfig; |
typedef struct |
{ |
struct vm_area_struct *vma; |
struct page *pageptr; // the current active pageptr |
unsigned long addr; // related user address |
} MMAP_INFO; |
typedef struct |
{ |
struct list_head list; /* chain element of list */ |
u16 wIndex; /* running index of all PCIADAs */ |
PCIConfig *pPch; /* associated PCI configuration */ |
u32 pLCR; /* base of LCR */ |
u32 pCtl; /* base of control area */ |
u32 pVME; /* base of VME access area */ |
u32 pPhysVME; /* physical address of VME window */ |
u8 bConnected; /* is it connected ?? */ |
u16 wInitStep; /* trace of initialisation */ |
u16 wIrq; /* the assigned irq */ |
u32 dwInterruptCount; /* counts the VME and timeout interrupts */ |
u16 wIrqStatus; /* last cause / status of interrupts */ |
int nOpenCounter; /* counts the open path to this device */ |
wait_queue_head_t event_queue; /* handle interrupt events */ |
u32 pAdrMod; /* address of address modifier register in VIC */ |
u32 pAdrReg; /* address of VMEMM VME address register */ |
u32 pCSR; /* address of the VMEMM CSR register */ |
u32 pPCIADACntrl; /* address of the PCIADA control register */ |
u32 pPCIADAIntCSR; /* address of the PCIADA INTCSR register */ |
u8 cModuleNumber; /* module number */ |
u8 cFPGAVersion; /* FPGA Version number */ |
u8 cSystemController; /* set if VMEMM is system controller */ |
u8 cWordMode; /* set if VMEMM is jumpered to word mode */ |
u8 bCurrentModifier; /* the current set address modifier of this device */ |
u32 dwCurrentPageAddress; /* the current page address association */ |
MMAP_INFO currentMap; /* information about current mapped page */ |
} DEVICE_OBJ; |
typedef struct |
{ |
DEVICE_OBJ *pDo; /* pointer to my PCIADA & connected VMEMM */ |
u8 bModifier; /* the associated address modifier of this device */ |
u8 bAccessType; /* the next access is byte, word, longword - not for memory mapped access */ |
u8 bIncrement; /* the next increment, normally like accesstype or 0*/ |
void (*read)(DEVICE_OBJ*, void**, u32); /* predifined read function */ |
void (*write)(DEVICE_OBJ*, u32, void**); /* same for write */ |
int (*AlignmentCheck)(loff_t offset); /* function to check access alignment */ |
} PATH_OBJ; |
/*--- PROTOTYPES --------------------------------------------------------------------------*/ |
int get_module_info(DEVICE_OBJ *pd); |
int test_connection(DEVICE_OBJ *pd); |
/*--- PROTOTYPES --------------------------------------------------------------------------*/ |
extern DRIVER_OBJ drv; /* driver globals */ |
#endif // __MAIN_H__ |
/pcivme-3.2/driver/.pcivme.ko.cmd |
---|
0,0 → 1,0 |
cmd_/home/f9daq/pcivme-3.2/driver/pcivme.ko := ld -r -m elf_i386 -T /usr/src/linux-headers-3.5.0-28-generic/scripts/module-common.lds --build-id -o /home/f9daq/pcivme-3.2/driver/pcivme.ko /home/f9daq/pcivme-3.2/driver/pcivme.o /home/f9daq/pcivme-3.2/driver/pcivme.mod.o |
/pcivme-3.2/driver/Makefile |
---|
0,0 → 1,186 |
#**************************************************************************** |
# Copyright (C) 2000-2004 ARW Elektronik Germany |
# |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 2 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
# |
# Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
#**************************************************************************** |
#**************************************************************************** |
# |
# Makefile - makefile for ARW Elektronik PCI to VME interfaces driver |
# |
# $Log: Makefile,v $ |
# Revision 1.2 2004/08/13 19:23:26 klaus |
# conversion to kernel-version 2.6, released version 3.0 |
# |
# Revision 1.1.1.2 2002/10/18 22:14:29 klaus |
# *** empty log message *** |
# |
# Revision 1.1.1.1 2002/10/09 19:36:30 klaus |
# initial import |
# |
# |
#**************************************************************************** |
#**************************************************************************** |
# please modify only here if your kernel path is elsewhere located |
# |
KERNEL_LOCATION =/usr/src/linux-headers-$(shell uname -r) |
EXTRA_CFLAGS := -I. |
#**************************************************************************** |
# removed old kernel source path retrival for support of kernels < 2.2.18! |
# old KERNSRC = /lib/modules/$(VERSION)/build |
# |
KERNSRC := $(KERNEL_LOCATION) |
#**************************************************************************** |
# whole makefile is based on availability of version.h file |
# do a forced stop if it is not available |
# |
HASVERSION_H := $(shell if test -f /usr/include/linux/version.h ; then echo yes ; else echo no; fi ) |
ifeq ($(HASVERSION_H),no) |
$(error "Can't find $(KERNEL_LOCATION)/include/linux/version.h !") |
else |
#**************************************************************************** |
# removed old version retrival for better cross compile support |
# old VERSION := $(shell uname -r) |
# |
VERSION := $(shell cpp -dM -I$(KERNEL_LOCATION)/include $(KERNEL_LOCATION)/include/generated/utsrelease.h \ |
| grep UTS_RELEASE | sed -e 's;[^"]*"\(.*\)";\1;g') |
#**************************************************************************** |
# where the driver should be installed - change here for cross install - currently not functional |
# |
INSTALL_LOCATION = /lib/modules/2.6.24-19-generic/ubuntu/misc/ |
#**************************************************************************** |
# get extracted kernel VERSION and PATCHLEVEL for comparison |
# decide to use KBUILD for kernels greater 2.6.0 |
# |
KVERSION := $(shell echo $(VERSION) | sed -e 's;\([1-9]\)\..*;\1;g' ) |
KPATCHLEVEL := $(shell echo $(VERSION) | sed -e 's;[1-9]\.\([0-9]\{0,3\}\)\..*;\1;g' ) |
USEKBUILD := $(shell if [ $(KVERSION) -gt 2 ] || [ $(KVERSION) -eq 2 ] && [ $(KPATCHLEVEL) -ge 6 ] ; \ |
then echo "yes" ; else echo "no" ; fi) |
USEKBUILD := yes |
#**************************************************************************** |
# some common switches and defines |
# |
DBG = __NO_DEBUG__ # or __DEBUG__ to debug the driver |
SRC = . |
#**************************************************************************** |
# preparation what to build or what to KBUILD |
# |
pcivme-objs := $(SRC)/main.o $(SRC)/askpci.o $(SRC)/plxbug.o $(SRC)/fops.o |
ifeq ($(USEKBUILD),yes) # <<<<< USEKBUILD >>>>>> |
#**************************************************************************** |
# what's the target |
# |
TARGET = pcivme.ko |
obj-m := pcivme.o |
#**************************************************************************** |
# add flags to standard flags |
# |
CPPFLAGS += -I$(PWD) -D$(DBG) |
#**************************************************************************** |
# do it |
# |
all : message |
$(MAKE) -C $(KERNSRC) M=$(PWD) V=$(VERBOSE) $(filter-out all, $(MAKECMDGOLAS)) modules |
else # <<<<< USEKBUILD >>>>>> |
#**************************************************************************** |
# additional common switches and defines |
# |
CC = gcc |
LD = ld |
INC = $(KERNSRC)/include |
DEP = .depend |
#**************************************************************************** |
# what's the target |
# |
TARGET = pcivme.o |
#**************************************************************************** |
# compile flags |
# |
CFLAGS = -O2 -D__KERNEL__ -DMODULE -Wall $(INCLUDE) -D$(DBG) |
#**************************************************************************** |
# do it |
# |
all: message $(TARGET) |
$(TARGET) : $(pcivme-objs) |
$(LD) -r $^ -o $@ |
#********** catch include file depencies ************************************ |
ifeq ($(DEP),$(wildcard $(DEP))) |
depend: |
makedepend -f$(DEP) -- $(CFLAGS) -- $(addsuffix .c, $(basename $(pcivme-objs))) -I$(INC) |
include $(DEP) |
else |
depend: |
touch $(DEP) |
makedepend -f$(DEP) -- $(CFLAGS) -- $(addsuffix .c, $(basename $(pcivme-objs))) -I$(INC) |
endif |
endif # <<<<< USEKBUILD >>>>>> |
#********** clean all for a rebuild ***************************************** |
clean: |
rm -f *~ $(TARGET) $(pcivme-objs) |
#********** clean all for a rebuild ***************************************** |
fresh: |
touch *.c |
make all |
#********** informations during build of driver ***************************** |
.PHONY : message |
message: |
@ echo "***" |
@ echo "*** Host machine kernel version=$(shell uname -r), Driver kernel version=$(VERSION), Path to kernel sources=$(KERNSRC), use KBUILD=$(USEKBUILD)" |
@ echo "***" |
#********** root installation only ****************************************** |
install: |
./pcivme_load 1 |
endif # <<<<< HASVERSION_H >>>>>> |
# DO NOT DELETE |
/pcivme-3.2/driver/vme.h |
---|
0,0 → 1,78 |
#ifndef __VME_H__ |
#define __VME_H__ |
//**************************************************************************** |
// Copyright (C) 2001-2004 ARW Elktronik Germany |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
//**************************************************************************** |
//**************************************************************************** |
// |
// vme.h - some important definitions about VME bus address modifiers |
// |
// $Log: vme.h,v $ |
// Revision 1.6 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.4 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.3 2002/10/10 18:57:46 klaus |
// source beautyfied |
// |
//**************************************************************************** |
//**************************************************************************** |
// INCLUDES |
#include <asm/types.h> |
//**************************************************************************** |
// DEFINES |
#ifndef __KERNEL__ |
#define u8 __u8 |
#define u16 __u16 |
#define u32 __u32 |
#endif |
typedef u16 ADDRESS_MODIFIER; |
#define Std_Sup_Data (ADDRESS_MODIFIER)0x3d |
#define Std_Sup_Prog (ADDRESS_MODIFIER)0x3e |
#define Std_NoPriv_Data (ADDRESS_MODIFIER)0x39 |
#define Std_NoPriv_Prog (ADDRESS_MODIFIER)0x3a |
#define Short_Sup (ADDRESS_MODIFIER)0x2d |
#define Short_NoPriv (ADDRESS_MODIFIER)0x29 |
#define Ext_Sup_Data (ADDRESS_MODIFIER)0x0d |
#define Ext_Sup_Prog (ADDRESS_MODIFIER)0x0e |
#define Ext_NoPriv_Data (ADDRESS_MODIFIER)0x09 |
#define Ext_NoPriv_Prog (ADDRESS_MODIFIER)0x0a |
#endif // __VME_H__ |
/pcivme-3.2/driver/.pcivme.mod.o.cmd |
---|
0,0 → 1,504 |
cmd_/home/f9daq/pcivme-3.2/driver/pcivme.mod.o := gcc -Wp,-MD,/home/f9daq/pcivme-3.2/driver/.pcivme.mod.o.d -nostdinc -isystem /usr/lib/gcc/i686-linux-gnu/4.6/include -I/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include -Iarch/x86/include/generated -Iinclude -include /usr/src/linux-headers-3.5.0-28-generic/include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i686 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_AVX=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=1024 -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I. -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(pcivme.mod)" -D"KBUILD_MODNAME=KBUILD_STR(pcivme)" -DMODULE -c -o /home/f9daq/pcivme-3.2/driver/pcivme.mod.o /home/f9daq/pcivme-3.2/driver/pcivme.mod.c |
source_/home/f9daq/pcivme-3.2/driver/pcivme.mod.o := /home/f9daq/pcivme-3.2/driver/pcivme.mod.c |
deps_/home/f9daq/pcivme-3.2/driver/pcivme.mod.o := \ |
$(wildcard include/config/module/unload.h) \ |
include/linux/module.h \ |
$(wildcard include/config/sysfs.h) \ |
$(wildcard include/config/modules.h) \ |
$(wildcard include/config/unused/symbols.h) \ |
$(wildcard include/config/generic/bug.h) \ |
$(wildcard include/config/kallsyms.h) \ |
$(wildcard include/config/smp.h) \ |
$(wildcard include/config/tracepoints.h) \ |
$(wildcard include/config/tracing.h) \ |
$(wildcard include/config/event/tracing.h) \ |
$(wildcard include/config/ftrace/mcount/record.h) \ |
$(wildcard include/config/constructors.h) \ |
$(wildcard include/config/debug/set/module/ronx.h) \ |
include/linux/list.h \ |
$(wildcard include/config/debug/list.h) \ |
include/linux/types.h \ |
$(wildcard include/config/uid16.h) \ |
$(wildcard include/config/lbdaf.h) \ |
$(wildcard include/config/arch/dma/addr/t/64bit.h) \ |
$(wildcard include/config/phys/addr/t/64bit.h) \ |
$(wildcard include/config/64bit.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/types.h \ |
include/asm-generic/types.h \ |
include/asm-generic/int-ll64.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bitsperlong.h \ |
include/asm-generic/bitsperlong.h \ |
include/linux/posix_types.h \ |
include/linux/stddef.h \ |
include/linux/compiler.h \ |
$(wildcard include/config/sparse/rcu/pointer.h) \ |
$(wildcard include/config/trace/branch/profiling.h) \ |
$(wildcard include/config/profile/all/branches.h) \ |
$(wildcard include/config/enable/must/check.h) \ |
$(wildcard include/config/enable/warn/deprecated.h) \ |
include/linux/compiler-gcc.h \ |
$(wildcard include/config/arch/supports/optimized/inlining.h) \ |
$(wildcard include/config/optimize/inlining.h) \ |
include/linux/compiler-gcc4.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/posix_types.h \ |
$(wildcard include/config/x86/32.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/posix_types_32.h \ |
include/asm-generic/posix_types.h \ |
include/linux/poison.h \ |
$(wildcard include/config/illegal/pointer/value.h) \ |
include/linux/const.h \ |
include/linux/stat.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/stat.h \ |
include/linux/time.h \ |
$(wildcard include/config/arch/uses/gettimeoffset.h) \ |
include/linux/cache.h \ |
$(wildcard include/config/arch/has/cache/line/size.h) \ |
include/linux/kernel.h \ |
$(wildcard include/config/preempt/voluntary.h) \ |
$(wildcard include/config/debug/atomic/sleep.h) \ |
$(wildcard include/config/prove/locking.h) \ |
$(wildcard include/config/ring/buffer.h) \ |
$(wildcard include/config/numa.h) \ |
$(wildcard include/config/compaction.h) \ |
include/linux/sysinfo.h \ |
/usr/lib/gcc/i686-linux-gnu/4.6/include/stdarg.h \ |
include/linux/linkage.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/linkage.h \ |
$(wildcard include/config/x86/64.h) \ |
$(wildcard include/config/x86/alignment/16.h) \ |
include/linux/stringify.h \ |
include/linux/bitops.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bitops.h \ |
$(wildcard include/config/x86/cmov.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/alternative.h \ |
$(wildcard include/config/paravirt.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/asm.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cpufeature.h \ |
$(wildcard include/config/x86/invlpg.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/required-features.h \ |
$(wildcard include/config/x86/minimum/cpu/family.h) \ |
$(wildcard include/config/math/emulation.h) \ |
$(wildcard include/config/x86/pae.h) \ |
$(wildcard include/config/x86/cmpxchg64.h) \ |
$(wildcard include/config/x86/use/3dnow.h) \ |
$(wildcard include/config/x86/p6/nop.h) \ |
include/asm-generic/bitops/fls64.h \ |
include/asm-generic/bitops/find.h \ |
$(wildcard include/config/generic/find/first/bit.h) \ |
include/asm-generic/bitops/sched.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/arch_hweight.h \ |
include/asm-generic/bitops/const_hweight.h \ |
include/asm-generic/bitops/le.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/byteorder.h \ |
include/linux/byteorder/little_endian.h \ |
include/linux/swab.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/swab.h \ |
$(wildcard include/config/x86/bswap.h) \ |
include/linux/byteorder/generic.h \ |
include/asm-generic/bitops/ext2-atomic-setbit.h \ |
include/linux/log2.h \ |
$(wildcard include/config/arch/has/ilog2/u32.h) \ |
$(wildcard include/config/arch/has/ilog2/u64.h) \ |
include/linux/typecheck.h \ |
include/linux/printk.h \ |
$(wildcard include/config/printk.h) \ |
$(wildcard include/config/dynamic/debug.h) \ |
include/linux/init.h \ |
$(wildcard include/config/hotplug.h) \ |
include/linux/dynamic_debug.h \ |
include/linux/string.h \ |
$(wildcard include/config/binary/printf.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/string.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/string_32.h \ |
$(wildcard include/config/kmemcheck.h) \ |
include/linux/errno.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/errno.h \ |
include/asm-generic/errno.h \ |
include/asm-generic/errno-base.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/div64.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cache.h \ |
$(wildcard include/config/x86/l1/cache/shift.h) \ |
$(wildcard include/config/x86/internode/cache/shift.h) \ |
$(wildcard include/config/x86/vsmp.h) \ |
include/linux/seqlock.h \ |
include/linux/spinlock.h \ |
$(wildcard include/config/debug/spinlock.h) \ |
$(wildcard include/config/generic/lockbreak.h) \ |
$(wildcard include/config/preempt.h) \ |
$(wildcard include/config/debug/lock/alloc.h) \ |
include/linux/preempt.h \ |
$(wildcard include/config/debug/preempt.h) \ |
$(wildcard include/config/preempt/tracer.h) \ |
$(wildcard include/config/preempt/count.h) \ |
$(wildcard include/config/preempt/notifiers.h) \ |
include/linux/thread_info.h \ |
$(wildcard include/config/compat.h) \ |
$(wildcard include/config/debug/stack/usage.h) \ |
include/linux/bug.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bug.h \ |
$(wildcard include/config/bug.h) \ |
$(wildcard include/config/debug/bugverbose.h) \ |
include/asm-generic/bug.h \ |
$(wildcard include/config/generic/bug/relative/pointers.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/thread_info.h \ |
$(wildcard include/config/ia32/emulation.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_32_types.h \ |
$(wildcard include/config/highmem4g.h) \ |
$(wildcard include/config/highmem64g.h) \ |
$(wildcard include/config/page/offset.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_32.h \ |
$(wildcard include/config/hugetlb/page.h) \ |
$(wildcard include/config/debug/virtual.h) \ |
$(wildcard include/config/flatmem.h) \ |
$(wildcard include/config/x86/3dnow.h) \ |
include/asm-generic/memory_model.h \ |
$(wildcard include/config/discontigmem.h) \ |
$(wildcard include/config/sparsemem/vmemmap.h) \ |
$(wildcard include/config/sparsemem.h) \ |
include/asm-generic/getorder.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/processor.h \ |
$(wildcard include/config/cc/stackprotector.h) \ |
$(wildcard include/config/m386.h) \ |
$(wildcard include/config/m486.h) \ |
$(wildcard include/config/x86/debugctlmsr.h) \ |
$(wildcard include/config/cpu/sup/amd.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/processor-flags.h \ |
$(wildcard include/config/vm86.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/vm86.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ptrace.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ptrace-abi.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/segment.h \ |
$(wildcard include/config/x86/32/lazy/gs.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/paravirt_types.h \ |
$(wildcard include/config/x86/local/apic.h) \ |
$(wildcard include/config/paravirt/debug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/desc_defs.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/kmap_types.h \ |
$(wildcard include/config/debug/highmem.h) \ |
include/asm-generic/kmap_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_types.h \ |
$(wildcard include/config/compat/vdso.h) \ |
$(wildcard include/config/proc/fs.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32_types.h \ |
$(wildcard include/config/highmem.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable-3level_types.h \ |
include/asm-generic/pgtable-nopud.h \ |
include/asm-generic/ptrace.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/math_emu.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/sigcontext.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/current.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/percpu.h \ |
$(wildcard include/config/x86/64/smp.h) \ |
include/asm-generic/percpu.h \ |
$(wildcard include/config/have/setup/per/cpu/area.h) \ |
include/linux/threads.h \ |
$(wildcard include/config/nr/cpus.h) \ |
$(wildcard include/config/base/small.h) \ |
include/linux/percpu-defs.h \ |
$(wildcard include/config/debug/force/weak/per/cpu.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/msr.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/msr-index.h \ |
include/linux/ioctl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ioctl.h \ |
include/asm-generic/ioctl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cpumask.h \ |
include/linux/cpumask.h \ |
$(wildcard include/config/cpumask/offstack.h) \ |
$(wildcard include/config/hotplug/cpu.h) \ |
$(wildcard include/config/debug/per/cpu/maps.h) \ |
$(wildcard include/config/disable/obsolete/cpumask/functions.h) \ |
include/linux/bitmap.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/paravirt.h \ |
$(wildcard include/config/transparent/hugepage.h) \ |
$(wildcard include/config/paravirt/spinlocks.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/nops.h \ |
$(wildcard include/config/mk7.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/special_insns.h \ |
include/linux/personality.h \ |
include/linux/math64.h \ |
include/linux/err.h \ |
include/linux/irqflags.h \ |
$(wildcard include/config/trace/irqflags.h) \ |
$(wildcard include/config/irqsoff/tracer.h) \ |
$(wildcard include/config/trace/irqflags/support.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irqflags.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ftrace.h \ |
$(wildcard include/config/function/tracer.h) \ |
$(wildcard include/config/dynamic/ftrace.h) \ |
include/linux/atomic.h \ |
$(wildcard include/config/arch/has/atomic/or.h) \ |
$(wildcard include/config/generic/atomic64.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/atomic.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cmpxchg.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cmpxchg_32.h \ |
$(wildcard include/config/x86/cmpxchg.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/atomic64_32.h \ |
include/asm-generic/atomic-long.h \ |
include/linux/bottom_half.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/barrier.h \ |
$(wildcard include/config/x86/ppro/fence.h) \ |
$(wildcard include/config/x86/oostore.h) \ |
include/linux/spinlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/spinlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/rwlock.h \ |
include/linux/lockdep.h \ |
$(wildcard include/config/lockdep.h) \ |
$(wildcard include/config/lock/stat.h) \ |
$(wildcard include/config/prove/rcu.h) \ |
include/linux/rwlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/spinlock.h \ |
include/linux/rwlock.h \ |
include/linux/spinlock_api_smp.h \ |
$(wildcard include/config/inline/spin/lock.h) \ |
$(wildcard include/config/inline/spin/lock/bh.h) \ |
$(wildcard include/config/inline/spin/lock/irq.h) \ |
$(wildcard include/config/inline/spin/lock/irqsave.h) \ |
$(wildcard include/config/inline/spin/trylock.h) \ |
$(wildcard include/config/inline/spin/trylock/bh.h) \ |
$(wildcard include/config/uninline/spin/unlock.h) \ |
$(wildcard include/config/inline/spin/unlock/bh.h) \ |
$(wildcard include/config/inline/spin/unlock/irq.h) \ |
$(wildcard include/config/inline/spin/unlock/irqrestore.h) \ |
include/linux/rwlock_api_smp.h \ |
$(wildcard include/config/inline/read/lock.h) \ |
$(wildcard include/config/inline/write/lock.h) \ |
$(wildcard include/config/inline/read/lock/bh.h) \ |
$(wildcard include/config/inline/write/lock/bh.h) \ |
$(wildcard include/config/inline/read/lock/irq.h) \ |
$(wildcard include/config/inline/write/lock/irq.h) \ |
$(wildcard include/config/inline/read/lock/irqsave.h) \ |
$(wildcard include/config/inline/write/lock/irqsave.h) \ |
$(wildcard include/config/inline/read/trylock.h) \ |
$(wildcard include/config/inline/write/trylock.h) \ |
$(wildcard include/config/inline/read/unlock.h) \ |
$(wildcard include/config/inline/write/unlock.h) \ |
$(wildcard include/config/inline/read/unlock/bh.h) \ |
$(wildcard include/config/inline/write/unlock/bh.h) \ |
$(wildcard include/config/inline/read/unlock/irq.h) \ |
$(wildcard include/config/inline/write/unlock/irq.h) \ |
$(wildcard include/config/inline/read/unlock/irqrestore.h) \ |
$(wildcard include/config/inline/write/unlock/irqrestore.h) \ |
include/linux/uidgid.h \ |
$(wildcard include/config/uidgid/strict/type/checks.h) \ |
$(wildcard include/config/user/ns.h) \ |
include/linux/highuid.h \ |
include/linux/kmod.h \ |
include/linux/gfp.h \ |
$(wildcard include/config/zone/dma.h) \ |
$(wildcard include/config/zone/dma32.h) \ |
$(wildcard include/config/pm/sleep.h) \ |
$(wildcard include/config/cma.h) \ |
include/linux/mmzone.h \ |
$(wildcard include/config/force/max/zoneorder.h) \ |
$(wildcard include/config/cgroup/mem/res/ctlr.h) \ |
$(wildcard include/config/memory/hotplug.h) \ |
$(wildcard include/config/have/memblock/node/map.h) \ |
$(wildcard include/config/flat/node/mem/map.h) \ |
$(wildcard include/config/no/bootmem.h) \ |
$(wildcard include/config/have/memory/present.h) \ |
$(wildcard include/config/have/memoryless/nodes.h) \ |
$(wildcard include/config/need/node/memmap/size.h) \ |
$(wildcard include/config/have/memblock/node.h) \ |
$(wildcard include/config/need/multiple/nodes.h) \ |
$(wildcard include/config/have/arch/early/pfn/to/nid.h) \ |
$(wildcard include/config/sparsemem/extreme.h) \ |
$(wildcard include/config/have/arch/pfn/valid.h) \ |
$(wildcard include/config/nodes/span/other/nodes.h) \ |
$(wildcard include/config/holes/in/zone.h) \ |
$(wildcard include/config/arch/has/holes/memorymodel.h) \ |
include/linux/wait.h \ |
include/linux/numa.h \ |
$(wildcard include/config/nodes/shift.h) \ |
include/linux/nodemask.h \ |
include/linux/pageblock-flags.h \ |
$(wildcard include/config/hugetlb/page/size/variable.h) \ |
include/generated/bounds.h \ |
include/linux/memory_hotplug.h \ |
$(wildcard include/config/memory/hotremove.h) \ |
$(wildcard include/config/have/arch/nodedata/extension.h) \ |
include/linux/notifier.h \ |
include/linux/mutex.h \ |
$(wildcard include/config/debug/mutexes.h) \ |
$(wildcard include/config/have/arch/mutex/cpu/relax.h) \ |
include/linux/rwsem.h \ |
$(wildcard include/config/rwsem/generic/spinlock.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/rwsem.h \ |
include/linux/srcu.h \ |
include/linux/rcupdate.h \ |
$(wildcard include/config/rcu/torture/test.h) \ |
$(wildcard include/config/tree/rcu.h) \ |
$(wildcard include/config/tree/preempt/rcu.h) \ |
$(wildcard include/config/rcu/trace.h) \ |
$(wildcard include/config/preempt/rcu.h) \ |
$(wildcard include/config/tiny/rcu.h) \ |
$(wildcard include/config/tiny/preempt/rcu.h) \ |
$(wildcard include/config/debug/objects/rcu/head.h) \ |
$(wildcard include/config/preempt/rt.h) \ |
include/linux/completion.h \ |
include/linux/debugobjects.h \ |
$(wildcard include/config/debug/objects.h) \ |
$(wildcard include/config/debug/objects/free.h) \ |
include/linux/rcutree.h \ |
include/linux/workqueue.h \ |
$(wildcard include/config/debug/objects/work.h) \ |
$(wildcard include/config/freezer.h) \ |
include/linux/timer.h \ |
$(wildcard include/config/timer/stats.h) \ |
$(wildcard include/config/debug/objects/timers.h) \ |
include/linux/ktime.h \ |
$(wildcard include/config/ktime/scalar.h) \ |
include/linux/jiffies.h \ |
include/linux/timex.h \ |
include/linux/param.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/param.h \ |
include/asm-generic/param.h \ |
$(wildcard include/config/hz.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/timex.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/tsc.h \ |
$(wildcard include/config/x86/tsc.h) \ |
include/linux/topology.h \ |
$(wildcard include/config/sched/smt.h) \ |
$(wildcard include/config/sched/mc.h) \ |
$(wildcard include/config/sched/book.h) \ |
$(wildcard include/config/use/percpu/numa/node/id.h) \ |
include/linux/smp.h \ |
$(wildcard include/config/use/generic/smp/helpers.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/smp.h \ |
$(wildcard include/config/x86/io/apic.h) \ |
$(wildcard include/config/x86/32/smp.h) \ |
$(wildcard include/config/debug/nmi/selftest.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mpspec.h \ |
$(wildcard include/config/x86/numaq.h) \ |
$(wildcard include/config/eisa.h) \ |
$(wildcard include/config/x86/mpparse.h) \ |
$(wildcard include/config/acpi.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mpspec_def.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/x86_init.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bootparam.h \ |
include/linux/screen_info.h \ |
include/linux/apm_bios.h \ |
include/linux/edd.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/e820.h \ |
$(wildcard include/config/efi.h) \ |
$(wildcard include/config/intel/txt.h) \ |
$(wildcard include/config/hibernation.h) \ |
$(wildcard include/config/memtest.h) \ |
include/linux/ioport.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ist.h \ |
include/video/edid.h \ |
$(wildcard include/config/x86.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/apicdef.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/apic.h \ |
$(wildcard include/config/x86/x2apic.h) \ |
include/linux/pm.h \ |
$(wildcard include/config/pm.h) \ |
$(wildcard include/config/pm/runtime.h) \ |
$(wildcard include/config/pm/clk.h) \ |
$(wildcard include/config/pm/generic/domains.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/fixmap.h \ |
$(wildcard include/config/provide/ohci1394/dma/init.h) \ |
$(wildcard include/config/x86/visws/apic.h) \ |
$(wildcard include/config/x86/f00f/bug.h) \ |
$(wildcard include/config/x86/cyclone/timer.h) \ |
$(wildcard include/config/pci/mmconfig.h) \ |
$(wildcard include/config/x86/intel/mid.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/acpi.h \ |
$(wildcard include/config/acpi/numa.h) \ |
include/acpi/pdc_intel.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/numa.h \ |
$(wildcard include/config/numa/emu.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/topology.h \ |
$(wildcard include/config/x86/ht.h) \ |
include/asm-generic/topology.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/numa_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mmu.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/realmode.h \ |
$(wildcard include/config/acpi/sleep.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/io.h \ |
$(wildcard include/config/xen.h) \ |
include/asm-generic/iomap.h \ |
$(wildcard include/config/has/ioport.h) \ |
$(wildcard include/config/pci.h) \ |
$(wildcard include/config/generic/iomap.h) \ |
include/asm-generic/pci_iomap.h \ |
$(wildcard include/config/no/generic/pci/ioport/map.h) \ |
$(wildcard include/config/generic/pci/iomap.h) \ |
include/linux/vmalloc.h \ |
$(wildcard include/config/mmu.h) \ |
include/xen/xen.h \ |
$(wildcard include/config/xen/dom0.h) \ |
include/xen/interface/xen.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/interface.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/interface_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pvclock-abi.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/hypervisor.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/io_apic.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irq_vectors.h \ |
include/linux/percpu.h \ |
$(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ |
$(wildcard include/config/need/per/cpu/page/first/chunk.h) \ |
include/linux/pfn.h \ |
include/linux/mmdebug.h \ |
$(wildcard include/config/debug/vm.h) \ |
include/linux/sysctl.h \ |
$(wildcard include/config/sysctl.h) \ |
include/linux/rbtree.h \ |
include/linux/elf.h \ |
include/linux/elf-em.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/elf.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/user.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/user_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/auxvec.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/vdso.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/desc.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ldt.h \ |
include/linux/kobject.h \ |
include/linux/sysfs.h \ |
include/linux/kobject_ns.h \ |
include/linux/kref.h \ |
include/linux/moduleparam.h \ |
$(wildcard include/config/alpha.h) \ |
$(wildcard include/config/ia64.h) \ |
$(wildcard include/config/ppc64.h) \ |
include/linux/tracepoint.h \ |
include/linux/static_key.h \ |
include/linux/jump_label.h \ |
$(wildcard include/config/jump/label.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/jump_label.h \ |
include/linux/export.h \ |
$(wildcard include/config/symbol/prefix.h) \ |
$(wildcard include/config/modversions.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/module.h \ |
$(wildcard include/config/m586.h) \ |
$(wildcard include/config/m586tsc.h) \ |
$(wildcard include/config/m586mmx.h) \ |
$(wildcard include/config/mcore2.h) \ |
$(wildcard include/config/matom.h) \ |
$(wildcard include/config/m686.h) \ |
$(wildcard include/config/mpentiumii.h) \ |
$(wildcard include/config/mpentiumiii.h) \ |
$(wildcard include/config/mpentiumm.h) \ |
$(wildcard include/config/mpentium4.h) \ |
$(wildcard include/config/mk6.h) \ |
$(wildcard include/config/mk8.h) \ |
$(wildcard include/config/melan.h) \ |
$(wildcard include/config/mcrusoe.h) \ |
$(wildcard include/config/mefficeon.h) \ |
$(wildcard include/config/mwinchipc6.h) \ |
$(wildcard include/config/mwinchip3d.h) \ |
$(wildcard include/config/mcyrixiii.h) \ |
$(wildcard include/config/mviac3/2.h) \ |
$(wildcard include/config/mviac7.h) \ |
$(wildcard include/config/mgeodegx1.h) \ |
$(wildcard include/config/mgeode/lx.h) \ |
include/asm-generic/module.h \ |
include/linux/vermagic.h \ |
include/generated/utsrelease.h \ |
/home/f9daq/pcivme-3.2/driver/pcivme.mod.o: $(deps_/home/f9daq/pcivme-3.2/driver/pcivme.mod.o) |
$(deps_/home/f9daq/pcivme-3.2/driver/pcivme.mod.o): |
/pcivme-3.2/driver/common.h |
---|
0,0 → 1,83 |
#ifndef __COMMON_H__ |
#define __COMMON_H__ |
//**************************************************************************** |
// Copyright (C) 2000-2004 ARW Elektronik Germany |
// |
// |
// This program is free software; you can redistribute it and/or modify |
// it under the terms of the GNU General Public License as published by |
// the Free Software Foundation; either version 2 of the License, or |
// (at your option) any later version. |
// |
// This program is distributed in the hope that it will be useful, |
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// GNU General Public License for more details. |
// |
// You should have received a copy of the GNU General Public License |
// along with this program; if not, write to the Free Software |
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
// |
// This product is not authorized for use as critical component in |
// life support systems without the express written approval of |
// ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
// |
//**************************************************************************** |
//**************************************************************************** |
// |
// common.h - common definitions to include in all *.c files |
// |
// $Log: common.h,v $ |
// Revision 1.6 2004/08/13 19:23:26 klaus |
// conversion to kernel-version 2.6, released version 3.0 |
// |
// Revision 1.5 2002/10/18 21:56:28 klaus |
// completed functional features, untested |
// |
// Revision 1.3 2002/10/10 18:57:46 klaus |
// source beautyfied |
// |
//**************************************************************************** |
#include <generated/autoconf.h> |
#if defined(CONFIG_MODVERSIONS) && !defined(MODVERSIONS) |
#define MODVERSIONS |
#endif |
#include <linux/version.h> |
#ifdef MODVERSIONS |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) |
#include <config/modversions.h> |
#else |
#include <linux/modversions.h> |
#endif |
#endif |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,3,0) |
#define kfree_s(ptr, size) kfree(ptr) /* a workaround cause kfree_s is disapeared in V 2.4 */ |
#endif |
// circumvent deprecated MOD_..._USE_COUNT |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) |
#define __MOD_INC_USE_COUNT__ |
#define __MOD_DEC_USE_COUNT__ |
#else |
#define __MOD_INC_USE_COUNT__ MOD_INC_USE_COUNT |
#define __MOD_DEC_USE_COUNT__ MOD_DEC_USE_COUNT |
#endif |
// switch to disable all printks for not debugging |
#ifdef __DEBUG__ |
#define PRINTK printk |
#else |
#define PRINTK(stuff...) |
#endif |
#endif /* __COMMON_H__ */ |
/pcivme-3.2/driver/.plxbug.o.cmd |
---|
0,0 → 1,567 |
cmd_/home/f9daq/pcivme-3.2/driver/./plxbug.o := gcc -Wp,-MD,/home/f9daq/pcivme-3.2/driver/./.plxbug.o.d -nostdinc -isystem /usr/lib/gcc/i686-linux-gnu/4.6/include -I/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include -Iarch/x86/include/generated -Iinclude -include /usr/src/linux-headers-3.5.0-28-generic/include/linux/kconfig.h -Iubuntu/include -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i686 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_AVX=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -Wframe-larger-than=1024 -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -DCC_HAVE_ASM_GOTO -I. -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(plxbug)" -D"KBUILD_MODNAME=KBUILD_STR(pcivme)" -c -o /home/f9daq/pcivme-3.2/driver/./.tmp_plxbug.o /home/f9daq/pcivme-3.2/driver/./plxbug.c |
source_/home/f9daq/pcivme-3.2/driver/./plxbug.o := /home/f9daq/pcivme-3.2/driver/./plxbug.c |
deps_/home/f9daq/pcivme-3.2/driver/./plxbug.o := \ |
/home/f9daq/pcivme-3.2/driver/./common.h \ |
$(wildcard include/config/modversions.h) \ |
include/linux/version.h \ |
include/config/modversions.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/types.h \ |
include/asm-generic/types.h \ |
include/asm-generic/int-ll64.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bitsperlong.h \ |
include/asm-generic/bitsperlong.h \ |
$(wildcard include/config/64bit.h) \ |
/home/f9daq/pcivme-3.2/driver/./plxbug.h \ |
/home/f9daq/pcivme-3.2/driver/./askpci.h \ |
include/linux/pci.h \ |
$(wildcard include/config/pci/iov.h) \ |
$(wildcard include/config/pcieaspm.h) \ |
$(wildcard include/config/pci/msi.h) \ |
$(wildcard include/config/pci/ats.h) \ |
$(wildcard include/config/pci.h) \ |
$(wildcard include/config/hotplug.h) \ |
$(wildcard include/config/pcieportbus.h) \ |
$(wildcard include/config/pcieaer.h) \ |
$(wildcard include/config/pcie/ecrc.h) \ |
$(wildcard include/config/ht/irq.h) \ |
$(wildcard include/config/pci/domains.h) \ |
$(wildcard include/config/pci/quirks.h) \ |
$(wildcard include/config/pci/mmconfig.h) \ |
$(wildcard include/config/hotplug/pci.h) \ |
$(wildcard include/config/of.h) \ |
$(wildcard include/config/eeh.h) \ |
include/linux/pci_regs.h \ |
include/linux/mod_devicetable.h \ |
include/linux/types.h \ |
$(wildcard include/config/uid16.h) \ |
$(wildcard include/config/lbdaf.h) \ |
$(wildcard include/config/arch/dma/addr/t/64bit.h) \ |
$(wildcard include/config/phys/addr/t/64bit.h) \ |
include/linux/posix_types.h \ |
include/linux/stddef.h \ |
include/linux/compiler.h \ |
$(wildcard include/config/sparse/rcu/pointer.h) \ |
$(wildcard include/config/trace/branch/profiling.h) \ |
$(wildcard include/config/profile/all/branches.h) \ |
$(wildcard include/config/enable/must/check.h) \ |
$(wildcard include/config/enable/warn/deprecated.h) \ |
include/linux/compiler-gcc.h \ |
$(wildcard include/config/arch/supports/optimized/inlining.h) \ |
$(wildcard include/config/optimize/inlining.h) \ |
include/linux/compiler-gcc4.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/posix_types.h \ |
$(wildcard include/config/x86/32.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/posix_types_32.h \ |
include/asm-generic/posix_types.h \ |
include/linux/init.h \ |
$(wildcard include/config/modules.h) \ |
include/linux/ioport.h \ |
include/linux/list.h \ |
$(wildcard include/config/debug/list.h) \ |
include/linux/poison.h \ |
$(wildcard include/config/illegal/pointer/value.h) \ |
include/linux/const.h \ |
include/linux/errno.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/errno.h \ |
include/asm-generic/errno.h \ |
include/asm-generic/errno-base.h \ |
include/linux/kobject.h \ |
include/linux/sysfs.h \ |
$(wildcard include/config/debug/lock/alloc.h) \ |
$(wildcard include/config/sysfs.h) \ |
include/linux/lockdep.h \ |
$(wildcard include/config/lockdep.h) \ |
$(wildcard include/config/lock/stat.h) \ |
$(wildcard include/config/trace/irqflags.h) \ |
$(wildcard include/config/prove/locking.h) \ |
$(wildcard include/config/prove/rcu.h) \ |
include/linux/kobject_ns.h \ |
include/linux/atomic.h \ |
$(wildcard include/config/arch/has/atomic/or.h) \ |
$(wildcard include/config/generic/atomic64.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/atomic.h \ |
$(wildcard include/config/m386.h) \ |
$(wildcard include/config/x86/64.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/processor.h \ |
$(wildcard include/config/x86/vsmp.h) \ |
$(wildcard include/config/smp.h) \ |
$(wildcard include/config/cc/stackprotector.h) \ |
$(wildcard include/config/paravirt.h) \ |
$(wildcard include/config/m486.h) \ |
$(wildcard include/config/x86/debugctlmsr.h) \ |
$(wildcard include/config/cpu/sup/amd.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/processor-flags.h \ |
$(wildcard include/config/vm86.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/vm86.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ptrace.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ptrace-abi.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/segment.h \ |
$(wildcard include/config/x86/32/lazy/gs.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_32_types.h \ |
$(wildcard include/config/highmem4g.h) \ |
$(wildcard include/config/highmem64g.h) \ |
$(wildcard include/config/page/offset.h) \ |
$(wildcard include/config/x86/pae.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/paravirt_types.h \ |
$(wildcard include/config/x86/local/apic.h) \ |
$(wildcard include/config/paravirt/debug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/desc_defs.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/kmap_types.h \ |
$(wildcard include/config/debug/highmem.h) \ |
include/asm-generic/kmap_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_types.h \ |
$(wildcard include/config/kmemcheck.h) \ |
$(wildcard include/config/compat/vdso.h) \ |
$(wildcard include/config/proc/fs.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32_types.h \ |
$(wildcard include/config/highmem.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable-3level_types.h \ |
include/asm-generic/pgtable-nopud.h \ |
include/asm-generic/ptrace.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/math_emu.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/sigcontext.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/current.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/percpu.h \ |
$(wildcard include/config/x86/64/smp.h) \ |
$(wildcard include/config/x86/cmpxchg64.h) \ |
include/linux/kernel.h \ |
$(wildcard include/config/preempt/voluntary.h) \ |
$(wildcard include/config/debug/atomic/sleep.h) \ |
$(wildcard include/config/ring/buffer.h) \ |
$(wildcard include/config/tracing.h) \ |
$(wildcard include/config/numa.h) \ |
$(wildcard include/config/compaction.h) \ |
$(wildcard include/config/ftrace/mcount/record.h) \ |
include/linux/sysinfo.h \ |
/usr/lib/gcc/i686-linux-gnu/4.6/include/stdarg.h \ |
include/linux/linkage.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/linkage.h \ |
$(wildcard include/config/x86/alignment/16.h) \ |
include/linux/stringify.h \ |
include/linux/bitops.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bitops.h \ |
$(wildcard include/config/x86/cmov.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/alternative.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/asm.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cpufeature.h \ |
$(wildcard include/config/x86/invlpg.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/required-features.h \ |
$(wildcard include/config/x86/minimum/cpu/family.h) \ |
$(wildcard include/config/math/emulation.h) \ |
$(wildcard include/config/x86/use/3dnow.h) \ |
$(wildcard include/config/x86/p6/nop.h) \ |
include/asm-generic/bitops/fls64.h \ |
include/asm-generic/bitops/find.h \ |
$(wildcard include/config/generic/find/first/bit.h) \ |
include/asm-generic/bitops/sched.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/arch_hweight.h \ |
include/asm-generic/bitops/const_hweight.h \ |
include/asm-generic/bitops/le.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/byteorder.h \ |
include/linux/byteorder/little_endian.h \ |
include/linux/swab.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/swab.h \ |
$(wildcard include/config/x86/bswap.h) \ |
include/linux/byteorder/generic.h \ |
include/asm-generic/bitops/ext2-atomic-setbit.h \ |
include/linux/log2.h \ |
$(wildcard include/config/arch/has/ilog2/u32.h) \ |
$(wildcard include/config/arch/has/ilog2/u64.h) \ |
include/linux/typecheck.h \ |
include/linux/printk.h \ |
$(wildcard include/config/printk.h) \ |
$(wildcard include/config/dynamic/debug.h) \ |
include/linux/dynamic_debug.h \ |
include/linux/string.h \ |
$(wildcard include/config/binary/printf.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/string.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/string_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/div64.h \ |
include/asm-generic/percpu.h \ |
$(wildcard include/config/debug/preempt.h) \ |
$(wildcard include/config/have/setup/per/cpu/area.h) \ |
include/linux/threads.h \ |
$(wildcard include/config/nr/cpus.h) \ |
$(wildcard include/config/base/small.h) \ |
include/linux/percpu-defs.h \ |
$(wildcard include/config/debug/force/weak/per/cpu.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/page_32.h \ |
$(wildcard include/config/hugetlb/page.h) \ |
$(wildcard include/config/debug/virtual.h) \ |
$(wildcard include/config/flatmem.h) \ |
$(wildcard include/config/x86/3dnow.h) \ |
include/asm-generic/memory_model.h \ |
$(wildcard include/config/discontigmem.h) \ |
$(wildcard include/config/sparsemem/vmemmap.h) \ |
$(wildcard include/config/sparsemem.h) \ |
include/asm-generic/getorder.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/msr.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/msr-index.h \ |
include/linux/ioctl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ioctl.h \ |
include/asm-generic/ioctl.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cpumask.h \ |
include/linux/cpumask.h \ |
$(wildcard include/config/cpumask/offstack.h) \ |
$(wildcard include/config/hotplug/cpu.h) \ |
$(wildcard include/config/debug/per/cpu/maps.h) \ |
$(wildcard include/config/disable/obsolete/cpumask/functions.h) \ |
include/linux/bitmap.h \ |
include/linux/bug.h \ |
$(wildcard include/config/generic/bug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bug.h \ |
$(wildcard include/config/bug.h) \ |
$(wildcard include/config/debug/bugverbose.h) \ |
include/asm-generic/bug.h \ |
$(wildcard include/config/generic/bug/relative/pointers.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/paravirt.h \ |
$(wildcard include/config/transparent/hugepage.h) \ |
$(wildcard include/config/paravirt/spinlocks.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/nops.h \ |
$(wildcard include/config/mk7.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/special_insns.h \ |
include/linux/personality.h \ |
include/linux/cache.h \ |
$(wildcard include/config/arch/has/cache/line/size.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cache.h \ |
$(wildcard include/config/x86/l1/cache/shift.h) \ |
$(wildcard include/config/x86/internode/cache/shift.h) \ |
include/linux/math64.h \ |
include/linux/err.h \ |
include/linux/irqflags.h \ |
$(wildcard include/config/irqsoff/tracer.h) \ |
$(wildcard include/config/preempt/tracer.h) \ |
$(wildcard include/config/trace/irqflags/support.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irqflags.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cmpxchg.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/cmpxchg_32.h \ |
$(wildcard include/config/x86/cmpxchg.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/atomic64_32.h \ |
include/asm-generic/atomic-long.h \ |
include/linux/spinlock.h \ |
$(wildcard include/config/debug/spinlock.h) \ |
$(wildcard include/config/generic/lockbreak.h) \ |
$(wildcard include/config/preempt.h) \ |
include/linux/preempt.h \ |
$(wildcard include/config/preempt/count.h) \ |
$(wildcard include/config/preempt/notifiers.h) \ |
include/linux/thread_info.h \ |
$(wildcard include/config/compat.h) \ |
$(wildcard include/config/debug/stack/usage.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/thread_info.h \ |
$(wildcard include/config/ia32/emulation.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ftrace.h \ |
$(wildcard include/config/function/tracer.h) \ |
$(wildcard include/config/dynamic/ftrace.h) \ |
include/linux/bottom_half.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/barrier.h \ |
$(wildcard include/config/x86/ppro/fence.h) \ |
$(wildcard include/config/x86/oostore.h) \ |
include/linux/spinlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/spinlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/rwlock.h \ |
include/linux/rwlock_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/spinlock.h \ |
include/linux/rwlock.h \ |
include/linux/spinlock_api_smp.h \ |
$(wildcard include/config/inline/spin/lock.h) \ |
$(wildcard include/config/inline/spin/lock/bh.h) \ |
$(wildcard include/config/inline/spin/lock/irq.h) \ |
$(wildcard include/config/inline/spin/lock/irqsave.h) \ |
$(wildcard include/config/inline/spin/trylock.h) \ |
$(wildcard include/config/inline/spin/trylock/bh.h) \ |
$(wildcard include/config/uninline/spin/unlock.h) \ |
$(wildcard include/config/inline/spin/unlock/bh.h) \ |
$(wildcard include/config/inline/spin/unlock/irq.h) \ |
$(wildcard include/config/inline/spin/unlock/irqrestore.h) \ |
include/linux/rwlock_api_smp.h \ |
$(wildcard include/config/inline/read/lock.h) \ |
$(wildcard include/config/inline/write/lock.h) \ |
$(wildcard include/config/inline/read/lock/bh.h) \ |
$(wildcard include/config/inline/write/lock/bh.h) \ |
$(wildcard include/config/inline/read/lock/irq.h) \ |
$(wildcard include/config/inline/write/lock/irq.h) \ |
$(wildcard include/config/inline/read/lock/irqsave.h) \ |
$(wildcard include/config/inline/write/lock/irqsave.h) \ |
$(wildcard include/config/inline/read/trylock.h) \ |
$(wildcard include/config/inline/write/trylock.h) \ |
$(wildcard include/config/inline/read/unlock.h) \ |
$(wildcard include/config/inline/write/unlock.h) \ |
$(wildcard include/config/inline/read/unlock/bh.h) \ |
$(wildcard include/config/inline/write/unlock/bh.h) \ |
$(wildcard include/config/inline/read/unlock/irq.h) \ |
$(wildcard include/config/inline/write/unlock/irq.h) \ |
$(wildcard include/config/inline/read/unlock/irqrestore.h) \ |
$(wildcard include/config/inline/write/unlock/irqrestore.h) \ |
include/linux/kref.h \ |
include/linux/wait.h \ |
include/linux/device.h \ |
$(wildcard include/config/debug/devres.h) \ |
$(wildcard include/config/cma.h) \ |
$(wildcard include/config/devtmpfs.h) \ |
$(wildcard include/config/sysfs/deprecated.h) \ |
include/linux/klist.h \ |
include/linux/mutex.h \ |
$(wildcard include/config/debug/mutexes.h) \ |
$(wildcard include/config/have/arch/mutex/cpu/relax.h) \ |
include/linux/pm.h \ |
$(wildcard include/config/pm.h) \ |
$(wildcard include/config/pm/sleep.h) \ |
$(wildcard include/config/pm/runtime.h) \ |
$(wildcard include/config/pm/clk.h) \ |
$(wildcard include/config/pm/generic/domains.h) \ |
include/linux/workqueue.h \ |
$(wildcard include/config/debug/objects/work.h) \ |
$(wildcard include/config/freezer.h) \ |
include/linux/timer.h \ |
$(wildcard include/config/timer/stats.h) \ |
$(wildcard include/config/debug/objects/timers.h) \ |
include/linux/ktime.h \ |
$(wildcard include/config/ktime/scalar.h) \ |
include/linux/time.h \ |
$(wildcard include/config/arch/uses/gettimeoffset.h) \ |
include/linux/seqlock.h \ |
include/linux/jiffies.h \ |
include/linux/timex.h \ |
include/linux/param.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/param.h \ |
include/asm-generic/param.h \ |
$(wildcard include/config/hz.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/timex.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/tsc.h \ |
$(wildcard include/config/x86/tsc.h) \ |
include/linux/debugobjects.h \ |
$(wildcard include/config/debug/objects.h) \ |
$(wildcard include/config/debug/objects/free.h) \ |
include/linux/completion.h \ |
include/linux/ratelimit.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/device.h \ |
$(wildcard include/config/acpi.h) \ |
$(wildcard include/config/x86/dev/dma/ops.h) \ |
$(wildcard include/config/intel/iommu.h) \ |
$(wildcard include/config/amd/iommu.h) \ |
include/linux/pm_wakeup.h \ |
include/linux/io.h \ |
$(wildcard include/config/mmu.h) \ |
$(wildcard include/config/has/ioport.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/io.h \ |
$(wildcard include/config/xen.h) \ |
include/asm-generic/iomap.h \ |
$(wildcard include/config/generic/iomap.h) \ |
include/asm-generic/pci_iomap.h \ |
$(wildcard include/config/no/generic/pci/ioport/map.h) \ |
$(wildcard include/config/generic/pci/iomap.h) \ |
include/linux/vmalloc.h \ |
include/xen/xen.h \ |
$(wildcard include/config/xen/dom0.h) \ |
include/xen/interface/xen.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/interface.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/interface_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pvclock-abi.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/xen/hypervisor.h \ |
include/linux/irqreturn.h \ |
include/linux/pci_ids.h \ |
include/linux/pci-dma.h \ |
include/linux/dmapool.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/scatterlist.h \ |
include/asm-generic/scatterlist.h \ |
$(wildcard include/config/debug/sg.h) \ |
$(wildcard include/config/need/sg/dma/length.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pci.h \ |
include/linux/mm.h \ |
$(wildcard include/config/sysctl.h) \ |
$(wildcard include/config/stack/growsup.h) \ |
$(wildcard include/config/ia64.h) \ |
$(wildcard include/config/ksm.h) \ |
$(wildcard include/config/have/memblock/node/map.h) \ |
$(wildcard include/config/have/arch/early/pfn/to/nid.h) \ |
$(wildcard include/config/debug/pagealloc.h) \ |
$(wildcard include/config/hibernation.h) \ |
$(wildcard include/config/hugetlbfs.h) \ |
include/linux/gfp.h \ |
$(wildcard include/config/zone/dma.h) \ |
$(wildcard include/config/zone/dma32.h) \ |
include/linux/mmzone.h \ |
$(wildcard include/config/force/max/zoneorder.h) \ |
$(wildcard include/config/cgroup/mem/res/ctlr.h) \ |
$(wildcard include/config/memory/hotplug.h) \ |
$(wildcard include/config/flat/node/mem/map.h) \ |
$(wildcard include/config/no/bootmem.h) \ |
$(wildcard include/config/have/memory/present.h) \ |
$(wildcard include/config/have/memoryless/nodes.h) \ |
$(wildcard include/config/need/node/memmap/size.h) \ |
$(wildcard include/config/have/memblock/node.h) \ |
$(wildcard include/config/need/multiple/nodes.h) \ |
$(wildcard include/config/sparsemem/extreme.h) \ |
$(wildcard include/config/have/arch/pfn/valid.h) \ |
$(wildcard include/config/nodes/span/other/nodes.h) \ |
$(wildcard include/config/holes/in/zone.h) \ |
$(wildcard include/config/arch/has/holes/memorymodel.h) \ |
include/linux/numa.h \ |
$(wildcard include/config/nodes/shift.h) \ |
include/linux/nodemask.h \ |
include/linux/pageblock-flags.h \ |
$(wildcard include/config/hugetlb/page/size/variable.h) \ |
include/generated/bounds.h \ |
include/linux/memory_hotplug.h \ |
$(wildcard include/config/memory/hotremove.h) \ |
$(wildcard include/config/have/arch/nodedata/extension.h) \ |
include/linux/notifier.h \ |
include/linux/rwsem.h \ |
$(wildcard include/config/rwsem/generic/spinlock.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/rwsem.h \ |
include/linux/srcu.h \ |
include/linux/rcupdate.h \ |
$(wildcard include/config/rcu/torture/test.h) \ |
$(wildcard include/config/tree/rcu.h) \ |
$(wildcard include/config/tree/preempt/rcu.h) \ |
$(wildcard include/config/rcu/trace.h) \ |
$(wildcard include/config/preempt/rcu.h) \ |
$(wildcard include/config/tiny/rcu.h) \ |
$(wildcard include/config/tiny/preempt/rcu.h) \ |
$(wildcard include/config/debug/objects/rcu/head.h) \ |
$(wildcard include/config/preempt/rt.h) \ |
include/linux/rcutree.h \ |
include/linux/topology.h \ |
$(wildcard include/config/sched/smt.h) \ |
$(wildcard include/config/sched/mc.h) \ |
$(wildcard include/config/sched/book.h) \ |
$(wildcard include/config/use/percpu/numa/node/id.h) \ |
include/linux/smp.h \ |
$(wildcard include/config/use/generic/smp/helpers.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/smp.h \ |
$(wildcard include/config/x86/io/apic.h) \ |
$(wildcard include/config/x86/32/smp.h) \ |
$(wildcard include/config/debug/nmi/selftest.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mpspec.h \ |
$(wildcard include/config/x86/numaq.h) \ |
$(wildcard include/config/eisa.h) \ |
$(wildcard include/config/x86/mpparse.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mpspec_def.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/x86_init.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/bootparam.h \ |
include/linux/screen_info.h \ |
include/linux/apm_bios.h \ |
include/linux/edd.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/e820.h \ |
$(wildcard include/config/efi.h) \ |
$(wildcard include/config/intel/txt.h) \ |
$(wildcard include/config/memtest.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/ist.h \ |
include/video/edid.h \ |
$(wildcard include/config/x86.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/apicdef.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/apic.h \ |
$(wildcard include/config/x86/x2apic.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/fixmap.h \ |
$(wildcard include/config/provide/ohci1394/dma/init.h) \ |
$(wildcard include/config/x86/visws/apic.h) \ |
$(wildcard include/config/x86/f00f/bug.h) \ |
$(wildcard include/config/x86/cyclone/timer.h) \ |
$(wildcard include/config/x86/intel/mid.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/acpi.h \ |
$(wildcard include/config/acpi/numa.h) \ |
include/acpi/pdc_intel.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/numa.h \ |
$(wildcard include/config/numa/emu.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/topology.h \ |
$(wildcard include/config/x86/ht.h) \ |
include/asm-generic/topology.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/numa_32.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/mmu.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/realmode.h \ |
$(wildcard include/config/acpi/sleep.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/io_apic.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/irq_vectors.h \ |
include/linux/percpu.h \ |
$(wildcard include/config/need/per/cpu/embed/first/chunk.h) \ |
$(wildcard include/config/need/per/cpu/page/first/chunk.h) \ |
include/linux/pfn.h \ |
include/linux/mmdebug.h \ |
$(wildcard include/config/debug/vm.h) \ |
include/linux/rbtree.h \ |
include/linux/prio_tree.h \ |
include/linux/debug_locks.h \ |
$(wildcard include/config/debug/locking/api/selftests.h) \ |
include/linux/mm_types.h \ |
$(wildcard include/config/split/ptlock/cpus.h) \ |
$(wildcard include/config/have/cmpxchg/double.h) \ |
$(wildcard include/config/have/aligned/struct/page.h) \ |
$(wildcard include/config/want/page/debug/flags.h) \ |
$(wildcard include/config/aio.h) \ |
$(wildcard include/config/mm/owner.h) \ |
$(wildcard include/config/mmu/notifier.h) \ |
include/linux/auxvec.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/auxvec.h \ |
include/linux/page-debug-flags.h \ |
$(wildcard include/config/page/poisoning.h) \ |
$(wildcard include/config/page/guard.h) \ |
$(wildcard include/config/page/debug/something/else.h) \ |
include/linux/uprobes.h \ |
$(wildcard include/config/arch/supports/uprobes.h) \ |
$(wildcard include/config/uprobes.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/uprobes.h \ |
include/linux/range.h \ |
include/linux/bit_spinlock.h \ |
include/linux/shrinker.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32.h \ |
$(wildcard include/config/highpte.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable_32_types.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/pgtable-3level.h \ |
include/asm-generic/pgtable.h \ |
include/linux/page-flags.h \ |
$(wildcard include/config/pageflags/extended.h) \ |
$(wildcard include/config/arch/uses/pg/uncached.h) \ |
$(wildcard include/config/memory/failure.h) \ |
$(wildcard include/config/swap.h) \ |
$(wildcard include/config/s390.h) \ |
include/linux/huge_mm.h \ |
include/linux/vmstat.h \ |
$(wildcard include/config/vm/event/counters.h) \ |
include/linux/vm_event_item.h \ |
include/linux/slab.h \ |
$(wildcard include/config/slab/debug.h) \ |
$(wildcard include/config/failslab.h) \ |
$(wildcard include/config/slub.h) \ |
$(wildcard include/config/slob.h) \ |
$(wildcard include/config/debug/slab.h) \ |
$(wildcard include/config/slab.h) \ |
include/linux/slub_def.h \ |
$(wildcard include/config/slub/stats.h) \ |
$(wildcard include/config/slub/debug.h) \ |
include/linux/kmemleak.h \ |
$(wildcard include/config/debug/kmemleak.h) \ |
include/asm-generic/pci-dma-compat.h \ |
include/linux/dma-mapping.h \ |
$(wildcard include/config/has/dma.h) \ |
$(wildcard include/config/arch/has/dma/set/coherent/mask.h) \ |
$(wildcard include/config/have/dma/attrs.h) \ |
$(wildcard include/config/need/dma/map/state.h) \ |
include/linux/dma-attrs.h \ |
include/linux/dma-direction.h \ |
include/linux/scatterlist.h \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/dma-mapping.h \ |
$(wildcard include/config/isa.h) \ |
$(wildcard include/config/x86/dma/remap.h) \ |
include/linux/kmemcheck.h \ |
include/linux/dma-debug.h \ |
$(wildcard include/config/dma/api/debug.h) \ |
/usr/src/linux-headers-3.5.0-28-generic/arch/x86/include/asm/swiotlb.h \ |
$(wildcard include/config/swiotlb.h) \ |
include/linux/swiotlb.h \ |
include/asm-generic/dma-coherent.h \ |
$(wildcard include/config/have/generic/dma/coherent.h) \ |
include/linux/dma-contiguous.h \ |
$(wildcard include/config/cma/areas.h) \ |
include/asm-generic/dma-mapping-common.h \ |
include/asm-generic/pci.h \ |
/home/f9daq/pcivme-3.2/driver/./main.h \ |
/home/f9daq/pcivme-3.2/driver/./plxbug.o: $(deps_/home/f9daq/pcivme-3.2/driver/./plxbug.o) |
$(deps_/home/f9daq/pcivme-3.2/driver/./plxbug.o): |
/pcivme-3.2/Makefile |
---|
0,0 → 1,63 |
#**************************************************************************** |
# Copyright (C) 2001-2004 ARW Elektronik Germany |
# |
# |
# This program is free software; you can redistribute it and/or modify |
# it under the terms of the GNU General Public License as published by |
# the Free Software Foundation; either version 2 of the License, or |
# (at your option) any later version. |
# |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
# GNU General Public License for more details. |
# |
# You should have received a copy of the GNU General Public License |
# along with this program; if not, write to the Free Software |
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
# |
# Maintainer(s): Klaus Hitschler (klaus.hitschler@gmx.de) |
#**************************************************************************** |
#**************************************************************************** |
# |
# Makefile - global makefile for ARW Elektronik PCIVME interfaces driver |
# and library and test programs |
# |
# $Log: Makefile,v $ |
# Revision 1.1 2004/08/13 19:36:03 klaus |
# conversion to kernel-version 2.6, released version 3.0 |
# |
# |
#**************************************************************************** |
all: |
cd driver;\ |
make;\ |
cd ../lib;\ |
make;\ |
cd ../test;\ |
make;\ |
cd .. |
clean: |
cd driver;\ |
make clean;\ |
cd ../lib;\ |
make clean;\ |
cd ../test;\ |
make clean;\ |
cd .. |
# root installation only |
install: |
cd driver;\ |
make install;\ |
cd ../lib;\ |
make install;\ |
cd .. |