[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>
This commit is contained in:
parent
d8971fcb70
commit
dc90e95f31
|
@ -4,6 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <asm/asmmacro.h>
|
#include <asm/asmmacro.h>
|
||||||
|
#include <asm/pal.h>
|
||||||
|
|
||||||
.bss
|
.bss
|
||||||
.align 16
|
.align 16
|
||||||
|
@ -49,7 +50,11 @@ GLOBAL_ENTRY(jmp_to_kernel)
|
||||||
br.sptk.few b7
|
br.sptk.few b7
|
||||||
END(jmp_to_kernel)
|
END(jmp_to_kernel)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* r28 contains the index of the PAL function
|
||||||
|
* r29--31 the args
|
||||||
|
* Return values in ret0--3 (r8--11)
|
||||||
|
*/
|
||||||
GLOBAL_ENTRY(pal_emulator_static)
|
GLOBAL_ENTRY(pal_emulator_static)
|
||||||
mov r8=-1
|
mov r8=-1
|
||||||
mov r9=256
|
mov r9=256
|
||||||
|
@ -62,7 +67,7 @@ GLOBAL_ENTRY(pal_emulator_static)
|
||||||
cmp.gtu p6,p7=r9,r28
|
cmp.gtu p6,p7=r9,r28
|
||||||
(p6) br.cond.sptk.few stacked
|
(p6) br.cond.sptk.few stacked
|
||||||
;;
|
;;
|
||||||
static: cmp.eq p6,p7=6,r28 /* PAL_PTCE_INFO */
|
static: cmp.eq p6,p7=PAL_PTCE_INFO,r28
|
||||||
(p7) br.cond.sptk.few 1f
|
(p7) br.cond.sptk.few 1f
|
||||||
;;
|
;;
|
||||||
mov r8=0 /* status = 0 */
|
mov r8=0 /* status = 0 */
|
||||||
|
@ -70,21 +75,21 @@ static: cmp.eq p6,p7=6,r28 /* PAL_PTCE_INFO */
|
||||||
movl r10=0x0000000200000003 /* count[0], count[1] */
|
movl r10=0x0000000200000003 /* count[0], count[1] */
|
||||||
movl r11=0x1000000000002000 /* stride[0], stride[1] */
|
movl r11=0x1000000000002000 /* stride[0], stride[1] */
|
||||||
br.cond.sptk.few rp
|
br.cond.sptk.few rp
|
||||||
1: cmp.eq p6,p7=14,r28 /* PAL_FREQ_RATIOS */
|
1: cmp.eq p6,p7=PAL_FREQ_RATIOS,r28
|
||||||
(p7) br.cond.sptk.few 1f
|
(p7) br.cond.sptk.few 1f
|
||||||
mov r8=0 /* status = 0 */
|
mov r8=0 /* status = 0 */
|
||||||
movl r9 =0x100000064 /* proc_ratio (1/100) */
|
movl r9 =0x100000064 /* proc_ratio (1/100) */
|
||||||
movl r10=0x100000100 /* bus_ratio<<32 (1/256) */
|
movl r10=0x100000100 /* bus_ratio<<32 (1/256) */
|
||||||
movl r11=0x100000064 /* itc_ratio<<32 (1/100) */
|
movl r11=0x100000064 /* itc_ratio<<32 (1/100) */
|
||||||
;;
|
;;
|
||||||
1: cmp.eq p6,p7=19,r28 /* PAL_RSE_INFO */
|
1: cmp.eq p6,p7=PAL_RSE_INFO,r28
|
||||||
(p7) br.cond.sptk.few 1f
|
(p7) br.cond.sptk.few 1f
|
||||||
mov r8=0 /* status = 0 */
|
mov r8=0 /* status = 0 */
|
||||||
mov r9=96 /* num phys stacked */
|
mov r9=96 /* num phys stacked */
|
||||||
mov r10=0 /* hints */
|
mov r10=0 /* hints */
|
||||||
mov r11=0
|
mov r11=0
|
||||||
br.cond.sptk.few rp
|
br.cond.sptk.few rp
|
||||||
1: cmp.eq p6,p7=1,r28 /* PAL_CACHE_FLUSH */
|
1: cmp.eq p6,p7=PAL_CACHE_FLUSH,r28 /* PAL_CACHE_FLUSH */
|
||||||
(p7) br.cond.sptk.few 1f
|
(p7) br.cond.sptk.few 1f
|
||||||
mov r9=ar.lc
|
mov r9=ar.lc
|
||||||
movl r8=524288 /* flush 512k million cache lines (16MB) */
|
movl r8=524288 /* flush 512k million cache lines (16MB) */
|
||||||
|
@ -102,7 +107,7 @@ static: cmp.eq p6,p7=6,r28 /* PAL_PTCE_INFO */
|
||||||
mov ar.lc=r9
|
mov ar.lc=r9
|
||||||
mov r8=r0
|
mov r8=r0
|
||||||
;;
|
;;
|
||||||
1: cmp.eq p6,p7=15,r28 /* PAL_PERF_MON_INFO */
|
1: cmp.eq p6,p7=PAL_PERF_MON_INFO,r28
|
||||||
(p7) br.cond.sptk.few 1f
|
(p7) br.cond.sptk.few 1f
|
||||||
mov r8=0 /* status = 0 */
|
mov r8=0 /* status = 0 */
|
||||||
movl r9 =0x08122f04 /* generic=4 width=47 retired=8 cycles=18 */
|
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 */
|
||||||
st8 [r29]=r0,16 /* clear remaining bits */
|
st8 [r29]=r0,16 /* clear remaining bits */
|
||||||
st8 [r18]=r0,16 /* clear remaining bits */
|
st8 [r18]=r0,16 /* clear remaining bits */
|
||||||
;;
|
;;
|
||||||
|
1: cmp.eq p6,p7=PAL_VM_SUMMARY,r28
|
||||||
|
(p7) br.cond.sptk.few 1f
|
||||||
|
mov r8=0 /* status = 0 */
|
||||||
|
movl r9=0x2044040020F1865 /* num_tc_levels=2, num_unique_tcs=4 */
|
||||||
|
/* max_itr_entry=64, max_dtr_entry=64 */
|
||||||
|
/* hash_tag_id=2, max_pkr=15 */
|
||||||
|
/* key_size=24, phys_add_size=50, vw=1 */
|
||||||
|
movl r10=0x183C /* rid_size=24, impl_va_msb=60 */
|
||||||
|
;;
|
||||||
|
1: cmp.eq p6,p7=PAL_MEM_ATTRIB,r28
|
||||||
|
(p7) br.cond.sptk.few 1f
|
||||||
|
mov r8=0 /* status = 0 */
|
||||||
|
mov r9=0x80|0x01 /* NatPage|WB */
|
||||||
|
;;
|
||||||
1: br.cond.sptk.few rp
|
1: br.cond.sptk.few rp
|
||||||
stacked:
|
stacked:
|
||||||
br.ret.sptk.few rp
|
br.ret.sptk.few rp
|
||||||
|
|
Loading…
Reference in a new issue