BSD 3 development
[unix-history] / usr / src / cmd / lisp / qfuncl.s
CommitLineData
18d1c3cd
JF
1# opus 30 compiler call to ??? interface routines
2 .globl __qf0
3__qf0:
4 subl3 $4,r6,r7
5 jbr __qfuncl
6
7 .globl __qf1
8__qf1:
9 subl3 $8,r6,r7
10 jbr __qfuncl
11
12 .globl __qf2
13__qf2:
14 subl3 $12,r6,r7
15 jbr __qfuncl
16
17 .globl __qf3
18__qf3:
19 subl3 $16,r6,r7
20 jbr __qfuncl
21
22 .globl __qf4
23__qf4:
24 subl3 $20,r6,r7
25 jbr __qfuncl
26
27 .globl __qfuncl
28__qfuncl: # quick function call
29 cmpl r6,_nplim # make sure stack ok
30 blss on1
31 calls $0,_namerr
32on1: movl (r7),r0 # bring in addr of atom
33 pushl r0 # stack addr of atom of fcn to call
34 movl 8(r0),r0 # bring in fcn binding addr
35 jleq nonexf # jump if fcn non existant
36 ashl $-9,r0,r1 # see if bcd
37 cmpb $5,_typetable+1[r1] # we are calling
38 jeql gotbcd
39hackit:
40 calls $1,_Lfuncal # call lisp stuff
41 movl r7,r6 # restore np to top
42 rsb # return to callee
43gotbcd:
44 addl2 $4,r7 # inc lbot by one nament
45 calls $1,*(r0) # call code
46 movab -4(r7),r6 # restore np to top
47 rsb # return
48
49nonexf: # non existant function, call c function to take care of it,
50 # we could process it here but wish to minimize assembly language
51 # code.
52 # we should never return from this call
53 # the addr of the atom is already stacked
54
55 calls $1,_Undeff # call handler
56 clrl r0 # return nil to compiled code
57 rsb # if ever should return here
58
59 .globl __erthrow # errmessage for uncaught throws
60__erthrow:
61 .byte 'U,'n,'c,'a,'u,'g,'h,'t,' ,'t,'h,'r,'o,'w
62 .byte ' ,'f,'r,'o,'m,' ,'c,'o,'m,'p,'i,'l,'e,'d
63 .byte ' ,'c,'o,'d,'e,0
64
65 .globl _tynames
66_tynames:
67 .long 0 # nothing here
68 .long _lispsys+20*4 # str_name
69 .long _lispsys+21*4 # atom_name
70 .long _lispsys+19*4 # int_name
71 .long _lispsys+23*4 # dtpr_name
72 .long _lispsys+22*4 # doub_name
73 .long _lispsys+58*4 # funct_name
74 .long _lispsys+83*4 # port_name
75 .long _lispsys+47*4 # array_name
76 .long 0 # nothing here
77 .long _lispsys+50*4 # sdot_name
78 .long _lispsys+53*4 # val_nam
79
80
81
82
83
84