1 | /* |
---|
2 | * Display the PowerPC BAT Registers |
---|
3 | * |
---|
4 | * COPYRIGHT (c) 1989-2007. |
---|
5 | * On-Line Applications Research Corporation (OAR). |
---|
6 | * |
---|
7 | * The license and distribution terms for this file may be |
---|
8 | * found in the file LICENSE in this distribution or at |
---|
9 | * http://www.rtems.org/license/LICENSE. |
---|
10 | */ |
---|
11 | |
---|
12 | #include <inttypes.h> |
---|
13 | #include <string.h> |
---|
14 | |
---|
15 | #include <bsp.h> |
---|
16 | #include <rtems/bspIo.h> |
---|
17 | #include <libcpu/spr.h> |
---|
18 | #include <libcpu/powerpc-utility.h> |
---|
19 | |
---|
20 | void printBAT( int bat, uint32_t upper, uint32_t lower ) |
---|
21 | { |
---|
22 | uint32_t lowest_addr; |
---|
23 | uint32_t size; |
---|
24 | |
---|
25 | printk("BAT%d raw(upper=0x%08" PRIx32 ", lower=0x%08" PRIx32 ") ", bat, upper, lower ); |
---|
26 | |
---|
27 | lowest_addr = (upper & 0xFFFE0000); |
---|
28 | size = (((upper & 0x00001FFC) >> 2) + 1) * (128 * 1024); |
---|
29 | printk(" range(0x%08" PRIx32 ", 0x%08" PRIx32 ") %s%s %s%s%s%s %s\n", |
---|
30 | lowest_addr, |
---|
31 | lowest_addr + (size - 1), |
---|
32 | (upper & 0x01) ? "P" : "p", |
---|
33 | (upper & 0x02) ? "S" : "s", |
---|
34 | (lower & 0x08) ? "G" : "g", |
---|
35 | (lower & 0x10) ? "M" : "m", |
---|
36 | (lower & 0x20) ? "I" : "i", |
---|
37 | (lower & 0x40) ? "W" : "w", |
---|
38 | (lower & 0x01) ? "Read Only" : |
---|
39 | ((lower & 0x02) ? "Read/Write" : "No Access") |
---|
40 | ); |
---|
41 | } |
---|
42 | |
---|
43 | void ShowBATS(void){ |
---|
44 | uint32_t lower; |
---|
45 | uint32_t upper; |
---|
46 | |
---|
47 | __MFSPR(536, upper); __MFSPR(537, lower); printBAT( 0, upper, lower ); |
---|
48 | __MFSPR(538, upper); __MFSPR(539, lower); printBAT( 1, upper, lower ); |
---|
49 | __MFSPR(540, upper); __MFSPR(541, lower); printBAT( 2, upper, lower ); |
---|
50 | __MFSPR(542, upper); __MFSPR(543, lower); printBAT( 3, upper, lower ); |
---|
51 | } |
---|