|
|
1.1 ! root 1: / $Header: /kernel/kersrc/ldrv/RCS/kcall.s,v 1.1 92/07/17 15:27:52 bin Exp Locker: bin $ ! 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: kcall.s,v $ ! 15: / Revision 1.1 92/07/17 15:27:52 bin ! 16: / Initial revision ! 17: / ! 18: / Revision 1.1 88/03/24 16:30:41 src ! 19: / Initial revision ! 20: / ! 21: / ! 22: //////// ! 23: ! 24: //////// ! 25: / ! 26: / kcall( func, arg, ... ) ! 27: / ! 28: / Input: func = kernel function to be invoked. ! 29: / arg = optional argument(s) to be passed to kernel function. ! 30: / ! 31: / Action: Invoke kernel function. ! 32: / ! 33: //////// ! 34: .globl kcall_ ! 35: ! 36: kcall_: ! 37: pop bx / Convert stack from (retIP dstIP arg ...) ! 38: pop ax / to ( retIP arg ...) ! 39: push bx / Leaving dstIP in AX register. ! 40: / ! 41: .byte 0x9A / Request kernel to perform far call. ! 42: .word xcalled / ! 43: .word 0x0060 / ! 44: / ! 45: pop bx / Convert stack from ( retIP arg ...) ! 46: push bx / to (retIP retIP arg ...) ! 47: push bx / This allows caller to cleanup normally. ! 48: / NOTE: DO NOT MODIFY DX:AX RETURN VALUE. ! 49: / ! 50: ret / Return to caller.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.