Annotation of qemu/cache-utils.c, revision 1.1.1.1

1.1       root        1: #include "cache-utils.h"
                      2: 
                      3: #if defined(_ARCH_PPC)
                      4: struct qemu_cache_conf qemu_cache_conf = {
                      5:     .dcache_bsize = 16,
                      6:     .icache_bsize = 16
                      7: };
                      8: 
                      9: #if defined _AIX
                     10: #include <sys/systemcfg.h>
                     11: 
                     12: static void ppc_init_cacheline_sizes(void)
                     13: {
                     14:     qemu_cache_conf.icache_bsize = _system_configuration.icache_line;
                     15:     qemu_cache_conf.dcache_bsize = _system_configuration.dcache_line;
                     16: }
                     17: 
                     18: #elif defined __linux__
                     19: 
                     20: #define QEMU_AT_NULL        0
                     21: #define QEMU_AT_DCACHEBSIZE 19
                     22: #define QEMU_AT_ICACHEBSIZE 20
                     23: 
                     24: static void ppc_init_cacheline_sizes(char **envp)
                     25: {
                     26:     unsigned long *auxv;
                     27: 
                     28:     while (*envp++);
                     29: 
                     30:     for (auxv = (unsigned long *) envp; *auxv != QEMU_AT_NULL; auxv += 2) {
                     31:         switch (*auxv) {
                     32:         case QEMU_AT_DCACHEBSIZE: qemu_cache_conf.dcache_bsize = auxv[1]; break;
                     33:         case QEMU_AT_ICACHEBSIZE: qemu_cache_conf.icache_bsize = auxv[1]; break;
                     34:         default: break;
                     35:         }
                     36:     }
                     37: }
                     38: 
                     39: #elif defined __APPLE__
                     40: #include <stdio.h>
                     41: #include <sys/types.h>
                     42: #include <sys/sysctl.h>
                     43: 
                     44: static void ppc_init_cacheline_sizes(void)
                     45: {
                     46:     size_t len;
                     47:     unsigned cacheline;
                     48:     int name[2] = { CTL_HW, HW_CACHELINE };
                     49: 
                     50:     len = sizeof(cacheline);
                     51:     if (sysctl(name, 2, &cacheline, &len, NULL, 0)) {
                     52:         perror("sysctl CTL_HW HW_CACHELINE failed");
                     53:     } else {
                     54:         qemu_cache_conf.dcache_bsize = cacheline;
                     55:         qemu_cache_conf.icache_bsize = cacheline;
                     56:     }
                     57: }
                     58: #endif
                     59: 
                     60: #ifdef __linux__
                     61: void qemu_cache_utils_init(char **envp)
                     62: {
                     63:     ppc_init_cacheline_sizes(envp);
                     64: }
                     65: #else
                     66: void qemu_cache_utils_init(char **envp)
                     67: {
                     68:     (void) envp;
                     69:     ppc_init_cacheline_sizes();
                     70: }
                     71: #endif
                     72: 
                     73: #endif /* _ARCH_PPC */

unix.superglobalmegacorp.com