- la $sp,0($s0) # alloca
- stg $fp,0($s0) # back-chain
-
- # calculate resultant buffer size
- la $s0,16($s0) # buffer starts at offset of 16
- slgr $fp,$s0
- srlg $fp,$fp,4 # $fp is buffer length in blocks, minimum 16
+ slgr $fp,$s0 # total buffer size
+ lgr $s2,$sp
+ lghi $s1,1024+16 # sl[g]fi is extended-immediate facility
+ slgr $fp,$s1 # deduct reservation to get usable buffer size
+ # buffer size is at lest 256 and at most 3072+256-16
+
+ la $sp,1024($s0) # alloca
+ srlg $fp,$fp,4 # convert bytes to blocks, minimum 16
+ stg $s2,0($sp) # back-chain