Index: wp-admin/includes/template.php
===================================================================
--- wp-admin/includes/template.php	(revision 15675)
+++ wp-admin/includes/template.php	(working copy)
@@ -859,15 +859,18 @@
  * @param string $id String for use in the 'id' attribute of tags.
  * @param string $title Title of the meta box.
  * @param string $callback Function that fills the box with the desired content. The function should echo its output.
- * @param string $page The type of edit page on which to show the box (post, page, link).
+ * @param string|array $pages The type of edit page(s) on which to show the box ('post', 'page', 'link', and/or other custom post types).
  * @param string $context The context within the page where the boxes should show ('normal', 'advanced').
  * @param string $priority The priority within the context where the boxes should show ('high', 'low').
  */
-function add_meta_box($id, $title, $callback, $page, $context = 'advanced', $priority = 'default', $callback_args=null) {
+function add_meta_box($id, $title, $callback, $pages, $context = 'advanced', $priority = 'default', $callback_args=null) {
 	global $wp_meta_boxes;
 
 	if ( !isset($wp_meta_boxes) )
 		$wp_meta_boxes = array();
+
+	foreach( (array) $pages as $page ) :
+
 	if ( !isset($wp_meta_boxes[$page]) )
 		$wp_meta_boxes[$page] = array();
 	if ( !isset($wp_meta_boxes[$page][$context]) )
@@ -912,6 +915,8 @@
 		$wp_meta_boxes[$page][$context][$priority] = array();
 
 	$wp_meta_boxes[$page][$context][$priority][$id] = array('id' => $id, 'title' => $title, 'callback' => $callback, 'args' => $callback_args);
+
+	endforeach;
 }
 
 /**
