aboutsummaryrefslogtreecommitdiffstats
path: root/roms/QemuMacDrivers/shared/LinuxOSI.s
diff options
context:
space:
mode:
Diffstat (limited to 'roms/QemuMacDrivers/shared/LinuxOSI.s')
-rw-r--r--roms/QemuMacDrivers/shared/LinuxOSI.s370
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