diff options
author | Peter Chubb <peterc@gelato.unsw.edu.au> | 2005-08-24 20:13:00 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-08-31 11:32:03 -0400 |
commit | dc90e95f310f4f821c905b2aec8e9449bb3270fa (patch) | |
tree | 23e70f0fe44f2176ae7ab45e64ea16d50ea4e107 /arch/ia64/hp/sim | |
parent | d8971fcb702e24d1e22c77fd1772f182ffee87e3 (diff) |
[IA64] Add PAL_VM_SUMMARY/PAL_MEM_ATTRIB to bootloader for SKI
This patch implements PAL_VM_SUMMARY (and PAL_MEM_ATTRIB for good
measure) and pretends that the simulated machine is a McKinley.
Some extra comments and clean-up by Tony Luck.
Signed-off-by: Peter Chubb <peterc@gelato.unsw.edu.au>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/hp/sim')
-rw-r--r-- | arch/ia64/hp/sim/boot/boot_head.S | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/arch/ia64/hp/sim/boot/boot_head.S b/arch/ia64/hp/sim/boot/boot_head.S index 1c8c7e6a9a5e..a9bd71ac78e2 100644 --- a/arch/ia64/hp/sim/boot/boot_head.S +++ b/arch/ia64/hp/sim/boot/boot_head.S | |||
@@ -4,6 +4,7 @@ | |||
4 | */ | 4 | */ |
5 | 5 | ||
6 | #include <asm/asmmacro.h> | 6 | #include <asm/asmmacro.h> |
7 | #include <asm/pal.h> | ||
7 | 8 | ||
8 | .bss | 9 | .bss |
9 | .align 16 | 10 | .align 16 |
@@ -49,7 +50,11 @@ GLOBAL_ENTRY(jmp_to_kernel) | |||
49 | br.sptk.few b7 | 50 | br.sptk.few b7 |
50 | END(jmp_to_kernel) | 51 | END(jmp_to_kernel) |
51 | 52 | ||
52 | 53 | /* | |
54 | * r28 contains the index of the PAL function | ||
55 | * r29--31 the args | ||
56 | * Return values in ret0--3 (r8--11) | ||
57 | */ | ||
53 | GLOBAL_ENTRY(pal_emulator_static) | 58 | GLOBAL_ENTRY(pal_emulator_static) |
54 | mov r8=-1 | 59 | mov r8=-1 |
55 | mov r9=256 | 60 | mov r9=256 |
@@ -62,7 +67,7 @@ GLOBAL_ENTRY(pal_emulator_static) | |||
62 | cmp.gtu p6,p7=r9,r28 | 67 | cmp.gtu p6,p7=r9,r28 |
63 | (p6) br.cond.sptk.few stacked | 68 | (p6) br.cond.sptk.few stacked |
64 | ;; | 69 | ;; |
65 | static: cmp.eq p6,p7=6,r28 /* PAL_PTCE_INFO */ | 70 | static: cmp.eq p6,p7=PAL_PTCE_INFO,r28 |
66 | (p7) br.cond.sptk.few 1f | 71 | (p7) br.cond.sptk.few 1f |
67 | ;; | 72 | ;; |
68 | mov r8=0 /* status = 0 */ | 73 | mov r8=0 /* status = 0 */ |
@@ -70,21 +75,21 @@ static: cmp.eq p6,p7=6,r28 /* PAL_PTCE_INFO */ | |||
70 | movl r10=0x0000000200000003 /* count[0], count[1] */ | 75 | movl r10=0x0000000200000003 /* count[0], count[1] */ |
71 | movl r11=0x1000000000002000 /* stride[0], stride[1] */ | 76 | movl r11=0x1000000000002000 /* stride[0], stride[1] */ |
72 | br.cond.sptk.few rp | 77 | br.cond.sptk.few rp |
73 | 1: cmp.eq p6,p7=14,r28 /* PAL_FREQ_RATIOS */ | 78 | 1: cmp.eq p6,p7=PAL_FREQ_RATIOS,r28 |
74 | (p7) br.cond.sptk.few 1f | 79 | (p7) br.cond.sptk.few 1f |
75 | mov r8=0 /* status = 0 */ | 80 | mov r8=0 /* status = 0 */ |
76 | movl r9 =0x100000064 /* proc_ratio (1/100) */ | 81 | movl r9 =0x100000064 /* proc_ratio (1/100) */ |
77 | movl r10=0x100000100 /* bus_ratio<<32 (1/256) */ | 82 | movl r10=0x100000100 /* bus_ratio<<32 (1/256) */ |
78 | movl r11=0x100000064 /* itc_ratio<<32 (1/100) */ | 83 | movl r11=0x100000064 /* itc_ratio<<32 (1/100) */ |
79 | ;; | 84 | ;; |
80 | 1: cmp.eq p6,p7=19,r28 /* PAL_RSE_INFO */ | 85 | 1: cmp.eq p6,p7=PAL_RSE_INFO,r28 |
81 | (p7) br.cond.sptk.few 1f | 86 | (p7) br.cond.sptk.few 1f |
82 | mov r8=0 /* status = 0 */ | 87 | mov r8=0 /* status = 0 */ |
83 | mov r9=96 /* num phys stacked */ | 88 | mov r9=96 /* num phys stacked */ |
84 | mov r10=0 /* hints */ | 89 | mov r10=0 /* hints */ |
85 | mov r11=0 | 90 | mov r11=0 |
86 | br.cond.sptk.few rp | 91 | br.cond.sptk.few rp |
87 | 1: cmp.eq p6,p7=1,r28 /* PAL_CACHE_FLUSH */ | 92 | 1: cmp.eq p6,p7=PAL_CACHE_FLUSH,r28 /* PAL_CACHE_FLUSH */ |
88 | (p7) br.cond.sptk.few 1f | 93 | (p7) br.cond.sptk.few 1f |
89 | mov r9=ar.lc | 94 | mov r9=ar.lc |
90 | movl r8=524288 /* flush 512k million cache lines (16MB) */ | 95 | movl r8=524288 /* flush 512k million cache lines (16MB) */ |
@@ -102,7 +107,7 @@ static: cmp.eq p6,p7=6,r28 /* PAL_PTCE_INFO */ | |||
102 | mov ar.lc=r9 | 107 | mov ar.lc=r9 |
103 | mov r8=r0 | 108 | mov r8=r0 |
104 | ;; | 109 | ;; |
105 | 1: cmp.eq p6,p7=15,r28 /* PAL_PERF_MON_INFO */ | 110 | 1: cmp.eq p6,p7=PAL_PERF_MON_INFO,r28 |
106 | (p7) br.cond.sptk.few 1f | 111 | (p7) br.cond.sptk.few 1f |
107 | mov r8=0 /* status = 0 */ | 112 | mov r8=0 /* status = 0 */ |
108 | movl r9 =0x08122f04 /* generic=4 width=47 retired=8 cycles=18 */ | 113 | movl r9 =0x08122f04 /* generic=4 width=47 retired=8 cycles=18 */ |
@@ -138,6 +143,20 @@ static: cmp.eq p6,p7=6,r28 /* PAL_PTCE_INFO */ | |||
138 | st8 [r29]=r0,16 /* clear remaining bits */ | 143 | st8 [r29]=r0,16 /* clear remaining bits */ |
139 | st8 [r18]=r0,16 /* clear remaining bits */ | 144 | st8 [r18]=r0,16 /* clear remaining bits */ |
140 | ;; | 145 | ;; |
146 | 1: cmp.eq p6,p7=PAL_VM_SUMMARY,r28 | ||
147 | (p7) br.cond.sptk.few 1f | ||
148 | mov r8=0 /* status = 0 */ | ||
149 | movl r9=0x2044040020F1865 /* num_tc_levels=2, num_unique_tcs=4 */ | ||
150 | /* max_itr_entry=64, max_dtr_entry=64 */ | ||
151 | /* hash_tag_id=2, max_pkr=15 */ | ||
152 | /* key_size=24, phys_add_size=50, vw=1 */ | ||
153 | movl r10=0x183C /* rid_size=24, impl_va_msb=60 */ | ||
154 | ;; | ||
155 | 1: cmp.eq p6,p7=PAL_MEM_ATTRIB,r28 | ||
156 | (p7) br.cond.sptk.few 1f | ||
157 | mov r8=0 /* status = 0 */ | ||
158 | mov r9=0x80|0x01 /* NatPage|WB */ | ||
159 | ;; | ||
141 | 1: br.cond.sptk.few rp | 160 | 1: br.cond.sptk.few rp |
142 | stacked: | 161 | stacked: |
143 | br.ret.sptk.few rp | 162 | br.ret.sptk.few rp |