Index: wp-includes/link-template.php
===================================================================
--- wp-includes/link-template.php	(revision 14301)
+++ wp-includes/link-template.php	(working copy)
@@ -568,31 +568,60 @@
  * @return string Link to the feed for the category specified by $cat_id.
 */
 function get_category_feed_link($cat_id, $feed = '') {
-	$cat_id = (int) $cat_id;
+	return get_term_feed_link($cat_id, 'category', $feed);
+}
 
-	$category = get_category($cat_id);
+/**
+ * Retrieve the feed link for a taxonomy.
+ *
+ * Returns a link to the feed for all post in a given term. A specific feed
+ * can be requested or left blank to get the default feed.
+ *
+ * @since 3.0
+ *
+ * @param int $term_id ID of a category.
+ * @param string $taxonomy Optional. Taxonomy of $term_id
+ * @param string $feed Optional. Feed type.
+ * @return string Link to the feed for the taxonomy specified by $term_id and $taxonomy.
+*/
+function get_term_feed_link( $term_id, $taxonomy='category', $feed = '' ) {
+	global $wp_rewrite;
+	
+	$term_id = ( int ) $term_id;
 
-	if ( empty($category) || is_wp_error($category) )
+	$term = get_term( $term_id, $taxonomy  );
+	
+	if ( empty( $term ) || is_wp_error( $term ) )
 		return false;
 
-	if ( empty($feed) )
+	if ( empty( $feed ) )
 		$feed = get_default_feed();
 
-	$permalink_structure = get_option('permalink_structure');
+	$permalink_structure = get_option( 'permalink_structure' );
 
 	if ( '' == $permalink_structure ) {
-		$link = home_url("?feed=$feed&amp;cat=" . $cat_id);
+		$link = home_url();
+		if ( 'category' == $taxonomy ) {
+			$link = add_query_arg( array( 'feed' => $feed, 'cat' => $term_id ), $link );
+		} else {
+			$t = get_taxonomy( $taxonomy );
+			$link = add_query_arg( array( 'feed' => $feed, $t->query_var => $term->slug ), $link );
+		}
 	} else {
-		$link = get_category_link($cat_id);
-		if( $feed == get_default_feed() )
+		$link = get_term_link( $term_id, $term->taxonomy );
+		if ( $feed == get_default_feed() )
 			$feed_link = 'feed';
 		else
 			$feed_link = "feed/$feed";
 
-		$link = trailingslashit($link) . user_trailingslashit($feed_link, 'feed');
+		$link = trailingslashit( $link ) . user_trailingslashit( $feed_link, 'feed' );
 	}
 
-	$link = apply_filters('category_feed_link', $link, $feed);
+	if ( 'category' == $taxonomy )
+		$link = apply_filters( 'category_feed_link', $link, $feed );
+	else
+		$link = apply_filters( 'taxonomy_feed_link', $link, $feed, $taxonomy );
+	
 
 	return $link;
 }
Index: wp-includes/classes.php
===================================================================
--- wp-includes/classes.php	(revision 14301)
+++ wp-includes/classes.php	(working copy)
@@ -1356,7 +1356,7 @@
 			if ( empty($feed_image) )
 				$link .= '(';
 
-			$link .= '<a href="' . get_category_feed_link($category->term_id, $feed_type) . '"';
+			$link .= '<a href="' . get_term_feed_link( $category->term_id, $category->taxonomy, $feed_type ) . '"';
 
 			if ( empty($feed) )
 				$alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';
