OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-ppc64/] [systemcfg.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#ifndef _SYSTEMCFG_H
2
#define _SYSTEMCFG_H
3
 
4
/*
5
 * Copyright (C) 2002 Peter Bergner <bergner@vnet.ibm.com>, IBM
6
 *
7
 * This program is free software; you can redistribute it and/or
8
 * modify it under the terms of the GNU General Public License
9
 * as published by the Free Software Foundation; either version
10
 * 2 of the License, or (at your option) any later version.
11
 */
12
 
13
/* Change Activity:
14
 * 2002/09/30 : bergner  : Created
15
 * End Change Activity
16
 */
17
 
18
 
19
#ifndef __KERNEL__
20
#include <unistd.h>
21
#include <fcntl.h>
22
#include <sys/mman.h>
23
#include <linux/types.h>
24
#endif
25
 
26
/*
27
 * If the major version changes we are incompatible.
28
 * Minor version changes are a hint.
29
 */
30
#define SYSTEMCFG_MAJOR 1
31
#define SYSTEMCFG_MINOR 0
32
 
33
struct systemcfg {
34
        __u8  eye_catcher[16];          /* Eyecatcher: SYSTEMCFG:PPC64  0x00 */
35
        struct {                        /* Systemcfg version numbers         */
36
                __u32 major;            /* Major number                 0x10 */
37
                __u32 minor;            /* Minor number                 0x14 */
38
        } version;
39
 
40
        __u32 platform;                 /* Platform flags               0x18 */
41
        __u32 processor;                /* Processor type               0x1C */
42
        __u64 processorCount;           /* # of physical processors     0x20 */
43
        __u64 physicalMemorySize;       /* Size of real memory(B)       0x28 */
44
        __u64 tb_orig_stamp;            /* Timebase at boot             0x30 */
45
        __u64 tb_ticks_per_sec;         /* Timebase tics / sec          0x38 */
46
        __u64 tb_to_xs;                 /* Inverse of TB to 2^20        0x40 */
47
        __u64 stamp_xsec;               /*                              0x48 */
48
        __u64 tb_update_count;          /* Timebase atomicity ctr       0x50 */
49
        __u32 tz_minuteswest;           /* Minutes west of Greenwich    0x58 */
50
        __u32 tz_dsttime;               /* Type of dst correction       0x5C */
51
        __u32 dCacheL1Size;             /* L1 d-cache size              0x60 */
52
        __u32 dCacheL1LineSize;         /* L1 d-cache line size         0x64 */
53
        __u32 iCacheL1Size;             /* L1 i-cache size              0x68 */
54
        __u32 iCacheL1LineSize;         /* L1 i-cache line size         0x6C */
55
        __u8  reserved0[3984];          /* Reserve rest of page         0x70 */
56
};
57
 
58
#ifdef __KERNEL__
59
extern struct systemcfg *systemcfg;
60
#else
61
 
62
/* Processor Version Register (PVR) field extraction */
63
#define PVR_VER(pvr)  (((pvr) >>  16) & 0xFFFF) /* Version field */
64
#define PVR_REV(pvr)  (((pvr) >>   0) & 0xFFFF) /* Revison field */
65
 
66
/* Processor Version Numbers */
67
#define PV_NORTHSTAR    0x0033
68
#define PV_PULSAR       0x0034
69
#define PV_POWER4       0x0035
70
#define PV_ICESTAR      0x0036
71
#define PV_SSTAR        0x0037
72
#define PV_POWER4p      0x0038
73
#define PV_POWER4ul     0x0039
74
#define PV_630          0x0040
75
#define PV_630p         0x0041
76
 
77
/* Platforms supported by PPC64 */
78
#define PLATFORM_PSERIES      0x0100
79
#define PLATFORM_PSERIES_LPAR 0x0101
80
#define PLATFORM_ISERIES_LPAR 0x0201
81
 
82
 
83
static inline volatile struct systemcfg *systemcfg_init(void)
84
{
85
        int fd = open("/proc/ppc64/systemcfg", O_RDONLY);
86
        volatile struct systemcfg *ret;
87
 
88
        if (fd == -1)
89
                return 0;
90
        ret = mmap(0, sizeof(struct systemcfg), PROT_READ, MAP_SHARED, fd, 0);
91
        close(fd);
92
        if (!ret)
93
                return 0;
94
        if (ret->version.major != SYSTEMCFG_MAJOR || ret->version.minor < SYSTEMCFG_MINOR) {
95
                munmap((void *)ret, sizeof(struct systemcfg));
96
                return 0;
97
        }
98
        return ret;
99
}
100
#endif /* __KERNEL__ */
101
 
102
#endif /* _SYSTEMCFG_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.