historical/m0-applesillicon.git/xnu-qemu-arm64-5.1.0/roms/QemuMacDrivers/shared/LinuxOSI.s
2024-01-16 11:20:27 -06:00

370 lines
7.5 KiB
ArmAsm

;#######################################################
;#
;# 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