|
|
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.