diff options
Diffstat (limited to 'roms/QemuMacDrivers/shared/LinuxOSI.s')
-rw-r--r-- | roms/QemuMacDrivers/shared/LinuxOSI.s | 370 |
1 files changed, 370 insertions, 0 deletions
diff --git a/roms/QemuMacDrivers/shared/LinuxOSI.s b/roms/QemuMacDrivers/shared/LinuxOSI.s new file mode 100644 index 000000000..487683416 --- /dev/null +++ b/roms/QemuMacDrivers/shared/LinuxOSI.s @@ -0,0 +1,370 @@ +;####################################################### +;# +;# Linux Interace Stub +;# +;####################################################### + + INCLUDE 'MakeFunction.s' + INCLUDE 'LinuxOSIDefs.s' + + +;####################################################### +; int OSI_IRQTest( int cmd, int param ) +;####################################################### + + MakeFunction OSI_IRQTest + mr r6,r3 + mr r7,r4 + osi_call OSI_IRQTEST + blr + + +;####################################################### +; void OSI_PutC( char ch ) +;####################################################### + + MakeFunction OSI_PutC + mr r6,r3 + OSI_CALL( OSI_LOG_PUTC ) + blr + +;####################################################### +; void OSI_Debugger( int debugnum ) +;####################################################### + + MakeFunction OSI_Debugger + mr r6,r3 + osi_call OSI_DEBUGGER + blr + +;####################################################### +; ulong OSI_GetTime( void ) +;####################################################### + + MakeFunction OSI_GetTime + osi_call OSI_GET_DATE + blr + +;####################################################### +; void OSI_CMountDrvVol( void ) +;####################################################### + + MakeFunction OSI_CMountDrvVol + osi_call OSI_CMOUNT_DRV_VOL + blr + + +;####################################################### +; int OSI_ABlkDiskInfo( int channel, int unit, ablk_disk_info_t *ret ) +; int OSI_ABlkRingSetup( int channel, ulong mphys, int num_el ) +; int OSI_ABlkCntrl( int channel, int cmd ) +; int OSI_ABlkCntrl( int channel, int cmd, int param ) +; int OSI_ABlkKick( int channel ) +; int OSI_ABlkIRQAck( int channel, int *req_count, int *active, int *event ) +; int OSI_ABlkSyncRead( int channel, int unit, int blk, ulong mphys, int size ) +; int OSI_ABlkSyncWrite( int channel, int unit, int blk, ulong mphys, int size ) +;####################################################### + + MakeFunction OSI_ABlkDiskInfo + mr r6,r3 + mr r7,r4 + mr r10,r5 ; save pointer in r10 + osi_call OSI_ABLK_DISK_INFO + stw r4,0(r10) ; 16 byte return info + stw r5,4(r10) + stw r6,8(r10) + stw r7,12(r10) + blr + + MakeFunction OSI_ABlkRingSetup + mr r6,r3 + mr r7,r4 + mr r8,r5 + osi_call OSI_ABLK_RING_SETUP + blr + + MakeFunction OSI_ABlkCntrl + mr r6,r3 + mr r7,r4 + osi_call OSI_ABLK_CNTRL + blr + + MakeFunction OSI_ABlkCntrl1 + mr r6,r3 + mr r7,r4 + mr r8,r5 + osi_call OSI_ABLK_CNTRL + blr + + MakeFunction OSI_ABlkKick + + mr r6,r3 + osi_call OSI_ABLK_KICK + blr + + MakeFunction OSI_ABlkIRQAck + mr r8,r4 ; save r4 in r8 + mr r9,r5 ; save r5 in r9 + mr r10,r6 ; save r6 in r10 + mr r6,r3 + osi_call OSI_ABLK_IRQ_ACK + stw r4,0(r8) ; return req_count + stw r5,0(r9) ; return active + stw r6,0(r10) ; return event + blr + + MakeFunction OSI_ABlkSyncRead + mr r10,r7 + mr r9,r6 + mr r8,r5 + mr r7,r4 + mr r6,r3 + osi_call OSI_ABLK_SYNC_READ + blr + + MakeFunction OSI_ABlkSyncWrite + mr r10,r7 + mr r9,r6 + mr r8,r5 + mr r7,r4 + mr r6,r3 + osi_call OSI_ABLK_SYNC_WRITE + blr + + +;####################################################### +; int OSI_MouseAckIRQ( void ) +; int OSI_GetMouse( osi_mouse_t *pb ) +; int OSI_MouseCntrl( int cmd ) +; int OSI_MouseCntrl1( int cmd, int param ) +;####################################################### + + MakeFunction OSI_MouseAckIRQ + osi_call OSI_MOUSE_ACK_IRQ + blr + + MakeFunction OSI_GetMouse + mr r10,r3 + osi_call OSI_GET_MOUSE + stw r4,0(r10) + stw r5,4(r10) + stw r6,8(r10) + stw r7,12(r10) + stw r8,16(r10) + blr + + MakeFunction OSI_MouseCntrl + mr r6,r3 + osi_call OSI_MOUSE_CNTRL + blr + + MakeFunction OSI_MouseCntrl1 + mr r6,r3 + mr r7,r4 + osi_call OSI_MOUSE_CNTRL + blr + + +;####################################################### +; int OSI_SetVMode_( int modeID, int depthMode ) +; int OSI_GetVModeInfo_( int modeID, int depthMode, osi_get_vmode_info_t *ret ) +; int OSI_SetVPowerState( int powerState ) +; int OSI_GetColor( int index ) +; int OSI_SetColor( int index, int color ) +; int OSI_VideoAckIRQ( int *events ) +; int OSI_VideoCntrl( int cmd ) +; int OSI_VideoCntrl1( int cmd, int param ) +;####################################################### + + MakeFunction OSI_SetVMode_ + mr r6,r3 + mr r7,r4 + osi_call OSI_SET_VMODE + blr + + MakeFunction OSI_GetVModeInfo_ + mr r6,r3 + mr r7,r4 + mr r10,r5 + osi_call OSI_GET_VMODE_INFO + stw r4,0(r10) + stw r5,4(r10) + stw r6,8(r10) + stw r7,12(r10) + stw r8,16(r10) + stw r9,20(r10) + blr + + MakeFunction OSI_SetVPowerState + mr r6,r3 + osi_call OSI_SET_VIDEO_POWER + blr + + MakeFunction OSI_GetColor + mr r6,r3 + osi_call OSI_GET_COLOR + blr + + MakeFunction OSI_SetColor + mr r6,r3 + mr r7,r4 + osi_call OSI_SET_COLOR + blr + + MakeFunction OSI_VideoAckIRQ + mr r10,r3 ; save pointer in r10 + osi_call OSI_VIDEO_ACK_IRQ + stw r4,0(r10) ; events return in r4 + blr + + MakeFunction OSI_VideoCntrl + mr r6,r3 + osi_call OSI_VIDEO_CNTRL + blr + + MakeFunction OSI_VideoCntrl1 + mr r6,r3 + mr r7,r4 + osi_call OSI_VIDEO_CNTRL + blr + + +;####################################################### +; void OSI_EnetClose( UInt32 id ) +; UInt32 OSI_EnetOpen( UInt32 interruptNumber ) +; UInt32 OSI_EnetGetEthAddress( UInt32 id, UInt32 eth_address_phys_ptr ) +; UInt32 OSI_EnetGetStatus( UInt32 id ) +; UInt32 OSI_EnetControl1( UInt32 id, UInt32 command, int param ) +; UInt32 OSI_EnetControl( UInt32 id, UInt32 command ) +; int OSI_EnetGetPacket( UInt32 id, UInt32 packet ) +; int OSI_EnetSendPacket( UInt32 id, UInt32 packet, UInt32 size ) +; UInt32 OSI_EnetAddMulticast( UInt32 id, UInt32 eth_address_phys_ptr ) +; UInt32 OSI_EnetDelMulticast( UInt32 id, UInt32 eth_address_phys_ptr ) +;####################################################### + + MakeFunction OSI_EnetOpen + mr r6,r3 + osi_call OSI_ENET_OPEN + blr + + MakeFunction OSI_EnetClose + mr r6,r3 + osi_call OSI_ENET_CLOSE + blr + + MakeFunction OSI_EnetGetEthAddress + mr r6,r3 + mr r7,r4 + osi_call OSI_ENET_GET_ADDR + blr + + MakeFunction OSI_EnetGetStatus + mr r6,r3 + osi_call OSI_ENET_GET_STATUS + blr + + MakeFunction OSI_EnetControl + mr r6,r3 + mr r7,r4 + osi_call OSI_ENET_CONTROL + blr + + MakeFunction OSI_EnetControl1 + mr r6,r3 + mr r7,r4 + mr r8,r5 + osi_call OSI_ENET_CONTROL + blr + + MakeFunction OSI_EnetGetPacket + mr r6,r3 + mr r7,r4 + osi_call OSI_ENET_GET_PACKET + blr + + MakeFunction OSI_EnetSendPacket + mr r6,r3 + mr r7,r4 + mr r8,r5 + osi_call OSI_ENET_SEND_PACKET + blr + + MakeFunction OSI_EnetAddMulticast + mr r6,r3 + mr r7,r4 + osi_call OSI_ENET_ADD_MULTI + blr + + MakeFunction OSI_EnetDelMulticast + mr r6,r3 + mr r7,r4 + osi_call OSI_ENET_DEL_MULTI + blr + + +;####################################################### +; int OSI_SoundWrite( UInt32 phys_buf, int size, int restart ) +; int OSI_SoundCntl2( int cmd, int param, int param2 ) +; int OSI_SoundCntl1( int cmd, int param ) +; int OSI_SoundCntl( int cmd ) +; int OSI_SoundSetVolume( int hwVol, int speakerVol, int hwMute ) +; int OSI_SoundIrqAck( void ) +;####################################################### + + MakeFunction OSI_SoundWrite + mr r6,r3 + mr r7,r4 + mr r8,r5 + OSI_CALL( OSI_SOUND_WRITE ) + blr + + MakeFunction OSI_SoundCntl2 + mr r8,r5 + mr r7,r4 + mr r6,r3 + OSI_CALL( OSI_SOUND_CNTL ) + blr + + MakeFunction OSI_SoundCntl1 + mr r7,r4 + mr r6,r3 + OSI_CALL( OSI_SOUND_CNTL ) + blr + + MakeFunction OSI_SoundCntl + mr r6,r3 + OSI_CALL( OSI_SOUND_CNTL ) + blr + + MakeFunction OSI_SoundSetVolume + mr r6,r3 + mr r7,r4 + mr r8,r5 + OSI_CALL( OSI_SOUND_SET_VOLUME ) + blr + + MakeFunction OSI_SoundIrqAck + OSI_CALL( OSI_SOUND_IRQ_ACK ) + blr + + +;####################################################### +; int OSI_SCSIControl( int sel, int param ) +; int OSI_SCSISubmit( int req_mphys ) +; int OSI_SCSIAck( void ) +;####################################################### + + MakeFunction OSI_SCSIControl + mr r7,r4 + mr r6,r3 + OSI_CALL( OSI_SCSI_CNTRL ) + blr + + MakeFunction OSI_SCSISubmit + mr r6,r3 + OSI_CALL( OSI_SCSI_SUBMIT ) + blr + + MakeFunction OSI_SCSIAck + OSI_CALL( OSI_SCSI_ACK ) + blr |