diff --git a/tests/periph_gpio/main.c b/tests/periph_gpio/main.c
index 8e9e13a23997bc08d91b42446ecb1e1d40536d77..f882c609b7fc935d085cd0a0923bc280e32bdd60 100644
--- a/tests/periph_gpio/main.c
+++ b/tests/periph_gpio/main.c
@@ -151,6 +151,41 @@ static int init_int(int argc, char **argv)
 
     return 0;
 }
+
+static int enable_int(int argc, char **argv)
+{
+    int po, pi;
+    int status;
+
+    if (argc < 4) {
+        printf("usage: %s <port> <pin> <status>\n", argv[0]);
+        puts("\tstatus:\n"
+             "\t0: disable\n"
+             "\t1: enable\n");
+        return 1;
+    }
+
+    po = atoi(argv[1]);
+    pi = atoi(argv[2]);
+
+    status = atoi(argv[3]);
+
+    switch (status) {
+        case 0:
+            puts("disabling GPIO interrupt");
+            gpio_irq_disable(GPIO_PIN(po, pi));
+            break;
+        case 1:
+            puts("enabling GPIO interrupt");
+            gpio_irq_enable(GPIO_PIN(po, pi));
+            break;
+        default:
+            puts("error: invalid status");
+            return 1;
+    }
+
+    return 0;
+}
 #endif
 
 static int read(int argc, char **argv)
@@ -244,6 +279,7 @@ static const shell_command_t shell_commands[] = {
     { "init_od_pu", "init as output (open-drain with pull-up)", init_od_pu },
 #ifdef MODULE_PERIPH_GPIO_IRQ
     { "init_int", "init as external INT w/o pull resistor", init_int },
+    { "enable_int", "enable or disable gpio interrupt", enable_int },
 #endif
     { "read", "read pin status", read },
     { "set", "set pin to HIGH", set },