loader: make it clearer what is being set in program interrupt psw

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
1 files changed, 8 insertions(+), 3 deletions(-)

M loader/loader/loader_c.c
M loader/loader/loader_c.c +8 -3
@@ 41,6 41,12 @@ static struct psw io_psw_template = {
 	.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 inline void die(void)
  */
 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(