Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / lib / libipmi / libipmi.code
1 /******************************************************************************
2  * Copyright (c) 2004, 2008 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 <libipmi.h>
14
15 // : ipmi-kcs-cmd  ( in-buf in-len out-buf out-maxlen -- out-len errorcode )
16 PRIM(IPMI_X2d_KCS_X2d_CMD)
17         cell maxlen = TOS; POP;
18         cell outbuf = TOS; POP;
19         int len = TOS.n; POP;
20         cell inbuf = TOS;
21         int retval;
22         retval = ipmi_kcs_cmd(inbuf.a, outbuf.a, maxlen.n, (uint32_t *) &len);
23         TOS.n = len;
24         PUSH; TOS.n = retval;
25 MIRP
26
27
28 PRIM(IPMI_X2d_SYSTEM_X2d_REBOOT)
29         ipmi_system_reboot();
30 MIRP
31
32
33 PRIM(IPMI_X2d_POWER_X2d_OFF)
34         ipmi_power_off();
35 MIRP
36
37
38 // : ipmi-oem-stop-bootwatchdog  ( -- errorcode )
39 PRIM(IPMI_X2d_OEM_X2d_STOP_X2d_BOOTWATCHDOG)
40         PUSH;
41         TOS.n = ipmi_oem_stop_bootwatchdog();
42 MIRP
43
44
45 // : ipmi-oem-set-bootwatchdog  ( seconds -- errorcode )
46 PRIM(IPMI_X2d_OEM_X2d_SET_X2d_BOOTWATCHDOG)
47         int sec = TOS.n;
48         TOS.n = ipmi_oem_set_bootwatchdog(sec);
49 MIRP
50
51
52 // : ipmi-oem-reset-bootwatchdog  ( -- errorcode )
53 PRIM(IPMI_X2d_OEM_X2d_RESET_X2d_BOOTWATCHDOG)
54         PUSH;
55         TOS.n = ipmi_oem_reset_bootwatchdog();
56 MIRP
57
58
59 // : ipmi-oem-led-set  ( type instance state -- errorcode )
60 PRIM(IPMI_X2d_OEM_X2d_LED_X2d_SET)
61         int state = TOS.n; POP;
62         int instance = TOS.n; POP;
63         int type = TOS.n;
64         TOS.n = ipmi_oem_led_set(type, instance, state);
65 MIRP
66
67
68 // : ipmi-oem-read-vpd  ( offset length dst -- status )
69 PRIM(IPMI_X2d_OEM_X2d_READ_X2d_VPD)
70         cell dest = TOS; POP;
71         int len = TOS.n; POP;
72         int offset = TOS.n;
73         TOS.n = ipmi_oem_read_vpd(dest.a, len, offset);
74 MIRP
75
76 // : ipmi-oem-write-vpd  ( offset length src -- status )
77 PRIM(IPMI_X2d_OEM_X2d_WRITE_X2d_VPD)
78         cell src = TOS; POP;
79         int len = TOS.n; POP;
80         int offset = TOS.n;
81         TOS.n = ipmi_oem_write_vpd(src.a, len, offset);
82 MIRP
83
84
85 // : ipmi-oem-get-blade-descr  ( buf maxlen -- len status )
86 PRIM(IPMI_X2d_OEM_X2d_GET_X2d_BLADE_X2d_DESCR)
87         int maxlen = TOS.n; POP;
88         cell buf = TOS;
89         int len = 0;
90         int retval;
91         retval = ipmi_oem_get_blade_descr(buf.a, maxlen, (uint32_t *) &len);
92         TOS.n = len;
93         PUSH; TOS.n = retval;
94 MIRP
95
96
97 // : ipmi-oem-bios2sp  ( str-ptr str-len swid type -- errorcode )
98 PRIM(IPMI_X2d_OEM_X2d_BIOS2SP)
99         int type = TOS.n; POP;
100         int swid = TOS.n; POP;
101         int len = TOS.n; POP;
102         void* addr = TOS.a;
103         TOS.n = ipmi_oem_bios2sp(swid, type, addr, len);
104 MIRP
105
106 // : ipmi-set-sensor ( param-1 ... param-n n command sensor - errorcode )
107 PRIM(IPMI_X2d_SET_X2d_SENSOR)
108         int sensor = TOS.n; POP;
109         int cmd    = TOS.n; POP;
110         int n      = TOS.n;
111         int i      = n;
112         uint8_t param[10];
113         while (i>0) {
114                 i--;
115                 POP; param[i]=TOS.n;
116         };
117         TOS.n = ipmi_set_sensor((cmd<<8)+sensor,n,
118                 param[0],param[1],param[2],param[3],param[4],
119                 param[5],param[6],param[7],param[8],param[9]);
120 MIRP