/****************************************************************************** * Copyright (c) 2004, 2008 IBM Corporation * All rights reserved. * This program and the accompanying materials * are made available under the terms of the BSD License * which accompanies this distribution, and is available at * http://www.opensource.org/licenses/bsd-license.php * * Contributors: * IBM Corporation - initial implementation *****************************************************************************/ #include // : ipmi-kcs-cmd ( in-buf in-len out-buf out-maxlen -- out-len errorcode ) PRIM(IPMI_X2d_KCS_X2d_CMD) cell maxlen = TOS; POP; cell outbuf = TOS; POP; int len = TOS.n; POP; cell inbuf = TOS; int retval; retval = ipmi_kcs_cmd(inbuf.a, outbuf.a, maxlen.n, (uint32_t *) &len); TOS.n = len; PUSH; TOS.n = retval; MIRP PRIM(IPMI_X2d_SYSTEM_X2d_REBOOT) ipmi_system_reboot(); MIRP PRIM(IPMI_X2d_POWER_X2d_OFF) ipmi_power_off(); MIRP // : ipmi-oem-stop-bootwatchdog ( -- errorcode ) PRIM(IPMI_X2d_OEM_X2d_STOP_X2d_BOOTWATCHDOG) PUSH; TOS.n = ipmi_oem_stop_bootwatchdog(); MIRP // : ipmi-oem-set-bootwatchdog ( seconds -- errorcode ) PRIM(IPMI_X2d_OEM_X2d_SET_X2d_BOOTWATCHDOG) int sec = TOS.n; TOS.n = ipmi_oem_set_bootwatchdog(sec); MIRP // : ipmi-oem-reset-bootwatchdog ( -- errorcode ) PRIM(IPMI_X2d_OEM_X2d_RESET_X2d_BOOTWATCHDOG) PUSH; TOS.n = ipmi_oem_reset_bootwatchdog(); MIRP // : ipmi-oem-led-set ( type instance state -- errorcode ) PRIM(IPMI_X2d_OEM_X2d_LED_X2d_SET) int state = TOS.n; POP; int instance = TOS.n; POP; int type = TOS.n; TOS.n = ipmi_oem_led_set(type, instance, state); MIRP // : ipmi-oem-read-vpd ( offset length dst -- status ) PRIM(IPMI_X2d_OEM_X2d_READ_X2d_VPD) cell dest = TOS; POP; int len = TOS.n; POP; int offset = TOS.n; TOS.n = ipmi_oem_read_vpd(dest.a, len, offset); MIRP // : ipmi-oem-write-vpd ( offset length src -- status ) PRIM(IPMI_X2d_OEM_X2d_WRITE_X2d_VPD) cell src = TOS; POP; int len = TOS.n; POP; int offset = TOS.n; TOS.n = ipmi_oem_write_vpd(src.a, len, offset); MIRP // : ipmi-oem-get-blade-descr ( buf maxlen -- len status ) PRIM(IPMI_X2d_OEM_X2d_GET_X2d_BLADE_X2d_DESCR) int maxlen = TOS.n; POP; cell buf = TOS; int len = 0; int retval; retval = ipmi_oem_get_blade_descr(buf.a, maxlen, (uint32_t *) &len); TOS.n = len; PUSH; TOS.n = retval; MIRP // : ipmi-oem-bios2sp ( str-ptr str-len swid type -- errorcode ) PRIM(IPMI_X2d_OEM_X2d_BIOS2SP) int type = TOS.n; POP; int swid = TOS.n; POP; int len = TOS.n; POP; void* addr = TOS.a; TOS.n = ipmi_oem_bios2sp(swid, type, addr, len); MIRP // : ipmi-set-sensor ( param-1 ... param-n n command sensor - errorcode ) PRIM(IPMI_X2d_SET_X2d_SENSOR) int sensor = TOS.n; POP; int cmd = TOS.n; POP; int n = TOS.n; int i = n; uint8_t param[10]; while (i>0) { i--; POP; param[i]=TOS.n; }; TOS.n = ipmi_set_sensor((cmd<<8)+sensor,n, param[0],param[1],param[2],param[3],param[4], param[5],param[6],param[7],param[8],param[9]); MIRP