diff --git a/cbits/cycles.c b/cbits/cycles.c
--- a/cbits/cycles.c
+++ b/cbits/cycles.c
@@ -18,6 +18,19 @@
   return ret;
 }
 
+#elif powerpc64le_HOST_ARCH || powerpc64_HOST_ARCH
+
+StgWord64 criterion_rdtsc(void)
+{
+  // Read the PowerPC Time Base: a monotonically-increasing 64-bit counter
+  // that is the architectural analogue of x86's TSC. SPR 268 returns the
+  // full 64-bit Time Base on 64-bit PowerPC (this is what the deprecated
+  // `mftb` mnemonic expanded to).
+  StgWord64 ret;
+  __asm__ __volatile__ ("mfspr %0, 268" : "=r"(ret));
+  return ret;
+}
+
 #elif x86_64_HOST_ARCH || i386_HOST_ARCH
 
 StgWord64 criterion_rdtsc(void)
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+0.2.5.0
+
+* Support building on PowerPC.
+
 0.2.4.0
 
 * Support building with `wasm32-wasi`.
diff --git a/criterion-measurement.cabal b/criterion-measurement.cabal
--- a/criterion-measurement.cabal
+++ b/criterion-measurement.cabal
@@ -1,5 +1,5 @@
 name:                criterion-measurement
-version:             0.2.4.0
+version:             0.2.5.0
 synopsis:            Criterion measurement functionality and associated types
 description:         Measurement-related functionality extracted from Criterion, with minimal dependencies. The rationale for this is to enable alternative analysis front-ends.
 homepage:            https://github.com/haskell/criterion
@@ -37,7 +37,7 @@
   exposed-modules:     Criterion.Measurement
                        Criterion.Measurement.Types
                        Criterion.Measurement.Types.Internal
-  build-depends:       aeson >= 2 && < 2.3
+  build-depends:       aeson >= 2 && < 2.4
                      , base >= 4.9 && < 5
                      , base-compat >= 0.9
                      , binary >= 0.8.3.0
diff --git a/src/Criterion/Measurement/Types.hs b/src/Criterion/Measurement/Types.hs
--- a/src/Criterion/Measurement/Types.hs
+++ b/src/Criterion/Measurement/Types.hs
@@ -503,7 +503,7 @@
 -- The environment is evaluated to normal form before the benchmark is run.
 --
 -- When using 'whnf', 'whnfIO', etc. Criterion creates a 'Benchmarkable'
--- whichs runs a batch of @N@ repeat runs of that expressions. Criterion may
+-- which runs a batch of @N@ repeat runs of that expressions. Criterion may
 -- run any number of these batches to get accurate measurements. Environments
 -- created by 'env' and 'envWithCleanup', are shared across all these batches
 -- of runs.
diff --git a/src/Criterion/Measurement/Types/Internal.hs b/src/Criterion/Measurement/Types/Internal.hs
--- a/src/Criterion/Measurement/Types/Internal.hs
+++ b/src/Criterion/Measurement/Types/Internal.hs
@@ -32,7 +32,7 @@
 -- from environments when no concrete environment is available.
 fakeEnvironment :: env
 fakeEnvironment = error $ unlines
-  [ "Criterion atttempted to retrieve a non-existent environment!"
+  [ "Criterion attempted to retrieve a non-existent environment!"
   , "\tPerhaps you forgot to use lazy pattern matching in a function which"
   , "\tconstructs benchmarks from an environment?"
   , "\t(see the documentation for `env` for details)"
