--- src/atiprobe.c.orig 2006-05-28 22:40:21.000000000 +0200 +++ src/atiprobe.c 2006-05-28 23:09:44.000000000 +0200 @@ -62,6 +62,11 @@ * largely ignored. */ +#ifdef XFree86LOADER +typedef void (*ATIFillInScreenInfoFn)(ScrnInfoPtr); +ATIFillInScreenInfoFn ATIFillInScreenInfoPtr = NULL; +#endif + /* Used as a temporary buffer */ #define Identifier ((char *)(pATI->MMIOCache)) @@ -2279,6 +2284,8 @@ xf86LoaderReqSymLists(ATISymbols, NULL); + ATIFillInScreenInfoPtr = (ATIFillInScreenInfoFn)LoaderSymbol("ATIFilInScreenInfo"); + #endif /* Attach device to screen */ @@ -2287,7 +2294,11 @@ ATIPtrs[j - 1] = NULL; /* Fill in probe data */ +#ifdef XFree86LOADER + (*ATIFillInScreenInfoPtr)(pScreenInfo); +#else ATIFillInScreenInfo(pScreenInfo); +#endif pScreenInfo->driverPrivate = pATI; --- src/r128_probe.c.orig 2006-05-28 22:39:56.000000000 +0200 +++ src/r128_probe.c 2006-05-28 23:08:48.000000000 +0200 @@ -53,6 +53,13 @@ #include "r128_chipset.h" +#ifdef XFree86LOADER +typedef void (*R128FillInScreenInfoFn)(ScrnInfoPtr); +typedef const OptionInfoRec *(*R128OptionsWeakFn)(void); +static R128FillInScreenInfoFn R128FillInScreenInfoPtr = NULL; +static R128OptionsWeakFn R128OptionsWeakPtr = NULL; +#endif + PciChipsets R128PciChipsets[] = { { PCI_CHIP_RAGE128LE, PCI_CHIP_RAGE128LE, RES_SHARED_VGA }, { PCI_CHIP_RAGE128LF, PCI_CHIP_RAGE128LF, RES_SHARED_VGA }, @@ -120,7 +127,11 @@ chipid -= PCI_VENDOR_ATI << 16; for (i = 0; R128PciChipsets[i].PCIid > 0; i++) { if (chipid == R128PciChipsets[i].PCIid) +#ifdef XFree86LOADER + return (*R128OptionsWeakPtr)(); +#else return R128OptionsWeak(); +#endif } return NULL; } @@ -206,10 +217,16 @@ xf86LoaderReqSymLists(R128Symbols, NULL); + R128FillInScreenInfoPtr = (R128FillInScreenInfoFn)LoaderSymbol("R128FillInScreenInfo"); + R128OptionsWeakPtr = (R128OptionsWeakFn)LoaderSymbol("R128OptionsWeak"); #endif pScrn->Probe = R128Probe; +#ifdef XFree86LOADER + (*R128FillInScreenInfoPtr)(pScrn); +#else R128FillInScreenInfo(pScrn); +#endif foundScreen = TRUE; --- src/radeon_probe.c.orig 2006-05-28 22:39:46.000000000 +0200 +++ src/radeon_probe.c 2006-05-28 23:04:52.000000000 +0200 @@ -54,6 +54,13 @@ #include "radeon_chipset.h" +#ifdef XFree86LOADER +typedef void (*RADEONFillInScreenInfoFn)(ScrnInfoPtr); +typedef const OptionInfoRec *(*RADEONOptionsWeakFn)(void); +static RADEONFillInScreenInfoFn RADEONFillInScreenInfoPtr = NULL; +static RADEONOptionsWeakFn RADEONOptionsWeakPtr = NULL; +#endif + PciChipsets RADEONPciChipsets[] = { { PCI_CHIP_RADEON_QD, PCI_CHIP_RADEON_QD, RES_SHARED_VGA }, { PCI_CHIP_RADEON_QE, PCI_CHIP_RADEON_QE, RES_SHARED_VGA }, @@ -213,7 +220,11 @@ chipid -= PCI_VENDOR_ATI << 16; for (i = 0; RADEONPciChipsets[i].PCIid > 0; i++) { if (chipid == RADEONPciChipsets[i].PCIid) +#ifdef XFree86LOADER + return (*RADEONOptionsWeakPtr)(); +#else return RADEONOptionsWeak(); +#endif } return NULL; } @@ -294,10 +305,17 @@ } xf86LoaderReqSymLists(RADEONSymbols, NULL); + + RADEONFillInScreenInfoPtr = (RADEONFillInScreenInfoFn)LoaderSymbol("RADEONFillInScreenInfo"); + RADEONOptionsWeakPtr = (RADEONOptionsWeakFn)LoaderSymbol("RADEONOptionsWeak"); #endif pScrn->Probe = RADEONProbe; +#ifdef XFree86LOADER + (*RADEONFillInScreenInfoPtr)(pScrn); +#else RADEONFillInScreenInfo(pScrn); +#endif foundScreen = TRUE; }