# HG changeset patch # User Josef 'Jeff' Sipek # Date 1565108092 14400 # Tue Aug 06 12:14:52 2019 -0400 # Node ID 9ef53b94bd0a9b01b52673d513fd007eebe2c28c # Parent bfc8713c7088f9d798c6068a6bc562053faf4d41 loader: make it clearer what is being set in program interrupt psw Signed-off-by: Josef 'Jeff' Sipek diff --git a/loader/loader/loader_c.c b/loader/loader/loader_c.c --- a/loader/loader/loader_c.c +++ b/loader/loader/loader_c.c @@ -41,6 +41,12 @@ .ptr = (uintptr_t) &IOHANDLER, }; +static struct psw pgm_psw_template = { + .ea = 1, + .ba = 1, + .ptr = (uintptr_t) &PGMHANDLER, +}; + static u8 *buf = (u8*) (16 * 1024); static u32 *ptrbuf = (u32*) (20 * 1024); @@ -69,15 +75,14 @@ */ static u64 sense_memsize(void) { - volatile u64 *pgm_psw = (void *) 0x1d0; + volatile struct psw *pgm_psw = (void *) 0x1d0; u64 size; int cc; #define SKIP_SIZE (1024*1024ULL) /* set new PGM psw */ - pgm_psw[0] = 0x0000000180000000ULL; - pgm_psw[1] = (u64) &PGMHANDLER; + *pgm_psw = pgm_psw_template; for(size = 0; size < ((u64)~SKIP_SIZE)-1; size += SKIP_SIZE) { asm volatile(