|
|
1.1 root 1: /******************************************************************************
2: * Copyright (c) 2004, 2011 IBM Corporation
3: * All rights reserved.
4: * This program and the accompanying materials
5: * are made available under the terms of the BSD License
6: * which accompanies this distribution, and is available at
7: * http://www.opensource.org/licenses/bsd-license.php
8: *
9: * Contributors:
10: * IBM Corporation - initial implementation
11: *****************************************************************************/
12:
13: #include <virtio.h>
14: #include <virtio-blk.h>
15: #include <virtio-9p.h>
16:
17: /******** core virtio ********/
18:
19: // : virtio-vring-size ( queuesize -- ringsize )
20: PRIM(virtio_X2d_vring_X2d_size)
21: TOS.u = virtio_vring_size(TOS.u);
22: MIRP
23:
24: // : virtio-get-qsize ( dev queue -- queuesize )
25: PRIM(virtio_X2d_get_X2d_qsize)
26: int queue = TOS.u; POP;
27: TOS.u = virtio_get_qsize(TOS.a, queue);
28: MIRP
29:
30: // : virtio-get-config ( dev offset size -- val )
31: PRIM(virtio_X2d_get_X2d_config)
32: int size = TOS.u; POP;
33: int offset = TOS.u; POP;
34: TOS.u = virtio_get_config(TOS.a, offset, size);
35: MIRP
36:
37: /******** virtio-blk ********/
38:
39: // : virtio-blk-init ( dev -- )
40: PRIM(virtio_X2d_blk_X2d_init)
41: void *dev = TOS.a; POP;
42: virtioblk_init(dev);
43: MIRP
44:
45: // : virtio-blk-shutdown ( dev -- )
46: PRIM(virtio_X2d_blk_X2d_shutdown)
47: void *dev = TOS.a; POP;
48: virtioblk_shutdown(dev);
49: MIRP
50:
51: // : virtio-blk-read ( dev blkno cnt reg -- #read )
52: PRIM(virtio_X2d_blk_X2d_read)
53: void *dev = TOS.a; POP;
54: long cnt = TOS.n; POP;
55: long blkno = TOS.n; POP;
56: void *buf = TOS.a;
57: TOS.n = virtioblk_read(dev, buf, blkno, cnt);
58: MIRP
59:
60: /******** virtio-fs ********/
61:
62: // : virtio-fs-init ( dev tx rx size -- success )
63: PRIM(virtio_X2d_fs_X2d_init)
64: int size = TOS.n; POP;
65: void *rx = TOS.a; POP;
66: void *tx = TOS.a; POP;
67: void *dev = TOS.a;
68:
69: TOS.n = virtio_9p_init(dev, tx, rx, size) == 0 ? -1 : 0;
70: MIRP
71:
72: // : virtio-fs-shutdown ( dev -- )
73: PRIM(virtio_X2d_fs_X2d_shutdown)
74: void *dev = TOS.a; POP;
75:
76: virtio_9p_shutdown(dev);
77: MIRP
78:
79: // : virtio-fs-load ( dev buf str -- #read )
80: PRIM(virtio_X2d_fs_X2d_load)
81: char *str = TOS.a; POP;
82: void *buf = TOS.a; POP;
83: void *dev = TOS.a;
84:
85: TOS.n = virtio_9p_load(dev, str, buf);
86: MIRP
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.