]> gitweb.factorcode.org Git - factor.git/blob - basis/cpu/ppc/64/linux/bootstrap.factor
use radix literals
[factor.git] / basis / cpu / ppc / 64 / linux / bootstrap.factor
1 ! Copyright (C) 2011 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: parser system kernel sequences math math.ranges
4 cpu.ppc.assembler combinators compiler.constants
5 bootstrap.image.private layouts namespaces ;
6 IN: bootstrap.ppc
7
8 8 \ cell set
9 big-endian on
10
11 : reserved-size ( -- n ) 48 ;
12 : lr-save ( -- n ) 16 ;
13
14 CONSTANT: ds-reg    14
15 CONSTANT: rs-reg    15
16 CONSTANT: vm-reg    16
17 CONSTANT: ctx-reg   17
18 CONSTANT: frame-reg 31
19 : nv-int-regs ( -- seq ) 13 31 [a,b] ;
20
21 : LOAD64 ( r n -- )
22     [ dup ] dip {
23         [ nip -48 shift 0xffff bitand LIS ]
24         [ -32 shift 0xffff bitand ORI ]
25         [ drop 32 SLDI ]
26         [ -16 shift 0xffff bitand ORIS ]
27         [ 0xffff bitand ORI ]
28     } 3cleave ;
29
30 : jit-trap-null ( src -- ) drop ;
31 : jit-load-vm ( dst -- )
32     0 LOAD64 0 rc-absolute-ppc-2/2/2/2 jit-vm ;
33 : jit-load-dlsym ( dst string -- )
34     [ 0 LOAD64 ] dip rc-absolute-ppc-2/2/2/2 jit-dlsym ;
35 : jit-load-dlsym-toc ( string -- )
36     [ 2 0 LOAD64 ] dip rc-absolute-ppc-2/2/2/2 jit-dlsym-toc ;
37 : jit-load-vm-arg ( dst -- )
38     0 LOAD64 rc-absolute-ppc-2/2/2/2 rt-vm jit-rel ;
39 : jit-load-entry-point-arg ( dst -- )
40     0 LOAD64 rc-absolute-ppc-2/2/2/2 rt-entry-point jit-rel ;
41 : jit-load-this-arg ( dst -- )
42     0 LOAD64 rc-absolute-ppc-2/2/2/2 rt-this jit-rel ;
43 : jit-load-literal-arg ( dst -- )
44     0 LOAD64 rc-absolute-ppc-2/2/2/2 rt-literal jit-rel ;
45 : jit-load-dlsym-arg ( dst -- )
46     0 LOAD64 rc-absolute-ppc-2/2/2/2 rt-dlsym jit-rel ;
47 : jit-load-dlsym-toc-arg ( -- )
48     2 0 LOAD64 rc-absolute-ppc-2/2/2/2 rt-dlsym-toc jit-rel ;
49 : jit-load-here-arg ( dst -- )
50     0 LOAD64 rc-absolute-ppc-2/2/2/2 rt-here jit-rel ;
51 : jit-load-megamorphic-cache-arg ( dst -- )
52     0 LOAD64 rc-absolute-ppc-2/2/2/2 rt-megamorphic-cache-hits jit-rel ;
53 : jit-load-cell ( dst src offset -- ) LD ;
54 : jit-load-cell-x ( dst src offset -- ) LDX ;
55 : jit-load-cell-update ( dst src offset -- ) LDU ;
56 : jit-save-cell ( dst src offset -- ) STD ;
57 : jit-save-cell-x ( dst src offset -- ) STDX ;
58 : jit-save-cell-update ( dst src offset -- ) STDU ;
59 : jit-load-int ( dst src offset -- ) LD ;
60 : jit-save-int ( dst src offset -- ) STD ;
61 : jit-shift-tag-bits ( dst src -- ) tag-bits get SRADI ;
62 : jit-mask-tag-bits ( dst src -- ) tag-bits get CLRRDI ;
63 : jit-shift-fixnum-slot ( dst src -- ) 1 SRADI ;
64 : jit-class-hashcode ( dst src -- ) 1 SRADI ;
65 : jit-shift-left-logical ( dst src n -- ) SLD ;
66 : jit-shift-left-logical-imm ( dst src n -- ) SLDI ;
67 : jit-shift-right-algebraic ( dst src n -- ) SRAD ;
68 : jit-divide ( dst ra rb -- ) DIVD ;
69 : jit-multiply-low ( dst ra rb -- ) MULLD ;
70 : jit-multiply-low-ov-rc ( dst ra rb -- ) MULLDO. ;
71 : jit-compare-cell ( cr ra rb -- ) CMPD ;
72 : jit-compare-cell-imm ( cr ra imm -- ) CMPDI ;
73
74 : cell-size ( -- n ) 8 ;
75 : factor-area-size ( -- n ) 32 ;
76 : param-size ( -- n ) 64 ;
77 : saved-int-regs-size ( -- n ) 192 ;
78
79 << "vocab:cpu/ppc/bootstrap.factor" parse-file suffix! >>
80 call