summaryrefslogtreecommitdiff
path: root/roms/openbios/arch/sparc32/init.fs
blob: 814c720c9e7d5b3b622200712d76940c9312c87f (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
:noname
  ."   Type 'help' for detailed information" cr
  \ ."   boot secondary slave cdrom: " cr
  \ ."    0 >  boot hd:2,\boot\vmlinuz root=/dev/hda2" cr
  ; DIAG-initializer

: make-openable ( path )
  find-dev if
    begin ?dup while
      \ install trivial open and close methods
      dup active-package! is-open
      parent
    repeat
  then
;

: preopen ( chosen-str node-path )
  2dup make-openable

  " /chosen" find-device
  open-dev ?dup if
    encode-int 2swap property
  else
    2drop
  then
;

:noname
  set-defaults
; PREPOST-initializer

\ preopen device nodes (and store the ihandles under /chosen)
:noname
  " memory" " /memory" preopen
  " mmu" " /virtual-memory" preopen
; SYSTEM-initializer

device-end

: rmap@    ( virt -- rmentry )
  drop 0
  ;

\ D5.3 SBus specific on-board memory address space
: obmem ( -- space )
  0
  ;

\ (peek) and (poke) implementation
defer sfsr@
defer ignore-dfault

:noname
  \ ( addr xt -- false | value true )
  sfsr@ drop            \ Clear any existing MMU fault status

  -1 ignore-dfault !    \ Disable data fault trap
  execute
  0 ignore-dfault !     \ Enable data fault trap

  sfsr@ 0= if
    true
  else
    drop false          \ Failed, drop the read value
  then
; to (peek)

:noname
  \ ( value addr xt -- okay? )
  sfsr@ drop            \ Clear any existing MMU fault status

  -1 ignore-dfault !    \ Disable data fault trap
  execute
  0 ignore-dfault !     \ Enable data fault trap

  sfsr@ 0=              \ true if no fault
; to (poke)

\ Load TCX FCode driver blob
[IFDEF] CONFIG_DRIVER_SBUS
  -1 value tcx-driver-fcode
  " QEMU,tcx.bin" $encode-file to tcx-driver-fcode
[THEN]