diff --git a/py/objlist.c b/py/objlist.c
index 9d8caee33981eb29e4029b6a0bc7b647e60a8a2c..ce55aa51003f6b72098da3a724f7480cd63723db 100644
--- a/py/objlist.c
+++ b/py/objlist.c
@@ -81,6 +81,21 @@ static mp_obj_t list_binary_op(int op, mp_obj_t lhs, mp_obj_t rhs) {
             memcpy(s->items + o->len, p->items, sizeof(mp_obj_t) * p->len);
             return s;
         }
+        case RT_BINARY_OP_MULTIPLY:
+        {
+            if (!MP_OBJ_IS_SMALL_INT(rhs)) {
+                return NULL;
+            }
+            int n = MP_OBJ_SMALL_INT_VALUE(rhs);
+            int len = o->len;
+            mp_obj_list_t *s = list_new(len * n);
+            mp_obj_t *dest = s->items;
+            for (int i = 0; i < n; i++) {
+                memcpy(dest, o->items, sizeof(mp_obj_t) * len);
+                dest += len;
+            }
+            return s;
+        }
         default:
             // op not supported
             return NULL;
diff --git a/tests/basics/tests/list_mult.py b/tests/basics/tests/list_mult.py
new file mode 100644
index 0000000000000000000000000000000000000000..ec65fbb3f49154a59e19a45a2b557aa03f77b2a5
--- /dev/null
+++ b/tests/basics/tests/list_mult.py
@@ -0,0 +1,4 @@
+print([0] * 5)
+a = [1, 2, 3]
+c = a * 3
+print(c)