//ld -T ld.x -s --shared --image-base 0 --file-alignment 32 -o test.exe test.obj core.lib #include "common.h" #include "ati2d.h" #include "accel_2d.h" RHD_t rhd; static clip_t clip; static local_pixmap_t scr_pixmap; /* void STDCALL (*SelectHwCursor)(cursor_t*)__asm__("SelectHwCursor"); void STDCALL (*SetHwCursor)(cursor_t*,int x,int y)__asm__("SetHwCursor"); void STDCALL (*HwCursorRestore)(int x, int y)__asm("HwCursorRestore"); cursor_t* IMPORT (*HwCursorCreate)(void)__asm("HwCursorCreate"); //params eax, ebx, ecx void (__stdcall *old_select)(cursor_t*); void (__stdcall *old_set)(cursor_t*,int x,int y); void (__stdcall *old_restore)(int x, int y); cursor_t* (*old_create)(void); cursor_t* __create_cursor(void); */ static void Init3DEngine(RHDPtr rhdPtr); u32 __stdcall drvEntry(int action) { RHDPtr rhdPtr; u32 retval; int i; if(action != 1) return 0; if(!dbg_open("/hd0/2/ati2d.log")) { printf("Can't open /rd/1/drivers/ati2d.log\nExit\n"); return 0; } if((rhdPtr=FindPciDevice())==NULL) { dbgprintf("Device not found\n"); return 0; }; for(i=0;i<6;i++) { if(rhd.memBase[i]) dbgprintf("Memory base_%d 0x%x size 0x%x\n", i,rhd.memBase[i],(1<input; outp = io->output; switch(io->io_code) { case SRV_GETVERSION: if(io->out_size==4) { *(u32*)io->output = API_VERSION; return 0; } break; default: return ERR_PARAM; }; return ERR_PARAM; } */ int _stdcall srv_2d(ioctl_t *io) { u32 *inp; u32 *outp; inp = io->input; outp = io->output; switch(io->io_code) { case SRV_GETVERSION: if(io->out_size==4) { *outp = API_VERSION; return 0; } break; case DRAW_RECT: if(io->inp_size==6) return DrawRect((draw_t*)inp); break; case FILL_RECT: if(io->inp_size==9) return FillRect((fill_t*)inp); break; /* case LINE_2P: if(io->inp_size==6) return Line2P((draw_t*)inp); break; case BLIT: if(io->inp_size==6) return Blit((blit_t*)inp); break; case COMPIZ: if(io->inp_size==6) return RadeonComposite((blit_t*)inp); break; */ case PX_CREATE: if(io->inp_size==7) return CreatePixmap((pixmap_t*)inp); break; case PIXBLIT: if(io->inp_size==8) return PixBlit((pixblit_t*)inp); break; // case PIXLOCK: // if(io->inp_size==6) // return LockPixmap((userpixmap_t*)inp); // break; // case PIXUNLOCK: // if(io->inp_size==6) // return UnlockPixmap((userpixmap_t*)inp); // break; case PIXDESTROY: if(io->inp_size==6) return DestroyPixmap((pixmap_t*)inp); break; case TRANSBLIT: if(io->inp_size==8) return TransBlit((pixblit_t*)inp); break; default: return ERR_PARAM; }; return ERR_PARAM; } #include "init.c" #include "pci.c" #include "ati_mem.c" //#include "cursor.inc" #include "r500.inc" #include "clip.inc" #include "accel_2d.inc" #include "accel_3d.inc"