summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn van Groningen2006-12-06 12:30:56 +0000
committerJohn van Groningen2006-12-06 12:30:56 +0000
commit4df6f37a27c4eec64a8337e2237e738bd2ba63b4 (patch)
tree444e1ca805b499309d384af3d782c23550707005
parentfix DtoAC for records (diff)
add tstmbit_ macro
-rw-r--r--macho/pstartup.a15
-rw-r--r--pstartup.a9
2 files changed, 24 insertions, 0 deletions
diff --git a/macho/pstartup.a b/macho/pstartup.a
index 319891e..7512861 100644
--- a/macho/pstartup.a
+++ b/macho/pstartup.a
@@ -74,6 +74,21 @@ LINUX = 0
; rlwnm. &bit,&byte,&bit_n_in_byte,24,24
; .endmacro
+ .macro tstmbit_
+ rlwinm $2,$1,32-$5-3,3+$5,31
+ lbzx $4,$0,$2
+ rlwinm $1,$1,32-$5,29,31
+ rlwnm. $3,$4,$1,24,24
+ .endmacro
+
+; same as tstmbit, but modifies bit_n register
+; &vector 0,&bit_n 1,&byte_offset 2,&bit 3,&byte 4,&shift 5
+; rlwinm &byte_offset,&bit_n,32-&shift-3,3+&shift,31
+; lbzx &byte,&vector,&byte_offset
+; rlwinm &bit_n,&bit_n,32-&shift,29,31
+; rlwnm. &bit,&byte,&bit_n,24,24
+; endm
+
.macro clrmbit
rlwinm $2,$1,32-$6-3,3+$6,31
lbzx $4,$0,$2
diff --git a/pstartup.a b/pstartup.a
index bd24ab4..7ff007c 100644
--- a/pstartup.a
+++ b/pstartup.a
@@ -24,6 +24,15 @@
endm
macro
+; same as tstmbit, but modifies bit_n register
+ tstmbit_ &vector,&bit_n,&byte_offset,&bit,&byte,&shift
+ rlwinm &byte_offset,&bit_n,32-&shift-3,3+&shift,31
+ lbzx &byte,&vector,&byte_offset
+ rlwinm &bit_n,&bit_n,32-&shift,29,31
+ rlwnm. &bit,&byte,&bit_n,24,24
+ endm
+
+ macro
clrmbit &vector,&bit_n,&byte_offset,&bit,&byte,&scratch,&shift
rlwinm &byte_offset,&bit_n,32-&shift-3,3+&shift,31
lbzx &byte,&vector,&byte_offset