aboutsummaryrefslogtreecommitdiffstats
path: root/roms/openbios/arch/sparc64/tree.fs
blob: af8948d126fa158bca4ac54f1acca60c46fef21a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
include config.fs

\ -------------------------------------------------------------------------
\ UPA encode/decode unit
\ -------------------------------------------------------------------------

: decode-unit-upa ( str len -- id lun )
  ascii , left-split
  ( addr-R len-R addr-L len-L )
  parse-hex
  -rot parse-hex
  swap
;

: encode-unit-upa ( id lun -- str len)
  swap
  pocket tohexstr
  " ," pocket tmpstrcat >r
  rot pocket tohexstr r> tmpstrcat drop
;

\ ---------
\ DMA words
\ ---------

: sparc64-dma-free  ( virt size -- )
  2drop
;

: sparc64-dma-map-in  ( virt size cacheable? -- devaddr )
  2drop
;

: sparc64-dma-map-out  ( virt devaddr size -- )
  (dma-sync)
;

['] sparc64-dma-free to (dma-free)
['] sparc64-dma-map-in to (dma-map-in)
['] sparc64-dma-map-out to (dma-map-out)

\ -------------------------------------------------------------
\ device-tree
\ -------------------------------------------------------------

" /" find-device
  2 encode-int " #address-cells" property
  2 encode-int " #size-cells" property
  " sun4u" encode-string " compatible" property

  : encode-unit encode-unit-upa ;
  : decode-unit decode-unit-upa ;

  : dma-sync  ( virt devaddr size -- )
    (dma-sync)
  ;

  : dma-alloc  ( size -- virt )
    (dma-alloc)
  ;

  : dma-free  ( virt size -- )
    (dma-free)
  ;

  : dma-map-in  ( virt size cacheable? -- devaddr )
    (dma-map-in)
  ;

  : dma-map-out  ( virt devaddr size -- )
    (dma-map-out)
  ;

new-device
  " memory" device-name
  " memory" device-type
  external
  : open true ;
  : close ;
  \ see arch/sparc64/lib.c for methods
finish-device

new-device
  " virtual-memory" device-name
  external
  \ see arch/sparc64/lib.c for methods
finish-device

" /options" find-device
  " disk" encode-string " boot-from" property

" /openprom" find-device
  " OBP 3.10.24 1999/01/01 01:01" encode-string " version" property