Annotation of qemu/roms/SLOF/board-js2x/llfw/hw.c, revision 1.1

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 <cpu.h>
        !            14: #include <stdint.h>
        !            15: #include <hw.h>
        !            16: 
        !            17: uint16_t
        !            18: bswap16_load(uint64_t addr)
        !            19: {
        !            20:        unsigned int val;
        !            21:        set_ci();
        !            22:        asm volatile ("lhbrx %0, 0, %1":"=r" (val):"r"(addr));
        !            23:        clr_ci();
        !            24:        return val;
        !            25: }
        !            26: 
        !            27: uint32_t
        !            28: bswap32_load(uint64_t addr)
        !            29: {
        !            30:        unsigned int val;
        !            31:        set_ci();
        !            32:        asm volatile ("lwbrx %0, 0, %1":"=r" (val):"r"(addr));
        !            33:        clr_ci();
        !            34:        return val;
        !            35: }
        !            36: 
        !            37: void
        !            38: bswap16_store(uint64_t addr, uint16_t val)
        !            39: {
        !            40:        set_ci();
        !            41:        asm volatile ("sthbrx %0, 0, %1"::"r" (val), "r"(addr));
        !            42:        clr_ci();
        !            43: }
        !            44: 
        !            45: void
        !            46: bswap32_store(uint64_t addr, uint32_t val)
        !            47: {
        !            48:        set_ci();
        !            49:        asm volatile ("stwbrx %0, 0, %1"::"r" (val), "r"(addr));
        !            50:        clr_ci();
        !            51: }
        !            52: 
        !            53: uint8_t
        !            54: load8_ci(uint64_t addr)
        !            55: {
        !            56:        uint8_t val;
        !            57:        set_ci();
        !            58:        val = *(uint8_t *) addr;
        !            59:        clr_ci();
        !            60:        return val;
        !            61: }
        !            62: 
        !            63: uint16_t
        !            64: load16_ci(uint64_t addr)
        !            65: {
        !            66:        uint16_t val;
        !            67:        set_ci();
        !            68:        val = *(uint16_t *) addr;
        !            69:        clr_ci();
        !            70:        return val;
        !            71: }
        !            72: 
        !            73: uint32_t
        !            74: load32_ci(uint64_t addr)
        !            75: {
        !            76:        uint32_t val;
        !            77:        set_ci();
        !            78:        val = *(uint32_t *) addr;
        !            79:        clr_ci();
        !            80:        return val;
        !            81: }
        !            82: 
        !            83: uint64_t
        !            84: load64_ci(uint64_t addr)
        !            85: {
        !            86:        uint64_t val;
        !            87:        set_ci();
        !            88:        val = *(uint64_t *) addr;
        !            89:        clr_ci();
        !            90:        return val;
        !            91: }
        !            92: 
        !            93: 
        !            94: void
        !            95: store8_ci(uint64_t addr, uint8_t val)
        !            96: {
        !            97:        set_ci();
        !            98:        *(uint8_t *) addr = val;
        !            99:        clr_ci();
        !           100: }
        !           101: 
        !           102: void
        !           103: store16_ci(uint64_t addr, uint16_t val)
        !           104: {
        !           105:        set_ci();
        !           106:        *(uint16_t *) addr = val;
        !           107:        clr_ci();
        !           108: }
        !           109: 
        !           110: void
        !           111: store32_ci(uint64_t addr, uint32_t val)
        !           112: {
        !           113:        set_ci();
        !           114:        *(uint32_t *) addr = val;
        !           115:        clr_ci();
        !           116: }
        !           117: 
        !           118: void
        !           119: store64_ci(uint64_t addr, uint64_t val)
        !           120: {
        !           121:        set_ci();
        !           122:        *(uint64_t *) addr = val;
        !           123:        clr_ci();
        !           124: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.