|
|
1.1 ! root 1: / $Header: /usr/src/sys/ldrv/RCS/kcall.s,v 1.1 88/03/24 16:30:41 src Exp $ ! 2: / ! 3: / The information contained herein is a trade secret of INETCO ! 4: / Systems, and is confidential information. It is provided under ! 5: / a license agreement, and may be copied or disclosed only under ! 6: / the terms of that agreement. Any reproduction or disclosure of ! 7: / this material without the express written authorization of ! 8: / INETCO Systems or persuant to the license agreement is unlawful. ! 9: / ! 10: / Copyright (c) 1988 ! 11: / An unpublished work by INETCO Systems, Ltd. ! 12: / All rights reserved. ! 13: / ! 14: / $Log: /usr/src/sys/ldrv/RCS/kcall.s,v $ ! 15: / Revision 1.1 88/03/24 16:30:41 src ! 16: / Initial revision ! 17: / ! 18: / ! 19: //////// ! 20: ! 21: //////// ! 22: / ! 23: / kcall( func, arg, ... ) ! 24: / ! 25: / Input: func = kernel function to be invoked. ! 26: / arg = optional argument(s) to be passed to kernel function. ! 27: / ! 28: / Action: Invoke kernel function. ! 29: / ! 30: //////// ! 31: .globl kcall_ ! 32: ! 33: kcall_: ! 34: pop bx / Convert stack from (retIP dstIP arg ...) ! 35: pop ax / to ( retIP arg ...) ! 36: push bx / Leaving dstIP in AX register. ! 37: / ! 38: .byte 0x9A / Request kernel to perform far call. ! 39: .word xcalled / ! 40: .word 0x0060 / ! 41: / ! 42: pop bx / Convert stack from ( retIP arg ...) ! 43: push bx / to (retIP retIP arg ...) ! 44: push bx / This allows caller to cleanup normally. ! 45: / NOTE: DO NOT MODIFY DX:AX RETURN VALUE. ! 46: / ! 47: ret / Return to caller.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.