diff --git a/pd/doc/5.reference/pdinfo-help.pd b/pd/doc/5.reference/pdinfo-help.pd
index 3cc5c2d3f79cf7146b5d93747fca7dc4126a74bb..e87e1994f2814900156a9f5862e512191e6beeab 100644
--- a/pd/doc/5.reference/pdinfo-help.pd
+++ b/pd/doc/5.reference/pdinfo-help.pd
@@ -1,4 +1,4 @@
-#N canvas 248 25 555 619 10;
+#N canvas 257 29 555 619 10;
 #X obj 0 595 cnv 15 552 21 empty \$0-pddp.cnv.footer empty 20 12 0
 14 -228856 -66577 0;
 #X obj 0 0 cnv 15 552 40 empty \$0-pddp.cnv.header pdinfo 3 12 0 18
@@ -46,19 +46,19 @@ version;
 #X obj 4 597 pddp/pddplink all_about_help_patches.pd -text Usage Guide
 ;
 #X obj 503 7 pdinfo;
-#X obj 39 299 pdinfo;
-#X msg 39 60 print;
-#X msg 89 216 version;
-#X obj 39 330 print pd-version;
-#X text 143 215 version of Pd that's running (MAJOR MINOR TEST);
-#X msg 83 193 samplerate;
-#X text 157 192 global samplerate;
-#X msg 70 116 dir;
-#X text 99 115 directory of the Pd executable;
-#X msg 64 86 blocksize;
-#X text 136 85 global blocksize;
-#X msg 77 146 dsp-status;
-#X text 152 146 whether dsp is turned on (0 = off \, 1 = on);
+#X obj 39 307 pdinfo;
+#X msg 39 52 print;
+#X msg 105 234 version;
+#X obj 39 334 print pd-version;
+#X text 159 233 version of Pd that's running (MAJOR MINOR TEST);
+#X msg 100 211 samplerate;
+#X text 174 210 global samplerate;
+#X msg 70 120 dir;
+#X text 99 119 directory of the Pd executable;
+#X msg 64 97 blocksize;
+#X text 136 96 global blocksize;
+#X msg 77 143 dsp-status;
+#X text 152 143 whether dsp is turned on (0 = off \, 1 = on);
 #N canvas 100 44 428 514 audio-attributes 0;
 #X obj 1 1 cnv 15 425 20 empty \$0-pddp.cnv.subheading empty 3 12 0
 14 -204280 -1 0;
@@ -145,22 +145,26 @@ followed by a semicolon and the output for that method.;
 audio-device and midi-device message in subpatches.;
 #X text 169 459 - output varies depending on the message sent to [pdinfo]
 ;
-#X msg 101 268 classlist;
+#X msg 101 280 classlist;
 #X text 81 547 When using the "classlist" message \, note that some
 external Pd classes don't have a name. These are currently listed simply
 as "anonymous-class" in the output.;
-#X text 175 267 (long) list of all class names that have been loaded
+#X text 170 278 (long) list of all class names that have been loaded
 in the running instance of Pd. (Note: not all classes can be created
 in an object box.);
-#X msg 92 242 canvaslist;
-#X text 166 241 list of pointers to toplevel canvases in running Pd
+#X msg 98 257 canvaslist;
+#X text 172 256 list of pointers to toplevel canvases in running Pd
 instance;
-#X text 80 59 print all attributes directly to the console;
+#X text 80 51 print all attributes directly to the console;
 #X text 11 20 get info from the Pd instance that is running your patch
 ;
 #X text 155 320 Audio and MIDI specific messages:;
-#X msg 83 169 libdir;
-#X text 132 168 directory where extra/ and doc/ are found;
+#X msg 83 166 libdir;
+#X text 132 165 directory where extra/ and doc/ are found;
+#X msg 54 75 arch;
+#X text 88 74 machine architecture: ia32 \, x64 \, or arm;
+#X msg 93 189 platform;
+#X text 152 188 linux \, freebsd \, darwin \, or win32;
 #X connect 12 0 15 0;
 #X connect 13 0 12 0;
 #X connect 14 0 12 0;
@@ -171,3 +175,5 @@ instance;
 #X connect 33 0 12 0;
 #X connect 36 0 12 0;
 #X connect 41 0 12 0;
+#X connect 43 0 12 0;
+#X connect 45 0 12 0;
diff --git a/pd/src/x_interface.c b/pd/src/x_interface.c
index bbff948b9fced6b2354c5a171e0d10894e410d3b..b35b7ec801679640f8f9418dba2af871571925c2 100644
--- a/pd/src/x_interface.c
+++ b/pd/src/x_interface.c
@@ -863,6 +863,23 @@ void pdinfo_platform(t_pdinfo *x, t_symbol *s, int argc, t_atom *argv)
     info_out((t_text *)x, s, 1, at);
 }
 
+void pdinfo_arch(t_pdinfo *x, t_symbol *s, int argc, t_atom *argv)
+{
+    t_atom at[1];
+    t_symbol *a = gensym("unknown");
+#ifdef __i386__
+    a = gensym("ia32");
+#endif
+#ifdef __x86_64__
+    a = gensym("x64");
+#endif
+#ifdef __arm__
+    a = gensym("arm");
+#endif
+    SETSYMBOL(at, a);
+    info_out((t_text *)x, s, 1, at);
+}
+
 void pdinfo_version(t_pdinfo *x, t_symbol *s, int argc, t_atom *argv)
 {
     int major=0, minor=0, bugfix=0;
@@ -902,6 +919,8 @@ void pdinfo_setup(void)
         sizeof(t_pdinfo),
         CLASS_DEFAULT, 0);
 
+    class_addmethod(pdinfo_class, (t_method)pdinfo_arch,
+        gensym("arch"), A_GIMME, 0);
     class_addmethod(pdinfo_class, (t_method)pdinfo_audio_api,
         gensym("audio-api"), A_DEFFLOAT, 0);
     class_addmethod(pdinfo_class, (t_method)pdinfo_audio_apilist,