diff --git a/lisp/hppa-assem.S b/lisp/hppa-assem.S index 118379a2b2d0ff51df0af9f9d3ec75be8c8a12c0..3374f1246a94ff0fac3c104359630583e1fbc5dc 100644 --- a/lisp/hppa-assem.S +++ b/lisp/hppa-assem.S @@ -216,6 +216,37 @@ call_into_c copy reg_OCFP, reg_CFP + +/* + * Stuff to sanctify a block of memory for execution. + */ + + .EXPORT sanctify_for_execution +sanctify_for_execution + .proc + .callinfo + .enter + /* arg0=start addr, arg1=length in bytes */ + add arg0,arg1,arg1 + ldo 32(arg1),arg1 + depi 0,31,5,arg0 + depi 0,31,5,arg1 + ldsid (arg0),t1 + mtsp t1,sr1 + ldi 32,t1 ; bytes per cache line +sanctify_loop + fdc 0(sr1,arg0) + fic,m t1(sr1,arg0) + fdc 0(sr1,arg0) + fic,m t1(sr1,arg0) + fdc 0(sr1,arg0) + fic,m t1(sr1,arg0) + fdc 0(sr1,arg0) + comb,< arg0,arg1,sanctify_loop + fic,m t1(sr1,arg0) + .leave + .procend + /* * Trampolines. diff --git a/lisp/hppa-assem.s b/lisp/hppa-assem.s index 118379a2b2d0ff51df0af9f9d3ec75be8c8a12c0..3374f1246a94ff0fac3c104359630583e1fbc5dc 100644 --- a/lisp/hppa-assem.s +++ b/lisp/hppa-assem.s @@ -216,6 +216,37 @@ call_into_c copy reg_OCFP, reg_CFP + +/* + * Stuff to sanctify a block of memory for execution. + */ + + .EXPORT sanctify_for_execution +sanctify_for_execution + .proc + .callinfo + .enter + /* arg0=start addr, arg1=length in bytes */ + add arg0,arg1,arg1 + ldo 32(arg1),arg1 + depi 0,31,5,arg0 + depi 0,31,5,arg1 + ldsid (arg0),t1 + mtsp t1,sr1 + ldi 32,t1 ; bytes per cache line +sanctify_loop + fdc 0(sr1,arg0) + fic,m t1(sr1,arg0) + fdc 0(sr1,arg0) + fic,m t1(sr1,arg0) + fdc 0(sr1,arg0) + fic,m t1(sr1,arg0) + fdc 0(sr1,arg0) + comb,< arg0,arg1,sanctify_loop + fic,m t1(sr1,arg0) + .leave + .procend + /* * Trampolines.