diff --git a/ghcup b/ghcup
index 9652d6a8f9af910d61d6effde1900d7684b150bf..ef7e3e6ff92fd93a8b05a699a9101534166c9629 100755
--- a/ghcup
+++ b/ghcup
@@ -649,9 +649,9 @@ get_distro_ver() {
             printf "%s" "$(uname -v)"
             ;;
         FreeBSD)
-            # we only care about the numeric version part left of
-            # the '-' in "11.2-RELEASE".
-            printf "%s" "$(uname -r | cut -d - -f 1)"
+            # we only care about the major numeric version part left of
+            # the '.' in "11.2-RELEASE".
+            printf "%s" "$(uname -r | cut -d . -f 1)"
             ;;
         *)
             # Fall back to uname, e.g. "Linux <version>", also works for BSD, etc.