|
|
1.1 root 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.