From dc5d161800f0bfb7a8846474c361a6fe7b95ec32 Mon Sep 17 00:00:00 2001 From: Aote Jin Date: Thu, 19 Sep 2024 11:07:11 +0800 Subject: [PATCH] - Remove the unnecessary articles --- chapter2.adoc | 6 +++--- external-debug-security.pdf | Bin 223131 -> 223143 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/chapter2.adoc b/chapter2.adoc index ebf4e25..aa49488 100644 --- a/chapter2.adoc +++ b/chapter2.adoc @@ -148,10 +148,10 @@ The `sdcsr` and `sdpc` registers provide supervisor read/write access to the `dc | 0xaaa | sdpc | Supervisor debug program counter. |============================================================================================ -The `sdcsr` register exposes a subset of the `dcsr`, formatted as shown in <>, while the `sdpc` provides full access to the `dpc`. +The `sdcsr` register exposes a subset of `dcsr`, formatted as shown in <>, while the `sdpc` register provides full access to `dpc`. [NOTE] -Unlike the `dcsr` and `dpc`, the scratch registers do not have supervisor access, and external debuggers with S-mode privilege cannot not use them as scratch memory. +Unlike `dcsr` and `dpc`, the scratch registers do not have supervisor access, and external debuggers with S-mode privilege cannot not use them as scratch memory. [caption="Register {counter:rimage}: ", reftext="Register {rimage}"] [title="Supervisor debug control and status register (sdcsr) for RV32"] @@ -183,7 +183,7 @@ Unlike the `dcsr` and `dpc`, the scratch registers do not have supervisor access .... [NOTE] -The `nmip`, `mprven`, `stoptime`, `stopcount`, `ebreakm` and `cetrig` fields in the `dcsr` are configurable only by M-mode, masked from the `sdcsr` while the `prv` field is constrained to 1 bit. +The `nmip`, `mprven`, `stoptime`, `stopcount`, `ebreakm` and `cetrig` fields in `dcsr` are configurable only by M-mode, masked from `sdcsr` while the `prv` field is constrained to 1 bit. [caption="Register {counter:rimage}: ", reftext="Register {rimage}"] [title="Supervisor debug program counter (sdpc)"] diff --git a/external-debug-security.pdf b/external-debug-security.pdf index af842b8f98e20a7aedd31f6c702194a11186cfa9..07bed712fb20f4299e76d6cf93fdd606eeb68cdc 100644 GIT binary patch delta 10106 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�=@#jEXb&blVHryJyzh>93)M^%&8Yr*X4xRY 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