/* ***************************************************************************** * * Copyright © 1996 Digital Equipment Corporation. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice and this paragraph are * duplicated in all such forms and that any documentation, * advertising materials, and other materials related to such * distribution and use acknowledge that the software was developed * by Digital Equipment Corporation. The name of the * Corporation may not be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * ***************************************************************************** FACILITY: PPPD Asndriver ABSTRACT: Define the linkages for the port driver entry points and for the class driver entry points. AUTHOR: Forrest A. Kenney 20-December-1995 REVISION HISTORY: X-5 FAK002 Forrest A. Kenney 07-May-1997 Correct linkage definition for port cancel routine. The ASN code does not use it at this time but the new C compiler issued a waring about it. X-4 BWK002 Barry W. Kierstein 17-DEC-1996 Replaced the standard Digital copyright with one compatible with the CMU copyright. X-3 BWK001 Barry W. Kierstein 24-JUL-1996 Corrected copyright notice. X-2 FAK001 Forrest A. Kenney 23-April-1996 Add linkages for tty$class_setupucb, and tty$class_disconnect. */ /* * * Port routines * */ /* Port START I/O routine */ #pragma linkage port_startio = (parameters(r3,r5), preserved(r1,r2,r4,r5), nopreserve(r0)) #pragma use_linkage port_startio (port$startio) void port$startio (unsigned char out_char, TTY_UCB *phyucb); /* Port DISCONNECT routine */ #pragma linkage port_disconnect = (parameters(r0,r5), preserved(r0,r2,r3,r4,r5), nopreserve(r1)) #pragma use_linkage port_disconnect (port$disconnect) void port$disconnect (unsigned int flag, TTY_UCB *phyucb); /* Port set line speed routine */ #pragma linkage set_line = (parameters(r5), preserved(r1,r2,r3,r4,r5), nopreserve(r0)) #pragma use_linkage set_line (port$set_line) void port$set_line (TTY_UCB *phyucb); /* Port DS SET routine */ #pragma linkage port_ds_set = (parameters(r2,r5), preserved(r4,r5), nopreserve(r1,r2,r3)) #pragma use_linkage port_ds_set (port$ds_set) void port$ds_set (unsigned int bits, TTY_UCB *phyucb); /* Port XON routine */ #pragma linkage port_xon = (parameters(r3,r5), preserved(r4,r5), nopreserve(r0,r1,r2,r3)) #pragma use_linkage port_xon (port$xon) void port$xon (unsigned char character, TTY_UCB *phyucb); /* Port XOFF routine */ #pragma linkage port_xoff = (parameters(r3,r5), preserved(r4,r5), nopreserve(r0,r1,r2,r3)) #pragma use_linkage port_xoff (port$xoff) void port$xoff (unsigned char character, TTY_UCB *phyucb); /* Port Stop routine */ #pragma linkage port_stop = (parameters(r5), preserved(r1,r2,r3,r4,r5), nopreserve(r0)) #pragma use_linkage port_stop (port$stop) void port$stop (TTY_UCB *phyucb); /* Port ABORT routine */ #pragma linkage port_abort = (parameters(r5), preserved(r1,r2,r3,r4,r5), nopreserve(r0)) #pragma use_linkage port_abort (port$abort) void port$abort (TTY_UCB *phyucb); /* Port RESUME routine */ #pragma linkage port_resume = (parameters(r5), preserved(r1,r2,r3,r4,r5), nopreserve(r0)) #pragma use_linkage port_resume (port$resume) void port$resume (TTY_UCB *phyucb); /* Port Set Modem routine */ #pragma linkage port_set_modem = (parameters(r5), preserved(r1,r2,r3,r4,r5), nopreserve(r0)) #pragma use_linkage port_set_modem (port$set_modem) void port$set_modem (TTY_UCB *phyucb); /* Port Maint routine */ #pragma linkage port_maint = (parameters(r5), preserved(r1,r2,r3,r4,r5), nopreserve(r0)) #pragma use_linkage port_maint (port$maint) void port_maint(TTY_UCB *phyucb); /* Port fork routine */ #pragma linkage port_fork = (parameters(r5), preserved(r1,r2,r3,r4,r5), nopreserve(r0)) #pragma use_linkage port_fork (port$forkret) void port$forkret(TTY_UCB *phyucb); /* Port FDT */ #pragma linkage port_fdt = (parameters(r3,r4,r5,r6), preserved(r3,r4,r5), nopreserve(r0)) #pragma use_linkage port_fdt (port$fdt) void port$fdt (IRP *irp, PCB *pcb, TTY_UCB *phyucb, CCB *ccb); /* Port Cancel I/O routine */ #pragma linkage port_cancel = (parameters(r2,r3,r4,r5,r6,r8,r9), preserved(r1,r2,r3,r4,r5,r6,r8,r9), nopreserve(r0)) #pragma use_linkage port_cancel (port$cancel) void port$cancel (int state, IRP *irp, PCB *pcb, TTY_UCB *phyucb, int chan_number, int reason, TTY_UCB *logucb); /* * * Class routines * */ /* Class get next routine */ #pragma linkage getnext = (parameters(r5), result(r3), preserved(r0,r5), nopreserve(r1,r2,r4)) #pragma use_linkage getnext (class$getnext) unsigned char class$getnext(TTY_UCB *phyucb); /* Class put next routine */ #pragma linkage putnext = (parameters(r3,r5), result(r3), preserved(r5), nopreserve(r1,r2,r4)) #pragma use_linkage putnext (class$putnext) unsigned char class$putnext(unsigned char read_character, TTY_UCB *phyucb); /* Class setup UCB routine */ #pragma linkage setup_ucb = (parameters(r5), preserved(r0,r5)) #pragma use_linkage setup_ucb (class$setupucb) void class$setupucb(TTY_UCB *phyucb); #pragma use_linkage setup_ucb (tty$class_setupucb) void tty$class_setupucb(TTY_UCB *phyucb); /* Class data set transition routine */ #pragma linkage ds_trans = (parameters(r1,r2,r5), preserved(r5), nopreserve(r0,r1,r2,r3,r4)) #pragma use_linkage ds_trans (class$data_set_trans) void class$data_set_trans(int modem_event, int modem_signals, TTY_UCB *phyucb); /* Class read error routine */ #pragma linkage read_error = (parameters(r3,r5), result(r3), preserved(r0,r4,r5), nopreserve(r1,r2)) #pragma use_linkage read_error (class$read_error) unsigned char class$read_error(unsigned int read_character, TTY_UCB *phyucb); /* Class disconnect routine */ #pragma linkage disconnect = (parameters(r5), preserved(r1,r2,r5), nopreserve(r0,r3,r4)) #pragma use_linkage disconnect (class$disconnect) void class$disconnect (TTY_UCB *phyucb); #pragma use_linkage disconnect (tty$class_disconnect) void tty$class_disconnect (TTY_UCB *phyucb); /* Class fork routine */ #pragma linkage fork = (parameters(r5), preserved(r1,r2,r3,r4,r5), nopreserve(r0)) #pragma use_linkage fork (class$fork) void class$fork (TTY_UCB *phyucb); /* Class power fail routine */ #pragma linkage powerfail = (parameters(r5), preserved(r0,r5), nopreserve(r2,r3,r4)) #pragma use_linkage powerfail (class$powerfail) void class$powerfail(TTY_UCB *phyucb); /* * * Linkages for the VCI routines. * */ /* Transmit Complete routine */ #pragma linkage transmit_complete = (parameters(r3,r4), nopreserve(r0,r3,r4)) #pragma use_linkage transmit_complete (VCI$XXX_Transmit_Complete) int VCI$XXX_Transmit_Complete(VCRP *vcrp, ASNVCIB *asnvcib); /* Receive Complete routine */ #pragma linkage receive_complete = (parameters(r3,r4), nopreserve(r0,r3,r4)) #pragma use_linkage receive_complete (VCI$XXX_Receive_Complete) int VCI$XXX_Receive_Complete(VCRP *vcrp, ASNVCIB *asnvcib); /* Report Event routine */ #pragma linkage report_event = (parameters(r4), nopreserve(r0,r1)) #pragma use_linkage report_event (VCI$XXX_Report_Event) int VCI$XXX_Report_Event(ASNVCIB *asnvcib); /* Create Port routine */ #pragma linkage create_port = (parameters(r4), preserved(r1,r2,r3,r5,r6), nopreserve(r0)) #pragma use_linkage create_port (VCI$ASN_Create_Port) int VCI$ASN_Create_Port(ASNVCIB *asnvcib); /* Delete Port routine */ #pragma linkage delete_port = (parameters(r4), preserved(r1,r5), nopreserve(r0)) #pragma use_linkage delete_port (VCI$ASN_Delete_Port) int VCI$ASN_Delete_Port(ASNVCIB *asnvcib); /* Transmit Initiate routine */ #pragma linkage transmit_initiate = (parameters(r3,r4), nopreserve(r0,r3)) #pragma use_linkage transmit_initiate (VCI$ASN_Transmit_Initiate) int VCI$ASN_Transmit_Initiate(VCRP *vcrp, ASNVCIB *asnvcib); /* Port Management Synch routine */ #pragma linkage management_synch = (parameters(r3,r4), nopreserve(r0,r1)) #pragma use_linkage management_synch (VCI$ASN_PortMgmt_Synch) int VCI$ASN_PortMgmt_Synch(VCRP *vcrp, ASNVCIB *asnvcib);