Annotation of qemu/roms/SLOF/include/ppcp7/cpu.h, revision 1.1.1.2

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: #ifndef __CPU_H
                     14: #define __CPU_H
                     15: 
                     16: /* Used in boot_abort.S, will need something better for KVM */
                     17: #define HSPRG0  304
                     18: 
                     19: /* XXX FIXME: Can be more efficient, no dcbst nor loop needed on P7 */
                     20: /* This macro uses r0 */
                     21: #define FLUSH_CACHE(r, n)      add     n, n, r; \
                     22:                                addi    n, n, 127; \
                     23:                                rlwinm  r, r, 0,0,24; \
                     24:                                rlwinm  n, n, 0,0,24; \
                     25:                                sub     n, n, r; \
                     26:                                srwi    n, n, 7; \
                     27:                                mtctr   n; \
                     28:                        0:      dcbst   0, r; \
                     29:                                sync; \
                     30:                                icbi    0, r; \
                     31:                                sync; \
                     32:                                isync; \
                     33:                                addi    r, r, 128; \
                     34:                                bdnz    0b;
                     35: 
                     36: #ifndef __ASSEMBLER__
                     37: #define STRINGIFY(x...) #x
                     38: #define EXPAND(x) STRINGIFY(x)
                     39: 
                     40: static inline void flush_cache(void* r, long n)
                     41: {
                     42:        asm volatile(EXPAND(FLUSH_CACHE(%0, %1))
                     43:                     : "+r"(r), "+r"(n)
                     44:                     :: "memory", "cc", "r0", "ctr");
                     45: }
                     46: 
1.1.1.2 ! root       47: static inline void
        !            48: eieio(void)
        !            49: {
        !            50:        asm volatile ("eieio":::"memory");
        !            51: }
1.1       root       52: 
                     53: #endif /* __ASSEMBLER__ */
                     54: 
                     55: #endif

unix.superglobalmegacorp.com

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