/****************************************************************************** * 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 *****************************************************************************/ // The Forth code words (primitives) that are specific to PowerPC64. // CPU register accesses. cod(HID0!) cod(HID0@) cod(HID1!) cod(HID1@) cod(HID4!) cod(HID4@) cod(HID5!) cod(HID5@) cod(MSR@) cod(MSR!) cod(SDR1@) cod(SDR1!) cod(PVR@) cod(PIR@) cod(TBL@) cod(TBU@) cod(DABR@) cod(DABR!) cod(HIOR@) cod(HIOR!) cod(SPRG0@) cod(SPRG0!) cod(SPRG1@) cod(SPRG1!) cod(SPRG2@) cod(SPRG2!) cod(SPRG3@) cod(SPRG3!) cod(HSPRG0@) cod(HSPRG0!) cod(HSPRG1@) cod(HSPRG1!) cod(DEC@) cod(DEC!) cod(MMCR0!) cod(PMC1@) cod(ICBI) // The start address of a binary payload. //con(PAYLOAD (type_u)_binary_payload_start) // Calling the client program. con(CLIENT-ENTRY-POINT (type_u)client_entry_point) cod(JUMP-CLIENT) dfr(CLIENTINTERFACE) con(ROMFS-LOOKUP-ENTRY (type_u) c_romfs_lookup) // not very elegant... but the only way it works for me con(.WRITE-LOG-BYTE-ENTRY (type_u) writeLogByte_wrapper) col(WRITE-LOG-BYTE-ENTRY .WRITE-LOG-BYTE-ENTRY @) cod(CALL-C) cod(START-RTAS) cod(FLUSHCACHE) // Bit map allocator cod(BM-ALLOCATOR-INIT) cod(BM-ALLOC) cod(BM-FREE) // Hang. cod(CRASH) var(DAAR 0x00f00000) col(DUMBER DAAR @ C! LIT(1) DAAR +!) dfr(BOOT-EXCEPTION-HANDLER) col(NICEINIT DOTICK DROP DOTO EMIT DOTICK ((FIND)) DOTO (FIND) DOTICK 2DROP DOTO (REVEAL) LIT((type_u)_binary_OF_fsi_start) LIT((type_u)_binary_OF_fsi_end) OVER - DOTICK EVALUATE CATCH BOOT-EXCEPTION-HANDLER) static cell xt_SYSTHROW[] = { _0 RDEPTH_X21 DUP LIT(0x100) _X3d _0BRANCH(5) SWAP DROP NICEINIT BRANCH(7) DUP LIT(0x3800) _X3d _0BRANCH(1) CLIENTINTERFACE PRINT_X2d_STATUS QUIT }; // sentinel, leave it here! col(LASTWORD )