From 9692d822dbd045415361fd3564612fe98b837b9c Mon Sep 17 00:00:00 2001 From: Henri F Date: Thu, 20 Jun 2024 07:00:03 -0700 Subject: [PATCH] ja: cr2 Bare Metal translation (#1907) Professional translations for CR2 content. Changes are being staged in a separate branch until all Japanese content is reviewed. #1463 #652 --------- Co-authored-by: Hidenori Kobayashi --- po/ja.po | 1086 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 887 insertions(+), 199 deletions(-) diff --git a/po/ja.po b/po/ja.po index 0891294a..4f700270 100644 --- a/po/ja.po +++ b/po/ja.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Comprehensive Rust 🦀\n" -"POT-Creation-Date: 2024-01-24T13:24:49+01:00\n" +"POT-Creation-Date: 2024-01-30T13:24:49+01:00\n" "PO-Revision-Date: 2023-06-06 13:18+0900\n" "Last-Translator: Kenta Aratani \n" "Language-Team: Japanese \n" @@ -16349,95 +16349,95 @@ msgstr "MacOSの場合は以下のようになります:" #: src/bare-metal/no_std.md msgid "`core`" -msgstr "" +msgstr "`core`" #: src/bare-metal/no_std.md msgid "`std`" -msgstr "" +msgstr "`std`" #: src/bare-metal/no_std.md msgid "Slices, `&str`, `CStr`" -msgstr "" +msgstr "Slice、`&str`、`CStr`" #: src/bare-metal/no_std.md msgid "`NonZeroU8`..." -msgstr "" +msgstr "`NonZeroU8` など" #: src/bare-metal/no_std.md msgid "`Option`, `Result`" -msgstr "" +msgstr "`Option`、`Result`" #: src/bare-metal/no_std.md msgid "`Display`, `Debug`, `write!`..." -msgstr "" +msgstr "`Display`、`Debug`、`write!` など" #: src/bare-metal/no_std.md msgid "`panic!`, `assert_eq!`..." -msgstr "" +msgstr "`panic!`、`assert_eq!` など" #: src/bare-metal/no_std.md msgid "`NonNull` and all the usual pointer-related functions" -msgstr "" +msgstr "`NonNull` とポインターに関する全ての一般的な関数" #: src/bare-metal/no_std.md msgid "`Future` and `async`/`await`" -msgstr "" +msgstr "`Future` と `async` / `await`" #: src/bare-metal/no_std.md msgid "`fence`, `AtomicBool`, `AtomicPtr`, `AtomicU32`..." -msgstr "" +msgstr "`fence`、`AtomicBool`、`AtomicPtr`、`AtomicU32` など" #: src/bare-metal/no_std.md msgid "`Duration`" -msgstr "" +msgstr "`Duration`" #: src/bare-metal/no_std.md msgid "`Box`, `Cow`, `Arc`, `Rc`" -msgstr "" +msgstr "`Box`、`Cow`、`Arc`、`Rc`" #: src/bare-metal/no_std.md msgid "`Vec`, `BinaryHeap`, `BtreeMap`, `LinkedList`, `VecDeque`" -msgstr "" +msgstr "`Vec`、`BinaryHeap`、`BtreeMap`、`LinkedList`、`VecDeque`" #: src/bare-metal/no_std.md msgid "`String`, `CString`, `format!`" -msgstr "" +msgstr "`String`、`CString`、`format!`" #: src/bare-metal/no_std.md msgid "`Error`" -msgstr "" +msgstr "`Error`" #: src/bare-metal/no_std.md msgid "`Mutex`, `Condvar`, `Barrier`, `Once`, `RwLock`, `mpsc`" -msgstr "" +msgstr "`Mutex`、`Condvar`、`Barrier`、`Once`、`RwLock`、`mpsc`" #: src/bare-metal/no_std.md msgid "`File` and the rest of `fs`" -msgstr "" +msgstr "`File`、残りの `fs`" #: src/bare-metal/no_std.md msgid "`println!`, `Read`, `Write`, `Stdin`, `Stdout` and the rest of `io`" -msgstr "" +msgstr "`println!`、`Read`、`Write`、`Stdin`、`Stdout`、残りの `io`" #: src/bare-metal/no_std.md msgid "`Path`, `OsString`" -msgstr "" +msgstr "`Path`、`OsString`" #: src/bare-metal/no_std.md msgid "`net`" -msgstr "" +msgstr "`net`" #: src/bare-metal/no_std.md msgid "`Command`, `Child`, `ExitCode`" -msgstr "" +msgstr "`Command`、`Child`、`ExitCode`" #: src/bare-metal/no_std.md msgid "`spawn`, `sleep` and the rest of `thread`" -msgstr "" +msgstr "`spawn`、`sleep`、残りの `thread`" #: src/bare-metal/no_std.md msgid "`SystemTime`, `Instant`" -msgstr "" +msgstr "`SystemTime`、`Instant`" #: src/bare-metal/no_std.md msgid "`HashMap` depends on RNG." @@ -16497,18 +16497,21 @@ msgstr "" msgid "" "// Safe because `HEAP` is only used here and `entry` is only called once.\n" msgstr "" +"// `HEAP` はここでのみ使用され、`entry` は一度だけ呼び出されるため、安全で" +"す。\n" #: src/bare-metal/alloc.md msgid "// Give the allocator some memory to allocate.\n" -msgstr "" +msgstr "// アロケーターにメモリを割り当てます。\n" #: src/bare-metal/alloc.md msgid "// Now we can do things that require heap allocation.\n" msgstr "" +"// これで、ヒープ割り当てを必要とする処理を実行できるようになりました。\n" #: src/bare-metal/alloc.md msgid "\"A string\"" -msgstr "" +msgstr "\"A string\"" #: src/bare-metal/alloc.md msgid "" @@ -16590,33 +16593,36 @@ msgstr "" #: src/bare-metal/microcontrollers/mmio.md msgid "/// GPIO port 0 peripheral address\n" -msgstr "" +msgstr "/// GPIO 0 番ポートの周辺アドレス\n" #: src/bare-metal/microcontrollers/mmio.md msgid "// GPIO peripheral offsets\n" -msgstr "" +msgstr "// GPIO 周辺機器オフセット\n" #: src/bare-metal/microcontrollers/mmio.md msgid "// PIN_CNF fields\n" -msgstr "" +msgstr "// PIN_CNF フィールド\n" #: src/bare-metal/microcontrollers/mmio.md #: src/bare-metal/microcontrollers/pacs.md #: src/bare-metal/microcontrollers/hals.md msgid "// Configure GPIO 0 pins 21 and 28 as push-pull outputs.\n" msgstr "" +"// GPIO 0 の 21 番ピンと 28 番ピンをプッシュプル出力として設定します。\n" #: src/bare-metal/microcontrollers/mmio.md msgid "" "// Safe because the pointers are to valid peripheral control registers, and\n" " // no aliases exist.\n" msgstr "" +"// ポインタは有効な周辺機器制御レジスタを指しており、\n" +" // エイリアスが存在しないため、安全です。\n" #: src/bare-metal/microcontrollers/mmio.md #: src/bare-metal/microcontrollers/pacs.md #: src/bare-metal/microcontrollers/hals.md msgid "// Set pin 28 low and pin 21 high to turn the LED on.\n" -msgstr "" +msgstr "// 28 番ピンをロー、21 番ピンをハイに設定して LED をオンにします。\n" #: src/bare-metal/microcontrollers/mmio.md msgid "" @@ -16703,7 +16709,7 @@ msgstr "" #: src/bare-metal/microcontrollers/hals.md msgid "// Create HAL wrapper for GPIO port 0.\n" -msgstr "" +msgstr "// GPIO 0 番ポートの HAL ラッパーを作成します。\n" #: src/bare-metal/microcontrollers/hals.md msgid "" @@ -16758,11 +16764,11 @@ msgstr "タイプステートパターン" #: src/bare-metal/microcontrollers/type-state.md msgid "// let gpio0_01_again = gpio0.p0_01; // Error, moved.\n" -msgstr "" +msgstr "// let gpio0_01_again = gpio0.p0_01; // エラー、移動済み。\n" #: src/bare-metal/microcontrollers/type-state.md msgid "// pin_input.is_high(); // Error, moved.\n" -msgstr "" +msgstr "// pin_input.is_high(); // エラー、移動済み。\n" #: src/bare-metal/microcontrollers/type-state.md msgid "" @@ -16817,27 +16823,27 @@ msgstr "" #: src/bare-metal/microcontrollers/embedded-hal.md msgid "GPIO" -msgstr "" +msgstr "GPIO" #: src/bare-metal/microcontrollers/embedded-hal.md msgid "ADC" -msgstr "" +msgstr "ADC" #: src/bare-metal/microcontrollers/embedded-hal.md msgid "I2C, SPI, UART, CAN" -msgstr "" +msgstr "I2C、SPI、UART、CAN" #: src/bare-metal/microcontrollers/embedded-hal.md msgid "RNG" -msgstr "" +msgstr "RNG" #: src/bare-metal/microcontrollers/embedded-hal.md msgid "Timers" -msgstr "" +msgstr "タイマー" #: src/bare-metal/microcontrollers/embedded-hal.md msgid "Watchdogs" -msgstr "" +msgstr "ウォッチドッグ" #: src/bare-metal/microcontrollers/embedded-hal.md msgid "" @@ -16956,7 +16962,7 @@ msgstr "" #: src/bare-metal/microcontrollers/debugging.md msgid "_Embed.toml_:" -msgstr "" +msgstr "_Embed.toml_:" #: src/bare-metal/microcontrollers/debugging.md msgid "In one terminal under `src/bare-metal/microcontrollers/examples/`:" @@ -16983,7 +16989,7 @@ msgstr "他のプロジェクト" #: src/bare-metal/microcontrollers/other-projects.md msgid "[RTIC](https://rtic.rs/)" -msgstr "" +msgstr "[RTIC](https://rtic.rs/)" #: src/bare-metal/microcontrollers/other-projects.md msgid "\"Real-Time Interrupt-driven Concurrency\"" @@ -16998,7 +17004,7 @@ msgstr "" #: src/bare-metal/microcontrollers/other-projects.md msgid "[Embassy](https://embassy.dev/)" -msgstr "" +msgstr "[Embassy](https://embassy.dev/)" #: src/bare-metal/microcontrollers/other-projects.md msgid "`async` executors with priorities, timers, networking, USB" @@ -17006,7 +17012,7 @@ msgstr "優先度付き`async` エグゼキュータ、タイマ、ネットワ #: src/bare-metal/microcontrollers/other-projects.md msgid "[TockOS](https://www.tockos.org/documentation/getting-started)" -msgstr "" +msgstr "[TockOS](https://www.tockos.org/documentation/getting-started)" #: src/bare-metal/microcontrollers/other-projects.md msgid "" @@ -17018,7 +17024,7 @@ msgstr "" #: src/bare-metal/microcontrollers/other-projects.md msgid "[Hubris](https://hubris.oxide.computer/)" -msgstr "" +msgstr "[Hubris](https://hubris.oxide.computer/)" #: src/bare-metal/microcontrollers/other-projects.md msgid "" @@ -17165,34 +17171,38 @@ msgstr "" #: src/exercises/bare-metal/compass.md src/exercises/bare-metal/rtc.md msgid "_src/main.rs_:" -msgstr "" +msgstr "_src/main.rs_:" #: src/exercises/bare-metal/compass.md #: src/exercises/bare-metal/solutions-morning.md msgid "// Configure serial port.\n" -msgstr "" +msgstr "// シリアルポートを設定します。\n" #: src/exercises/bare-metal/compass.md #: src/exercises/bare-metal/solutions-morning.md msgid "// Use the system timer as a delay provider.\n" -msgstr "" +msgstr "// システム タイマーを遅延目的で使用します。\n" #: src/exercises/bare-metal/compass.md msgid "" "// Set up the I2C controller and Inertial Measurement Unit.\n" " // TODO\n" msgstr "" +"// I2C コントローラと慣性測定ユニットをセットアップします。\n" +" // TODO\n" #: src/exercises/bare-metal/compass.md #: src/exercises/bare-metal/solutions-morning.md msgid "\"Ready.\"" -msgstr "" +msgstr "\"Ready.\"" #: src/exercises/bare-metal/compass.md msgid "" "// Read compass data and log it to the serial port.\n" " // TODO\n" msgstr "" +"// コンパスデータを読み取り、シリアルポートに記録します。\n" +" // TODO\n" #: src/exercises/bare-metal/compass.md src/exercises/bare-metal/rtc.md msgid "_Cargo.toml_ (you shouldn't need to change this):" @@ -17221,31 +17231,31 @@ msgstr "Ctrl+A Ctrl+Q でpicocomを終了します。" #: src/exercises/bare-metal/solutions-morning.md msgid "Bare Metal Rust Morning Exercise" -msgstr "" +msgstr "ベアメタル Rust の午前の演習" #: src/exercises/bare-metal/solutions-morning.md msgid "([back to exercise](compass.md))" -msgstr "" +msgstr "([演習に戻る](compass.md))" #: src/exercises/bare-metal/solutions-morning.md msgid "// Set up the I2C controller and Inertial Measurement Unit.\n" -msgstr "" +msgstr "// I2C コントローラと慣性測定ユニットをセットアップします。\n" #: src/exercises/bare-metal/solutions-morning.md msgid "\"Setting up IMU...\"" -msgstr "" +msgstr "\"Setting up IMU...\"" #: src/exercises/bare-metal/solutions-morning.md msgid "// Set up display and timer.\n" -msgstr "" +msgstr "// ディスプレイとタイマーをセットアップします。\n" #: src/exercises/bare-metal/solutions-morning.md msgid "// Read compass data and log it to the serial port.\n" -msgstr "" +msgstr "// コンパスデータを読み取り、シリアルポートに記録します。\n" #: src/exercises/bare-metal/solutions-morning.md msgid "\"{},{},{}\\t{},{},{}\"" -msgstr "" +msgstr "\"{},{},{}\\t{},{},{}\"" #: src/exercises/bare-metal/solutions-morning.md msgid "" @@ -17253,6 +17263,8 @@ msgid "" "LEDs\n" " // on.\n" msgstr "" +"// ボタン A が押された場合、次のモードに切り替えてすべての LED を短時間点滅\n" +" // させます。\n" #: src/bare-metal/aps.md msgid "Application processors" @@ -17370,6 +17382,77 @@ msgid "" " b 2b\n" "```" msgstr "" +"```armasm\n" +".section .init.entry, \"ax\"\n" +".global entry\n" +"entry:\n" +" /*\n" +" * メモリ管理に関するコンフィギュレーションを読み込んで適用し、MMU と" +"キャッシュを有効にする準備を\n" +" * します。\n" +" */\n" +" adrp x30, idmap\n" +" msr ttbr0_el1, x30\n" +"\n" +" mov_i x30, .Lmairval\n" +" msr mair_el1, x30\n" +"\n" +" mov_i x30, .Ltcrval\n" +" /* サポートされている PA 範囲を TCR_EL1.IPS にコピーします。*/\n" +" mrs x29, id_aa64mmfr0_el1\n" +" bfi x30, x29, #32, #4\n" +"\n" +" msr tcr_el1, x30\n" +"\n" +" mov_i x30, .Lsctlrval\n" +"\n" +" /*\n" +" * ここより前のすべての処理が完了していることを確認してから、\n" +" * 古くなった可能性のあるローカル TLB エントリを使用開始前に無効にしま" +"す。\n" +" */\n" +" isb\n" +" tlbi vmalle1\n" +" ic iallu\n" +" dsb nsh\n" +" isb\n" +"\n" +" /*\n" +" * MMU とキャッシュを有効にするように sctlr_el1 を設定し、\n" +" * これが完了するまでは先に進まないようにします。\n" +" */\n" +" msr sctlr_el1, x30\n" +" isb\n" +"\n" +" /* EL1 の浮動小数点アクセスのトラップを無効にします。*/\n" +" mrs x30, cpacr_el1\n" +" orr x30, x30, #(0x3 << 20)\n" +" msr cpacr_el1, x30\n" +" isb\n" +"\n" +" /* bss セクションをゼロにします。*/\n" +" adr_l x29, bss_begin\n" +" adr_l x30, bss_end\n" +"0: cmp x29, x30\n" +" b.hs 1f\n" +" stp xzr, xzr, [x29], #16\n" +" b 0b\n" +"\n" +"1: /* スタックを準備します。*/\n" +" adr_l x30, boot_stack_end\n" +" mov sp, x30\n" +"\n" +" /* 例外ベクターを設定します。*/\n" +" adr x30, vector_table_el1\n" +" msr vbar_el1, x30\n" +"\n" +" /* Rust コードを呼び出します。*/\n" +" bl main\n" +"\n" +" /* 割り込みを待機して永久にループします。*/\n" +"2: wfi\n" +" b 2b\n" +"```" #: src/bare-metal/aps/entry-point.md msgid "" @@ -17487,42 +17570,44 @@ msgid "" "// Safe because this only uses the declared registers and doesn't do\n" " // anything with memory.\n" msgstr "" +"// 宣言されたレジスタのみを使用し、メモリについては\n" +" // 何もしないため、安全です。\n" #: src/bare-metal/aps/inline-assembly.md msgid "\"hvc #0\"" -msgstr "" +msgstr "\"hvc #0\"" #: src/bare-metal/aps/inline-assembly.md msgid "\"w0\"" -msgstr "" +msgstr "\"w0\"" #: src/bare-metal/aps/inline-assembly.md msgid "\"w1\"" -msgstr "" +msgstr "\"w1\"" #: src/bare-metal/aps/inline-assembly.md msgid "\"w2\"" -msgstr "" +msgstr "\"w2\"" #: src/bare-metal/aps/inline-assembly.md msgid "\"w3\"" -msgstr "" +msgstr "\"w3\"" #: src/bare-metal/aps/inline-assembly.md msgid "\"w4\"" -msgstr "" +msgstr "\"w4\"" #: src/bare-metal/aps/inline-assembly.md msgid "\"w5\"" -msgstr "" +msgstr "\"w5\"" #: src/bare-metal/aps/inline-assembly.md msgid "\"w6\"" -msgstr "" +msgstr "\"w6\"" #: src/bare-metal/aps/inline-assembly.md msgid "\"w7\"" -msgstr "" +msgstr "\"w7\"" #: src/bare-metal/aps/inline-assembly.md msgid "" @@ -17657,7 +17742,7 @@ msgstr "" #: src/bare-metal/aps/uart.md msgid "/// Minimal driver for a PL011 UART.\n" -msgstr "" +msgstr "/// PL011 UARTの最小ドライバ。\n" #: src/bare-metal/aps/uart.md src/bare-metal/aps/better-uart/driver.md msgid "" @@ -17672,32 +17757,44 @@ msgid "" "process\n" " /// as device memory and not have any other aliases.\n" msgstr "" +"/// 指定されたベースアドレスに存在する\n" +" /// PL011 デバイス用の UART ドライバの新しいインスタンスを作成します。\n" +" ///\n" +" /// # 安全性\n" +" ///\n" +" /// 指定されたベースアドレスは PL011 デバイスの 8 つの MMIO 制御レジスタ" +"を指していなければなりません。\n" +" /// これらはデバイスメモリとしてプロセスのアドレス空間に\n" +" /// マッピングされ、他のエイリアスはありません。\n" #: src/bare-metal/aps/uart.md src/bare-metal/aps/better-uart/driver.md #: src/exercises/bare-metal/rtc.md msgid "/// Writes a single byte to the UART.\n" -msgstr "" +msgstr "/// UART に 1 バイトを書き込みます。\n" #: src/bare-metal/aps/uart.md src/bare-metal/aps/better-uart/driver.md #: src/exercises/bare-metal/rtc.md msgid "// Wait until there is room in the TX buffer.\n" -msgstr "" +msgstr "// TX バッファに空きができるまで待機します。\n" #: src/bare-metal/aps/uart.md msgid "" "// Safe because we know that the base address points to the control\n" " // registers of a PL011 device which is appropriately mapped.\n" msgstr "" +"// ベースアドレスが、適切にマッピングされた PL011 デバイスのコントロール レジ" +"スタを\n" +" // 指していることがわかっているため、安全です。\n" #: src/bare-metal/aps/uart.md src/bare-metal/aps/better-uart/driver.md #: src/exercises/bare-metal/rtc.md msgid "// Write to the TX buffer.\n" -msgstr "" +msgstr "// TX バッファに書き込みます。\n" #: src/bare-metal/aps/uart.md src/bare-metal/aps/better-uart/driver.md #: src/exercises/bare-metal/rtc.md msgid "// Wait until the UART is no longer busy.\n" -msgstr "" +msgstr "// UART がビジーでなくなるまで待機します。\n" #: src/bare-metal/aps/uart.md msgid "" @@ -17752,6 +17849,8 @@ msgid "" "// Safe because it just contains a pointer to device memory, which can be\n" "// accessed from any context.\n" msgstr "" +"// デバイスメモリへのポインタのみが含まれ、どのコンテキストからでも\n" +"// アクセスできるため、安全です。\n" #: src/bare-metal/aps/uart/traits.md msgid "" @@ -17801,131 +17900,131 @@ msgstr "幅" #: src/bare-metal/aps/better-uart.md msgid "0x00" -msgstr "" +msgstr "0x00" #: src/bare-metal/aps/better-uart.md msgid "DR" -msgstr "" +msgstr "DR" #: src/bare-metal/aps/better-uart.md msgid "12" -msgstr "" +msgstr "12" #: src/bare-metal/aps/better-uart.md msgid "0x04" -msgstr "" +msgstr "0x04" #: src/bare-metal/aps/better-uart.md msgid "RSR" -msgstr "" +msgstr "RSR" #: src/bare-metal/aps/better-uart.md msgid "0x18" -msgstr "" +msgstr "0x18" #: src/bare-metal/aps/better-uart.md msgid "FR" -msgstr "" +msgstr "FR" #: src/bare-metal/aps/better-uart.md msgid "9" -msgstr "" +msgstr "9" #: src/bare-metal/aps/better-uart.md msgid "0x20" -msgstr "" +msgstr "0x20" #: src/bare-metal/aps/better-uart.md msgid "ILPR" -msgstr "" +msgstr "ILPR" #: src/bare-metal/aps/better-uart.md msgid "0x24" -msgstr "" +msgstr "0x24" #: src/bare-metal/aps/better-uart.md msgid "IBRD" -msgstr "" +msgstr "IBRD" #: src/bare-metal/aps/better-uart.md msgid "16" -msgstr "" +msgstr "16" #: src/bare-metal/aps/better-uart.md msgid "0x28" -msgstr "" +msgstr "0x28" #: src/bare-metal/aps/better-uart.md msgid "FBRD" -msgstr "" +msgstr "FBRD" #: src/bare-metal/aps/better-uart.md msgid "0x2c" -msgstr "" +msgstr "0x2c" #: src/bare-metal/aps/better-uart.md msgid "LCR_H" -msgstr "" +msgstr "LCR_H" #: src/bare-metal/aps/better-uart.md msgid "0x30" -msgstr "" +msgstr "0x30" #: src/bare-metal/aps/better-uart.md msgid "CR" -msgstr "" +msgstr "CR" #: src/bare-metal/aps/better-uart.md msgid "0x34" -msgstr "" +msgstr "0x34" #: src/bare-metal/aps/better-uart.md msgid "IFLS" -msgstr "" +msgstr "IFLS" #: src/bare-metal/aps/better-uart.md msgid "0x38" -msgstr "" +msgstr "0x38" #: src/bare-metal/aps/better-uart.md msgid "IMSC" -msgstr "" +msgstr "IMSC" #: src/bare-metal/aps/better-uart.md msgid "11" -msgstr "" +msgstr "11" #: src/bare-metal/aps/better-uart.md msgid "0x3c" -msgstr "" +msgstr "0x3c" #: src/bare-metal/aps/better-uart.md msgid "RIS" -msgstr "" +msgstr "RIS" #: src/bare-metal/aps/better-uart.md msgid "0x40" -msgstr "" +msgstr "0x40" #: src/bare-metal/aps/better-uart.md msgid "MIS" -msgstr "" +msgstr "MIS" #: src/bare-metal/aps/better-uart.md msgid "0x44" -msgstr "" +msgstr "0x44" #: src/bare-metal/aps/better-uart.md msgid "ICR" -msgstr "" +msgstr "ICR" #: src/bare-metal/aps/better-uart.md msgid "0x48" -msgstr "" +msgstr "0x48" #: src/bare-metal/aps/better-uart.md msgid "DMACR" -msgstr "" +msgstr "DMACR" #: src/bare-metal/aps/better-uart.md msgid "There are also some ID registers which have been omitted for brevity." @@ -17941,43 +18040,43 @@ msgstr "" #: src/bare-metal/aps/better-uart/bitflags.md src/exercises/bare-metal/rtc.md msgid "/// Flags from the UART flag register.\n" -msgstr "" +msgstr "/// UART フラグレジスタからのフラグ。\n" #: src/bare-metal/aps/better-uart/bitflags.md src/exercises/bare-metal/rtc.md msgid "/// Clear to send.\n" -msgstr "" +msgstr "/// 送信可。\n" #: src/bare-metal/aps/better-uart/bitflags.md src/exercises/bare-metal/rtc.md msgid "/// Data set ready.\n" -msgstr "" +msgstr "/// データセット レディ。\n" #: src/bare-metal/aps/better-uart/bitflags.md src/exercises/bare-metal/rtc.md msgid "/// Data carrier detect.\n" -msgstr "" +msgstr "/// データキャリア検出。\n" #: src/bare-metal/aps/better-uart/bitflags.md src/exercises/bare-metal/rtc.md msgid "/// UART busy transmitting data.\n" -msgstr "" +msgstr "/// UART はデータ送信のためビジー状態。\n" #: src/bare-metal/aps/better-uart/bitflags.md src/exercises/bare-metal/rtc.md msgid "/// Receive FIFO is empty.\n" -msgstr "" +msgstr "/// 受信 FIFO が空。\n" #: src/bare-metal/aps/better-uart/bitflags.md src/exercises/bare-metal/rtc.md msgid "/// Transmit FIFO is full.\n" -msgstr "" +msgstr "/// 送信 FIFO が満杯。\n" #: src/bare-metal/aps/better-uart/bitflags.md src/exercises/bare-metal/rtc.md msgid "/// Receive FIFO is full.\n" -msgstr "" +msgstr "/// 受信 FIFO が満杯。\n" #: src/bare-metal/aps/better-uart/bitflags.md src/exercises/bare-metal/rtc.md msgid "/// Transmit FIFO is empty.\n" -msgstr "" +msgstr "/// 送信 FIFO が空。\n" #: src/bare-metal/aps/better-uart/bitflags.md src/exercises/bare-metal/rtc.md msgid "/// Ring indicator.\n" -msgstr "" +msgstr "/// 着呼表示。\n" #: src/bare-metal/aps/better-uart/bitflags.md msgid "" @@ -18017,23 +18116,28 @@ msgstr "新しく定義した`Registers` 構造体を我々のドライバで使 #: src/bare-metal/aps/better-uart/driver.md msgid "/// Driver for a PL011 UART.\n" -msgstr "" +msgstr "/// PL011 UART のドライバ。\n" #: src/bare-metal/aps/better-uart/driver.md src/exercises/bare-metal/rtc.md msgid "" "// Safe because we know that self.registers points to the control\n" " // registers of a PL011 device which is appropriately mapped.\n" msgstr "" +"// self.registers が、適切にマッピングされた PL011 デバイスのコントロール レ" +"ジスタを\n" +" // 指していることがわかっているため、安全です。\n" #: src/bare-metal/aps/better-uart/driver.md src/exercises/bare-metal/rtc.md msgid "" "/// Reads and returns a pending byte, or `None` if nothing has been\n" " /// received.\n" msgstr "" +"/// 保留中のバイトを読み取り、何も受け取っていない場合は`None` を\n" +" /// 返します。\n" #: src/bare-metal/aps/better-uart/driver.md src/exercises/bare-metal/rtc.md msgid "// TODO: Check for error conditions in bits 8-11.\n" -msgstr "" +msgstr "// TODO: ビット 8~11 でエラー状態をチェックします。\n" #: src/bare-metal/aps/better-uart/driver.md msgid "" @@ -18060,7 +18164,7 @@ msgstr "" #: src/exercises/bare-metal/rtc.md #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Base address of the primary PL011 UART.\n" -msgstr "" +msgstr "/// プライマリ PL011 UART のベースアドレス。\n" #: src/bare-metal/aps/better-uart/using.md src/bare-metal/aps/logging/using.md #: src/exercises/bare-metal/rtc.md @@ -18069,26 +18173,28 @@ msgid "" "// Safe because `PL011_BASE_ADDRESS` is the base address of a PL011 device,\n" " // and nothing else accesses that address range.\n" msgstr "" +"// `PL011_BASE_ADDRESS` が PL011 デバイスのベースアドレスであり、\n" +" // 他からこのアドレス範囲にアクセスされることがないため、安全です。\n" #: src/bare-metal/aps/better-uart/using.md src/bare-metal/aps/logging/using.md msgid "\"main({x0:#x}, {x1:#x}, {x2:#x}, {x3:#x})\"" -msgstr "" +msgstr "\"main({x0:#x}, {x1:#x}, {x2:#x}, {x3:#x})\"" #: src/bare-metal/aps/better-uart/using.md msgid "b'\\r'" -msgstr "" +msgstr "b'\\r'" #: src/bare-metal/aps/better-uart/using.md src/async/pitfalls/cancellation.md msgid "b'\\n'" -msgstr "" +msgstr "b'\\n'" #: src/bare-metal/aps/better-uart/using.md msgid "b'q'" -msgstr "" +msgstr "b'q'" #: src/bare-metal/aps/better-uart/using.md msgid "\"Bye!\"" -msgstr "" +msgstr "\"Bye!\"" #: src/bare-metal/aps/better-uart/using.md msgid "" @@ -18118,11 +18224,11 @@ msgstr "" #: src/bare-metal/aps/logging.md src/exercises/bare-metal/rtc.md msgid "\"[{}] {}\"" -msgstr "" +msgstr "\"[{}] {}\"" #: src/bare-metal/aps/logging.md src/exercises/bare-metal/rtc.md msgid "/// Initialises UART logger.\n" -msgstr "" +msgstr "/// UART ロガーを初期化します。\n" #: src/bare-metal/aps/logging.md msgid "" @@ -18139,7 +18245,7 @@ msgstr "使用前にloggerを初期化する必要があります。" #: src/bare-metal/aps/logging/using.md src/exercises/bare-metal/rtc.md #: src/exercises/bare-metal/solutions-afternoon.md msgid "\"{info}\"" -msgstr "" +msgstr "\"{info}\"" #: src/bare-metal/aps/logging/using.md msgid "Note that our panic handler can now log details of panics." @@ -18208,7 +18314,7 @@ msgstr "" #: src/bare-metal/aps/other-projects.md msgid "[oreboot](https://github.com/oreboot/oreboot)" -msgstr "" +msgstr "[oreboot](https://github.com/oreboot/oreboot)" #: src/bare-metal/aps/other-projects.md msgid "\"coreboot without the C\"" @@ -18227,6 +18333,8 @@ msgid "" "[Rust RaspberryPi OS tutorial](https://github.com/rust-embedded/rust-" "raspberrypi-OS-tutorials)" msgstr "" +"[Rust RaspberryPi OS のチュートリアル](https://github.com/rust-embedded/rust-" +"raspberrypi-OS-tutorials)" #: src/bare-metal/aps/other-projects.md msgid "" @@ -18246,7 +18354,7 @@ msgstr "" #: src/bare-metal/aps/other-projects.md msgid "[`cargo-call-stack`](https://crates.io/crates/cargo-call-stack)" -msgstr "" +msgstr "[`cargo-call-stack`](https://crates.io/crates/cargo-call-stack)" #: src/bare-metal/aps/other-projects.md msgid "Static analysis to determine maximum stack usage." @@ -18370,15 +18478,15 @@ msgstr "" #: src/bare-metal/useful-crates/aarch64-paging.md msgid "// Create a new page table with identity mapping.\n" -msgstr "" +msgstr "// 仮想物理同一となる新しいページテーブルを作成します。\n" #: src/bare-metal/useful-crates/aarch64-paging.md msgid "// Map a 2 MiB region of memory as read-only.\n" -msgstr "" +msgstr "// 2 MiB のメモリ領域を読み取り専用としてマッピングします。\n" #: src/bare-metal/useful-crates/aarch64-paging.md msgid "// Set `TTBR0_EL1` to activate the page table.\n" -msgstr "" +msgstr "// `TTBR0_EL1` を設定してページテーブルを有効にします。\n" #: src/bare-metal/useful-crates/aarch64-paging.md msgid "" @@ -18564,18 +18672,20 @@ msgstr "" #: src/exercises/bare-metal/afternoon.md msgid "We will write a driver for the PL031 real-time clock device." -msgstr "" +msgstr "PL031 リアルタイム クロック デバイス用のドライバを作成します。" #: src/exercises/bare-metal/afternoon.md src/exercises/concurrency/afternoon.md msgid "" "After looking at the exercises, you can look at the [solutions](solutions-" "afternoon.md) provided." msgstr "" +"演習の終了後は、提供されている [ソリューション](solutions-afternoon.md) を確" +"認してください。" #: src/exercises/bare-metal/rtc.md #: src/exercises/bare-metal/solutions-afternoon.md msgid "RTC driver" -msgstr "" +msgstr "RTC ドライバ" #: src/exercises/bare-metal/rtc.md msgid "" @@ -18583,12 +18693,17 @@ msgid "" "documentation/ddi0224/c) real-time clock at 0x9010000. For this exercise, " "you should write a driver for it." msgstr "" +"QEMU aarch64 virt マシンの 0x9010000 には、[PL031](https://developer.arm.com/" +"documentation/ddi0224/c) リアルタイム クロックが搭載されています。この演習で" +"は、そのドライバを作成する必要があります。" #: src/exercises/bare-metal/rtc.md msgid "" "Use it to print the current time to the serial console. You can use the " "[`chrono`](https://crates.io/crates/chrono) crate for date/time formatting." msgstr "" +"これを使用して現在の時刻をシリアル コンソールに出力します。日時の形式には " +"[`chrono`](https://crates.io/crates/chrono) クレートを使用できます。" #: src/exercises/bare-metal/rtc.md msgid "" @@ -18596,6 +18711,9 @@ msgid "" "time, e.g. 3 seconds in the future. (Call [`core::hint::spin_loop`](https://" "doc.rust-lang.org/core/hint/fn.spin_loop.html) inside the loop.)" msgstr "" +"一致レジスタと未加工の割り込みステータスを使用して、指定時刻(たとえば 3 秒" +"後)までビジーウェイトします(ループ内で [`core::hint::spin_loop`](https://" +"doc.rust-lang.org/core/hint/fn.spin_loop.html) を呼び出します)。" #: src/exercises/bare-metal/rtc.md msgid "" @@ -18603,32 +18721,41 @@ msgid "" "the RTC match. You can use the driver provided in the [`arm-gic`](https://" "docs.rs/arm-gic/) crate to configure the Arm Generic Interrupt Controller." msgstr "" +"時間がある場合は、RTC の一致によって生成された割り込みを有効にして処理しま" +"す。[`arm-gic`](https://docs.rs/arm-gic/) クレートで提供されているドライバを" +"使用して、Arm 汎用割り込みコントローラを設定して構いません。" #: src/exercises/bare-metal/rtc.md msgid "Use the RTC interrupt, which is wired to the GIC as `IntId::spi(2)`." msgstr "" +"RTC 割り込みを使用します。この割り込みは GIC に `IntId::spi(2)` として接続さ" +"れています。" #: src/exercises/bare-metal/rtc.md msgid "" "Once the interrupt is enabled, you can put the core to sleep via `arm_gic::" "wfi()`, which will cause the core to sleep until it receives an interrupt." msgstr "" +"割り込みを有効にすると、`arm_gic::wfi()` を使用してコアをスリープさせることが" +"できます。これにより、コアは割り込みを受けるまでスリープ状態になります。" #: src/exercises/bare-metal/rtc.md msgid "" "Download the [exercise template](../../comprehensive-rust-exercises.zip) and " "look in the `rtc` directory for the following files." msgstr "" +"[演習テンプレート](../../comprehensive-rust-exercises.zip) をダウンロードし、" +"`rtc` ディレクトリで以下のファイルを探します。" #: src/exercises/bare-metal/rtc.md #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Base addresses of the GICv3.\n" -msgstr "" +msgstr "/// GICv3 のベースアドレス。\n" #: src/exercises/bare-metal/rtc.md #: src/exercises/bare-metal/solutions-afternoon.md msgid "\"main({:#x}, {:#x}, {:#x}, {:#x})\"" -msgstr "" +msgstr "\"main({:#x}, {:#x}, {:#x}, {:#x})\"" #: src/exercises/bare-metal/rtc.md #: src/exercises/bare-metal/solutions-afternoon.md @@ -18637,20 +18764,25 @@ msgid "" " // addresses of a GICv3 distributor and redistributor respectively, and\n" " // nothing else accesses those address ranges.\n" msgstr "" +"// `GICD_BASE_ADDRESS` と `GICR_BASE_ADDRESS` がそれぞれ GICv3 の\n" +" // ディストリビューターと再ディストリビューターのベースアドレスであり、\n" +" // 他にはこれらのアドレス範囲にアクセスするものがないため、安全です。\n" #: src/exercises/bare-metal/rtc.md msgid "// TODO: Create instance of RTC driver and print current time.\n" msgstr "" +"// TODO: RTC ドライバのインスタンスを作成し、現在の時刻を出力します。\n" #: src/exercises/bare-metal/rtc.md msgid "// TODO: Wait for 3 seconds.\n" -msgstr "" +msgstr "// TODO: 3 秒間待機します。\n" #: src/exercises/bare-metal/rtc.md msgid "" "_src/exceptions.rs_ (you should only need to change this for the 3rd part of " "the exercise):" msgstr "" +"_src/exceptions.rs_(この演習の 3 番目のパートでのみ変更する必要があります):" #: src/exercises/bare-metal/rtc.md msgid "" @@ -18668,101 +18800,119 @@ msgid "" "// See the License for the specific language governing permissions and\n" "// limitations under the License.\n" msgstr "" +"// Copyright 2023 Google LLC\n" +"//\n" +"// バージョン 2.0 の Apache ライセンス(以下「本ライセンス」)により使用が許" +"諾されています。\n" +"// このファイルを使用するには、本ライセンスに準拠する必要があります。\n" +" // 本ライセンスのコピーは下記のリンクから入手できます。\n" +"//\n" +"// http://www.apache.org/licenses/LICENSE-2.0\n" +"//\n" +"// 本ライセンスで配布されるソフトウェアは、\n" +"// 適用される法律によって要求される場合または書面で合意した場合を除き、\n" +"// 明示されるか黙示されるかを問わず、いかなる種類の保証も条件もなく、「現状有" +"姿」で提供されます。\n" +"// 本ライセンスの下で適用される具体的な許可および制限については、\n" +"// ライセンス本文をご覧ください。\n" #: src/exercises/bare-metal/rtc.md msgid "\"sync_exception_current\"" -msgstr "" +msgstr "\"sync_exception_current\"" #: src/exercises/bare-metal/rtc.md msgid "\"irq_current\"" -msgstr "" +msgstr "\"irq_current\"" #: src/exercises/bare-metal/rtc.md msgid "\"No pending interrupt\"" -msgstr "" +msgstr "\"No pending interrupt\"" #: src/exercises/bare-metal/rtc.md msgid "\"IRQ {intid:?}\"" -msgstr "" +msgstr "\"IRQ {intid:?}\"" #: src/exercises/bare-metal/rtc.md msgid "\"fiq_current\"" -msgstr "" +msgstr "\"fiq_current\"" #: src/exercises/bare-metal/rtc.md msgid "\"serr_current\"" -msgstr "" +msgstr "\"serr_current\"" #: src/exercises/bare-metal/rtc.md msgid "\"sync_lower\"" -msgstr "" +msgstr "\"sync_lower\"" #: src/exercises/bare-metal/rtc.md msgid "\"irq_lower\"" -msgstr "" +msgstr "\"irq_lower\"" #: src/exercises/bare-metal/rtc.md msgid "\"fiq_lower\"" -msgstr "" +msgstr "\"fiq_lower\"" #: src/exercises/bare-metal/rtc.md msgid "\"serr_lower\"" -msgstr "" +msgstr "\"serr_lower\"" #: src/exercises/bare-metal/rtc.md msgid "_src/logger.rs_ (you shouldn't need to change this):" -msgstr "" +msgstr "_src/logger.rs_(変更する必要はありません):" #: src/exercises/bare-metal/rtc.md msgid "// ANCHOR: main\n" -msgstr "" +msgstr "// ANCHOR: main\n" #: src/exercises/bare-metal/rtc.md msgid "_src/pl011.rs_ (you shouldn't need to change this):" -msgstr "" +msgstr "_src/pl011.rs_(変更する必要はありません):" #: src/exercises/bare-metal/rtc.md msgid "// ANCHOR: Flags\n" -msgstr "" +msgstr "// ANCHOR: Flags\n" #: src/exercises/bare-metal/rtc.md msgid "// ANCHOR_END: Flags\n" -msgstr "" +msgstr "// ANCHOR_END: Flags\n" #: src/exercises/bare-metal/rtc.md msgid "" "/// Flags from the UART Receive Status Register / Error Clear Register.\n" msgstr "" +"/// UART 受信ステータス レジスタ / エラー クリア レジスタからのフラグ\n" #: src/exercises/bare-metal/rtc.md msgid "/// Framing error.\n" -msgstr "" +msgstr "/// フレーム処理エラー。\n" #: src/exercises/bare-metal/rtc.md msgid "/// Parity error.\n" -msgstr "" +msgstr "/// パリティエラー。\n" #: src/exercises/bare-metal/rtc.md msgid "/// Break error.\n" -msgstr "" +msgstr "/// ブレイクエラー。\n" #: src/exercises/bare-metal/rtc.md msgid "/// Overrun error.\n" -msgstr "" +msgstr "/// オーバーラン エラー。\n" #: src/exercises/bare-metal/rtc.md msgid "// ANCHOR: Registers\n" -msgstr "" +msgstr "// ANCHOR: Registers\n" #: src/exercises/bare-metal/rtc.md msgid "// ANCHOR_END: Registers\n" -msgstr "" +msgstr "// ANCHOR_END: Registers\n" #: src/exercises/bare-metal/rtc.md msgid "" "// ANCHOR: Uart\n" "/// Driver for a PL011 UART.\n" msgstr "" +"// ANCHOR: Uart\n" +"/// PL011 UART のドライバ。\n" #: src/exercises/bare-metal/rtc.md msgid "" @@ -18777,50 +18927,59 @@ msgid "" "process\n" " /// as device memory and not have any other aliases.\n" msgstr "" +"/// 指定されたベースアドレスに存在する\n" +" /// PL011 デバイス用の UART ドライバの新しいインスタンスを作成します。\n" +" ///\n" +" /// # 安全性\n" +" ///\n" +" /// 指定されたベースアドレスは PL011 デバイスの MMIO 制御レジスタを指して" +"いる必要があります。\n" +" /// これらはデバイスメモリとしてプロセスのアドレス空間に\n" +" /// マッピングされ、他のエイリアスはありません。\n" #: src/exercises/bare-metal/rtc.md msgid "// ANCHOR_END: Uart\n" -msgstr "" +msgstr "// ANCHOR_END: Uart\n" #: src/exercises/bare-metal/rtc.md msgid "_build.rs_ (you shouldn't need to change this):" -msgstr "" +msgstr "_build.rs_(変更する必要はありません):" #: src/exercises/bare-metal/rtc.md msgid "\"linux\"" -msgstr "" +msgstr "\"linux\"" #: src/exercises/bare-metal/rtc.md msgid "\"CROSS_COMPILE\"" -msgstr "" +msgstr "\"CROSS_COMPILE\"" #: src/exercises/bare-metal/rtc.md msgid "\"aarch64-linux-gnu\"" -msgstr "" +msgstr "\"aarch64-linux-gnu\"" #: src/exercises/bare-metal/rtc.md msgid "\"aarch64-none-elf\"" -msgstr "" +msgstr "\"aarch64-none-elf\"" #: src/exercises/bare-metal/rtc.md msgid "\"entry.S\"" -msgstr "" +msgstr "\"entry.S\"" #: src/exercises/bare-metal/rtc.md msgid "\"exceptions.S\"" -msgstr "" +msgstr "\"exceptions.S\"" #: src/exercises/bare-metal/rtc.md msgid "\"idmap.S\"" -msgstr "" +msgstr "\"idmap.S\"" #: src/exercises/bare-metal/rtc.md msgid "\"empty\"" -msgstr "" +msgstr "\"empty\"" #: src/exercises/bare-metal/rtc.md msgid "_entry.S_ (you shouldn't need to change this):" -msgstr "" +msgstr "_entry.S_(変更する必要はありません):" #: src/exercises/bare-metal/rtc.md msgid "" @@ -18983,10 +19142,171 @@ msgid "" "\tb 2b\n" "```" msgstr "" +"```armasm\n" +"/*\n" +" * Copyright 2023 Google LLC\n" +" *\n" +" * バージョン 2.0 の Apache ライセンス(以下「本ライセンス」)により使用が許" +"諾されています。\n" +" * このファイルを使用するには、本ライセンスに準拠する必要があります。\n" +" * 本ライセンスのコピーは下記のリンクから入手できます。\n" +" *\n" +" * https://www.apache.org/licenses/LICENSE-2.0\n" +" *\n" +" * 本ライセンスで配布されるソフトウェアは、\n" +" * 適用される法律によって要求される場合または書面で合意した場合を除き、\n" +" * 明示されるか黙示されるかを問わず、いかなる種類の保証も条件もなく、「現状有" +"姿」で提供されます。\n" +" * 本ライセンスの下で適用される具体的な許可および制限については、\n" +" * ライセンス本文をご覧ください。\n" +" */\n" +"\n" +".macro adr_l, reg:req, sym:req\n" +"\tadrp \\reg, \\sym\n" +"\tadd \\reg, \\reg, :lo12:\\sym\n" +".endm\n" +"\n" +".macro mov_i, reg:req, imm:req\n" +"\tmovz \\reg, :abs_g3:\\imm\n" +"\tmovk \\reg, :abs_g2_nc:\\imm\n" +"\tmovk \\reg, :abs_g1_nc:\\imm\n" +"\tmovk \\reg, :abs_g0_nc:\\imm\n" +".endm\n" +"\n" +".set .L_MAIR_DEV_nGnRE,\t0x04\n" +".set .L_MAIR_MEM_WBWA,\t0xff\n" +".set .Lmairval, .L_MAIR_DEV_nGnRE | (.L_MAIR_MEM_WBWA << 8)\n" +"\n" +"/* TTBR0_EL1におけるページサイズを4KiB単位に設定。*/\n" +".set .L_TCR_TG0_4KB, 0x0 << 14\n" +"/* TTBR1_EL1におけるページサイズを4KiB単位に設定。*/\n" +".set .L_TCR_TG1_4KB, 0x2 << 30\n" +"/* TTBR1_EL1 の変換テーブル ウォークを無効にして、代わりに変換エラーを生成し" +"ます。*/\n" +".set .L_TCR_EPD1, 0x1 << 23\n" +"/* TTBR0_EL1 の変換テーブル ウォークは内部共有可能です。*/\n" +".set .L_TCR_SH_INNER, 0x3 << 12\n" +"/*\n" +" * TTBR0_EL1 の変換テーブル ウォークは、外部書き戻し、読み取り割り当て、書き" +"込み割り当ての\n" +" * キャッシュが可能です。\n" +" */\n" +".set . L_TCR_RGN_OWB, 0x1 << 10\n" +"/*\n" +" * TTBR0_EL1 の変換テーブル ウォークは、内部書き戻し、読み取り割り当て、書き" +"込み割り当ての\n" +" * キャッシュが可能です。\n" +" */\n" +".set .L_TCR_RGN_IWB, 0x1 << 8\n" +"/* TTBR0_EL1 のサイズ オフセットは 2**39 バイト(512 GiB)です。*/\n" +".set .L_TCR_T0SZ_512, 64 - 39\n" +".set .Ltcrval, .L_TCR_TG0_4KB | .L_TCR_TG1_4KB | .L_TCR_EPD1 | ." +"L_TCR_RGN_OWB\n" +".set .Ltcrval, .Ltcrval | .L_TCR_RGN_IWB | .L_TCR_SH_INNER | ." +"L_TCR_T0SZ_512\n" +"\n" +"/* ステージ 1 の命令アクセスのキャッシュ可能設定は影響を受けません。*/\n" +".set .L_SCTLR_ELx_I, 0x1 << 12\n" +"/* SP が 16 バイト境界にアライメントされていない場合の SP アライメント フォー" +"ルト。*/\n" +".set .L_SCTLR_ELx_SA, 0x1 << 3\n" +"/* ステージ 1 のデータアクセスのキャッシュ可能性設定は影響を受けません。*/\n" +".set .L_SCTLR_ELx_C, 0x1 << 2\n" +"/* EL0 および EL1 ステージ 1 MMU が有効になっています。*/\n" +".set .L_SCTLR_ELx_M, 0x1 << 0\n" +"/* EL1 の例外を受け取っても、特権アクセスは変更されません。*/\n" +".set .L_SCTLR_EL1_SPAN, 0x1 << 23\n" +"/* aarch32 モードの EL0 で SETEND 命令が無効になっています。*/\n" +".set .L_SCTLR_EL1_SED, 0x1 << 8\n" +"/* さまざまな IT 命令が aarch32 モードの EL0 で無効になっています。*/\n" +".set .L_SCTLR_EL1_ITD, 0x1 << 7\n" +".set .L_SCTLR_EL1_RES1, (0x1 << 11) | (0x1 << 20) | (0x1 << 22) | (0x1 << " +"28) | (0x1 << 29)\n" +".set .Lsctlrval, .L_SCTLR_ELx_M | .L_SCTLR_ELx_C | .L_SCTLR_ELx_SA | ." +"L_SCTLR_EL1_ITD | .L_SCTLR_EL1_SED\n" +".set .Lsctlrval, .Lsctlrval | .L_SCTLR_ELx_I | .L_SCTLR_EL1_SPAN | ." +"L_SCTLR_EL1_RES1\n" +"\n" +"/**\n" +" * これはイメージの一般的なエントリ ポイントです。読み込まれたイメージの実行" +"を\n" +" * 準備するために必要なオペレーションを実行します。具体的には、x25 以上のレジ" +"スタを使用して bss セクションをゼロにし、\n" +" * スタックを準備し、浮動小数点数を有効にして、例外ベクターを設定します。" +"Rust エントリ ポイントのために x0-x3\n" +" * には下の値を保持します。これは起動パラメータを含む可能性があるためです。\n" +" */\n" +".section .init.entry, \"ax\"\n" +".global entry\n" +"entry:\n" +"\t/* メモリ管理に関する設定を読み込んで適用し、MMU とキャッシュを有効にする準" +"備をします。*/\n" +"\tadrp x30, idmap\n" +"\tmsr ttbr0_el1, x30\n" +"\n" +"\tmov_i x30, .Lmairval\n" +"\tmsr mair_el1, x30\n" +"\n" +"\tmov_i x30, .Ltcrval\n" +"\t/* サポートしている PA 範囲を TCR_EL1.IPS にコピーします。*/\n" +"\tmrs x29, id_aa64mmfr0_el1\n" +"\tbfi x30, x29, #32, #4\n" +"\n" +"\tmsr tcr_el1, x30\n" +"\n" +"\tmov_i x30, .Lsctlrval\n" +"\n" +"\t/*\n" +"\t * ここより前のすべての処理が完了していることを確認してから、\n" +"\t * 古くなった可能性のあるローカル TLB エントリを使用開始前に無効にしま" +"す。\n" +"\t */\n" +"\tisb\n" +"\ttlbi vmalle1\n" +"\tic iallu\n" +"\tdsb nsh\n" +"\tisb\n" +"\n" +"\t/*\n" +"\t * MMU とキャッシュを有効にするように sctlr_el1 を構成し、これが完了するま" +"では先に進みません。\n" +"\t */\n" +"\tmsr sctlr_el1, x30\n" +"\tisb\n" +"\n" +"\t/* EL1 の浮動小数点アクセスのトラップを無効にします。*/\n" +"\tmrs x30, cpacr_el1\n" +"\torr x30, x30, #(0x3 << 20)\n" +"\tmsr cpacr_el1, x30\n" +"\tisb\n" +"\n" +"\t/* bss セクションをゼロにします。*/\n" +"\tadr_l x29, bss_begin\n" +"\tadr_l x30, bss_end\n" +"0:\tcmp x29, x30\n" +"\tb.hs 1f\n" +"\tstp xzr, xzr, [x29], #16\n" +"\tb 0b\n" +"\n" +"1:\t/* スタックを準備します。*/\n" +"\tadr_l x30, boot_stack_end\n" +"\tmov sp, x30\n" +"\n" +"\t/* 例外ベクターを設定します。*/\n" +"\tadr x30, vector_table_el1\n" +"\tmsr vbar_el1, x30\n" +"\n" +"\t/* Rust コードを呼び出します。*/\n" +"\tbl main\n" +"\n" +"\t/* 割り込みを待機して永久にループします。*/\n" +"2:\twfi\n" +"\tb 2b\n" +"```" #: src/exercises/bare-metal/rtc.md msgid "_exceptions.S_ (you shouldn't need to change this):" -msgstr "" +msgstr "_exceptions.S_(変更する必要はありません):" #: src/exercises/bare-metal/rtc.md msgid "" @@ -19181,10 +19501,194 @@ msgid "" "\tcurrent_exception_spx serr_lower\n" "```" msgstr "" - -#: src/exercises/bare-metal/rtc.md -msgid "_idmap.S_ (you shouldn't need to change this):" -msgstr "" +"```armasm\n" +"/*\n" +" * Copyright 2023 Google LLC\n" +" *\n" +" * バージョン 2.0 の Apache ライセンス(以下「本ライセンス」)により使用が許" +"諾されています。\n" +" * このファイルを使用するには、本ライセンスに準拠する必要があります。\n" +" * 本ライセンスのコピーは下記のリンクから入手できます。\n" +" *\n" +" * https://www.apache.org/licenses/LICENSE-2.0\n" +" *\n" +" * 本ライセンスで配布されるソフトウェアは、\n" +" * 適用される法律によって要求される場合または書面で合意した場合を除き、\n" +" * 明示されるか黙示されるかを問わず、いかなる種類の保証も条件もなく、「現状有" +"姿」で提供されます。\n" +" * 本ライセンスの下で適用される具体的な許可および制限については、\n" +" * ライセンス本文をご覧ください。\n" +" */\n" +"\n" +"/**\n" +" * 揮発性レジスタをスタックに保存します。この部分は現在 14 個の\n" +" * 命令で構成されているので、例外ハンドラで\n" +" * 使用できます。その場合、残りは18命令分になります。\n" +" *\n" +" * 戻った際に、x0 と x1 はそれぞれ elr_el2 と spsr_el2 に初期化され、\n" +" * これらは後続の呼び出しの 1 つ目と 2 つ目の引数として使用できます。\n" +" */\n" +".macro save_volatile_to_stack\n" +"\t/* スタック空間を予約し、レジスタ x0~x18、x29、x30 を保存します。*/\n" +"\tstp x0, x1, [sp, #-(8 * 24)]!\n" +"\tstp x2, x3, [sp, #8 * 2]\n" +"\tstp x4, x5, [sp, #8 * 4]\n" +"\tstp x6, x7, [sp, #8 * 6]\n" +"\tstp x8, x9, [sp, #8 * 8]\n" +"\tstp x10, x11, [sp, #8 * 10]\n" +"\tstp x12, x13, [sp, #8 * 12]\n" +"\tstp x14, x15, [sp, #8 * 14]\n" +"\tstp x16, x17, [sp, #8 * 16]\n" +"\tstr x18, [sp, #8 * 18]\n" +"\tstp x29, x30, [sp, #8 * 20]\n" +"\n" +"\t/*\n" +"\t * elr_el1 と spsr_el1 を保存します。これにより、ネストされた例外を受付可能" +"になり、\n" +"\t * また、アンワインドできるようになります。\n" +"\t */\n" +"\tmrs x0, elr_el1\n" +"\tmrs x1, spsr_el1\n" +"\tstp x0, x1, [sp, #8 * 22]\n" +".endm\n" +"\n" +"/**\n" +" * スタックから揮発性レジスタを復元します。この部分は現在14 個の\n" +" * 命令で構成されているので、\n" +" * 例外ハンドラで使用できます。また、その場合18命令分の領域が残ります。" +"save_volatile_to_stack と組み合わせた場合、\n" +" * 4 個の命令が残ります。\n" +" */\n" +".macro restore_volatile_from_stack\n" +"\t/* レジスタ x2~x18、x29、x30 を復元します。*/\n" +"\tldp x2, x3, [sp, #8 * 2]\n" +"\tldp x4, x5, [sp, #8 * 4]\n" +"\tldp x6, x7, [sp, #8 * 6]\n" +"\tldp x8, x9, [sp, #8 * 8]\n" +"\tldp x10, x11, [sp, #8 * 10]\n" +"\tldp x12, x13, [sp, #8 * 12]\n" +"\tldp x14, x15, [sp, #8 * 14]\n" +"\tldp x16, x17, [sp, #8 * 16]\n" +"\tldr x18, [sp, #8 * 18]\n" +"\tldp x29, x30, [sp, #8 * 20]\n" +"\n" +"\t/* x0 と x1 をスクラッチとして使用して、レジスタ elr_el1 および spsr_el1 を" +"復元します。*/\n" +"\tldp x0, x1, [sp, #8 * 22]\n" +"\tmsr elr_el1, x0\n" +"\tmsr spsr_el1, x1\n" +"\n" +"\t/* x0 と x1 を復元し、スタック空間を解放します。*/\n" +"\tldp x0, x1, [sp], #8 * 24\n" +".endm\n" +"\n" +"/**\n" +" * これは、SP0 の使用中に現在の EL で取得される例外の\n" +" * 汎用ハンドラです。SPx の場合と同様に、最初に SPx に切り替えて処理を実行" +"し、\n" +" * 戻る前に再度 SP0 に切り替えます。\n" +" *\n" +" * SPx に切り替えて Rust ハンドラを呼び出すには、16 個の命令が必要です。復元" +"して戻るには、\n" +" * さらに 16 個の命令が必要であるため、割り当てられた 32 個の命令の中で\n" +" * ハンドラ全体を実装できます。\n" +" */\n" +".macro current_exception_sp0 handler:req\n" +"\tmsr spsel, #1\n" +"\tsave_volatile_to_stack\n" +"\tbl \\handler\n" +"\trestore_volatile_from_stack\n" +"\tmsr spsel, #0\n" +"\teret\n" +".endm\n" +"\n" +"/**\n" +" * これは、\n" +" * SPx の使用中に現在の EL で受け付けた例外の汎用ハンドラです。揮発性レジスタ" +"を保存し、Rust ハンドラを呼び出し、揮発性レジスタを\n" +" * してから戻ります。\n" +" *\n" +" * 不揮発性レジスタを考慮しなければ、EL0 から取得した例外に対しても\n" +" * 機能します。\n" +" *\n" +" * 状態の保存と Rust ハンドラへのジャンプには 15 個の命令が必要で、\n" +" * 復元して戻るのにも 15 個の命令が必要であるため、\n" +" * ハンドラ全体を 32 個の制限内である 30 個の命令に収めることができます。\n" +" */\n" +".macro current_exception_spx handler:req\n" +"\tsave_volatile_to_stack\n" +"\tbl \\handler\n" +"\trestore_volatile_from_stack\n" +"\teret\n" +".endm\n" +"\n" +".section .text.vector_table_el1, \"ax\"\n" +".global vector_table_el1\n" +".balign 0x800\n" +"vector_table_el1:\n" +"sync_cur_sp0:\n" +"\tcurrent_exception_sp0 sync_exception_current\n" +"\n" +".balign 0x80\n" +"irq_cur_sp0:\n" +"\tcurrent_exception_sp0 irq_current\n" +"\n" +".balign 0x80\n" +"fiq_cur_sp0:\n" +"\tcurrent_exception_sp0 fiq_current\n" +"\n" +".balign 0x80\n" +"serr_cur_sp0:\n" +"\tcurrent_exception_sp0 serr_current\n" +"\n" +".balign 0x80\n" +"sync_cur_spx:\n" +"\tcurrent_exception_spx sync_exception_current\n" +"\n" +".balign 0x80\n" +"irq_cur_spx:\n" +"\tcurrent_exception_spx irq_current\n" +"\n" +".balign 0x80\n" +"fiq_cur_spx:\n" +"\tcurrent_exception_spx fiq_current\n" +"\n" +".balign 0x80\n" +"serr_cur_spx:\n" +"\tcurrent_exception_spx serr_current\n" +"\n" +".balign 0x80\n" +"sync_lower_64:\n" +"\tcurrent_exception_spx sync_lower\n" +"\n" +".balign 0x80\n" +"irq_lower_64:\n" +"\tcurrent_exception_spx irq_lower\n" +"\n" +".balign 0x80\n" +"fiq_lower_64:\n" +"\tcurrent_exception_spx fiq_lower\n" +"\n" +".balign 0x80\n" +"serr_lower_64:\n" +"\tcurrent_exception_spx serr_lower\n" +"\n" +".balign 0x80\n" +"sync_lower_32:\n" +"\tcurrent_exception_spx sync_lower\n" +"\n" +".balign 0x80\n" +"irq_lower_32:\n" +"\tcurrent_exception_spx irq_lower\n" +"\n" +".balign 0x80\n" +"fiq_lower_32:\n" +"\tcurrent_exception_spx fiq_lower\n" +"\n" +".balign 0x80\n" +"serr_lower_32:\n" +"\tcurrent_exception_spx serr_lower\n" +"```" #: src/exercises/bare-metal/rtc.md msgid "" @@ -19234,10 +19738,57 @@ msgid "" "\t.fill\t\t255, 8, 0x0\t\t\t// 255 GiB of remaining VA space\n" "```" msgstr "" +"```armasm\n" +"/*\n" +" * Copyright 2023 Google LLC\n" +" *\n" +" * バージョン 2.0 の Apache ライセンス(以下「本ライセンス」)により使用が許" +"諾されています。\n" +" * このファイルを使用するには、本ライセンスに準拠する必要があります。\n" +" * 本ライセンスのコピーは下記のリンクから入手できます。\n" +" *\n" +" * https://www.apache.org/licenses/LICENSE-2.0\n" +" *\n" +" * 本ライセンスで配布されるソフトウェアは、\n" +" * 適用される法律によって要求される場合または書面で合意した場合を除き、\n" +" * 明示されるか黙示されるかを問わず、いかなる種類の保証も条件もなく、「現状有" +"姿」で提供されます。\n" +" * 本ライセンスの下で適用される具体的な許可および制限については、\n" +" * ライセンス本文をご覧ください。\n" +" */\n" +"\n" +".set .L_TT_TYPE_BLOCK, 0x1\n" +".set .L_TT_TYPE_PAGE, 0x3\n" +".set .L_TT_TYPE_TABLE, 0x3\n" +"\n" +"/* アクセスフラグ。*/\n" +".set .L_TT_AF, 0x1 << 10\n" +"/* グローバルではありません。*/\n" +".set .L_TT_NG, 0x1 << 11\n" +".set .L_TT_XN, 0x3 << 53\n" +"\n" +".set .L_TT_MT_DEV, 0x0 << 2\t\t\t// MAIR #0 (DEV_nGnRE)\n" +".set .L_TT_MT_MEM, (0x1 << 2) | (0x3 << 8)\t// MAIR #1 (MEM_WBWA)、内部共有可" +"能\n" +"\n" +".set .L_BLOCK_DEV, .L_TT_TYPE_BLOCK | .L_TT_MT_DEV | .L_TT_AF | .L_TT_XN\n" +".set .L_BLOCK_MEM, .L_TT_TYPE_BLOCK | .L_TT_MT_MEM | .L_TT_AF | .L_TT_NG\n" +"\n" +".section \".rodata.idmap\", \"a\", %progbits\n" +".global idmap\n" +".align 12\n" +"idmap:\n" +"\t/* レベル 1 */\n" +"\t.quad\t\t.L_BLOCK_DEV | 0x0\t\t // 1 GiB のデバイス マッピング\n" +"\t.quad\t\t.L_BLOCK_MEM | 0x40000000\t// 1 GiB の DRAM\n" +"\t.fill\t\t254, 8, 0x0\t\t\t// 254 GiB のマッピングされていない VA 空間\n" +"\t.quad\t\t.L_BLOCK_DEV | 0x4000000000 // 1 GiB のデバイス マッピング\n" +"\t.fill\t\t255, 8, 0x0\t\t\t// 255 GiB の残りの VA 空間\n" +"```" #: src/exercises/bare-metal/rtc.md msgid "_image.ld_ (you shouldn't need to change this):" -msgstr "" +msgstr "_image.ld_(変更する必要はありません):" #: src/exercises/bare-metal/rtc.md msgid "" @@ -19349,34 +19900,144 @@ msgid "" "}\n" "```" msgstr "" +"```ld\n" +"/*\n" +" * Copyright 2023 Google LLC\n" +" *\n" +" * バージョン 2.0 の Apache ライセンス(以下「本ライセンス」)により使用が許" +"諾されています。\n" +" * このファイルを使用するには、本ライセンスに準拠する必要があります。\n" +" * 本ライセンスのコピーは下記のリンクから入手できます。\n" +" *\n" +" * https://www.apache.org/licenses/LICENSE-2.0\n" +" *\n" +" * 本ライセンスで配布されるソフトウェアは、\n" +" * 適用される法律によって要求される場合または書面で合意した場合を除き、\n" +" * 明示されるか黙示されるかを問わず、いかなる種類の保証も条件もなく、「現状有" +"姿」で提供されます。\n" +" * 本ライセンスの下で適用される具体的な許可および制限については、\n" +" * ライセンス本文をご覧ください。\n" +" */\n" +"\n" +"/*\n" +" * コードの実行は、イメージの先頭にあるこのシンボルから\n" +" * 開始されます。\n" +" */\n" +"ENTRY(entry)\n" +"\n" +"MEMORY\n" +"{\n" +"\timage : ORIGIN = 0x40080000, LENGTH = 2M\n" +"}\n" +"\n" +"SECTIONS\n" +"{\n" +"\t/*\n" +"\t * コードを集約します\n" +"\t */\n" +"\t.init : ALIGN(4096) {\n" +"\t\ttext_begin = .;\n" +"\t\t*(.init.entry)\n" +"\t\t*(.init.*)\n" +"\t} >image\n" +"\t.text : {\n" +"\t\t*(.text.*)\n" +"\t} >image\n" +"\ttext_end = .;\n" +"\n" +"\t/*\n" +"\t * 読み取り専用データを集約します。\n" +"\t */\n" +"\t.rodata : ALIGN(4096) {\n" +"\t\trodata_begin = .;\n" +"\t\t*(.rodata.*)\n" +"\t} >image\n" +"\t.got : {\n" +"\t\t*(.got)\n" +"\t} >image\n" +"\trodata_end = .;\n" +"\n" +"\t/*\n" +"\t * エントリコードによってゼロ初期化される.bssを末尾に含む、書き込み可能デー" +"タを集約します。\n" +"\t */\n" +"\t.data : ALIGN(4096) {\n" +"\t\tdata_begin = .;\n" +"\t\t*(.data.*)\n" +"\t\t/*\n" +"\t\t * このエントリポイントは.dataの大きさが32バイトの倍数になっていることを" +"前提としています。\n" +"\t\t */\n" +"\t\t. = ALIGN(32);\n" +"\t\tdata_end = .;\n" +"\t} >image\n" +"\n" +"\t/* これ以降はすべてバイナリに含まれません。*/\n" +"\tbin_end = .;\n" +"\n" +"\t/* このエントリ ポイント コードは、.bss が 16 バイトでアラインされているこ" +"とを前提としています。*/\n" +"\t.bss : ALIGN(16) {\n" +"\t\tbss_begin = .;\n" +"\t\t*(.bss.*)\n" +"\t\t*(COMMON)\n" +"\t\t. = ALIGN(16);\n" +"\t\tbss_end = .;\n" +"\t} >image\n" +"\n" +"\t.stack (NOLOAD) : ALIGN(4096) {\n" +"\t\tboot_stack_begin = .;\n" +"\t\t. += 40 * 4096;\n" +"\t\t. = ALIGN(4096);\n" +"\t\tboot_stack_end = .;\n" +"\t} >image\n" +"\n" +"\t. = ALIGN(4K);\n" +"\tPROVIDE(dma_region = .);\n" +"\n" +"\t/*\n" +"\t * 使用されていないセクションをイメージから削除します。\n" +"\t */\n" +"\t/DISCARD/ : {\n" +"\t\t/* イメージは自分自身によりロードされるのでこれらのセクションは不要です。" +"*/\n" +"\t\t*(.gnu.hash)\n" +"\t\t*(.hash)\n" +"\t\t*(.interp)\n" +"\t\t*(.eh_frame_hdr)\n" +"\t\t*(.eh_frame)\n" +"\t\t*(.note.gnu.build-id)\n" +"\t}\n" +"}\n" +"```" #: src/exercises/bare-metal/rtc.md msgid "_Makefile_ (you shouldn't need to change this):" -msgstr "" +msgstr "_Makefile_(変更する必要はありません):" #: src/exercises/bare-metal/rtc.md msgid "# Copyright 2023 Google LLC" -msgstr "" +msgstr "# Copyright 2023 Google LLC" #: src/exercises/bare-metal/rtc.md msgid "$(shell uname -s)" -msgstr "" +msgstr "$(shell uname -s)" #: src/exercises/bare-metal/rtc.md msgid "aarch64-linux-gnu" -msgstr "" +msgstr "aarch64-linux-gnu" #: src/exercises/bare-metal/rtc.md msgid "stdio -display none -kernel $< -s" -msgstr "" +msgstr "stdio -display none -kernel $< -s" #: src/exercises/bare-metal/rtc.md msgid "cargo clean" -msgstr "" +msgstr "cargo clean" #: src/exercises/bare-metal/rtc.md msgid "Run the code in QEMU with `make qemu`." -msgstr "" +msgstr "`make qemu`によりQEMU でコードを実行します。" #: src/exercises/bare-metal/solutions-afternoon.md msgid "Bare Metal Rust Afternoon" @@ -19384,89 +20045,91 @@ msgstr "ベアメタルRust PM" #: src/exercises/bare-metal/solutions-afternoon.md msgid "([back to exercise](rtc.md))" -msgstr "" +msgstr "([演習に戻る](rtc.md))" #: src/exercises/bare-metal/solutions-afternoon.md msgid "_main.rs_:" -msgstr "" +msgstr "_main.rs_:" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Base address of the PL031 RTC.\n" -msgstr "" +msgstr "/// PL031 RTC のベースアドレス。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// The IRQ used by the PL031 RTC.\n" -msgstr "" +msgstr "/// PL031 RTC が使用する IRQ。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "" "// Safe because `PL031_BASE_ADDRESS` is the base address of a PL031 device,\n" " // and nothing else accesses that address range.\n" msgstr "" +"// `PL031_BASE_ADDRESS` が PL031 デバイスのベースアドレスであり、\n" +" // それ以外はこのアドレス範囲にアクセスしないため、安全です。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "\"RTC: {time}\"" -msgstr "" +msgstr "\"RTC: {time}\"" #: src/exercises/bare-metal/solutions-afternoon.md msgid "// Wait for 3 seconds, without interrupts.\n" -msgstr "" +msgstr "// 割り込みなしで 3 秒間待機します。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "\"Waiting for {}\"" -msgstr "" +msgstr "\"Waiting for {}\"" #: src/exercises/bare-metal/solutions-afternoon.md msgid "\"matched={}, interrupt_pending={}\"" -msgstr "" +msgstr "\"matched={}, interrupt_pending={}\"" #: src/exercises/bare-metal/solutions-afternoon.md msgid "\"Finished waiting\"" -msgstr "" +msgstr "\"Finished waiting\"" #: src/exercises/bare-metal/solutions-afternoon.md msgid "// Wait another 3 seconds for an interrupt.\n" -msgstr "" +msgstr "// 割り込みまでさらに 3 秒待ちます。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "_pl031.rs_:" -msgstr "" +msgstr "_pl031.rs_:" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Data register\n" -msgstr "" +msgstr "/// データレジスタ\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Match register\n" -msgstr "" +msgstr "/// 一致レジスタ\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Load register\n" -msgstr "" +msgstr "/// 読み込みレジスタ\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Control register\n" -msgstr "" +msgstr "/// 制御レジスタ\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Interrupt Mask Set or Clear register\n" -msgstr "" +msgstr "/// 割り込みマスクセットまたはクリアレジスタ\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Raw Interrupt Status\n" -msgstr "" +msgstr "/// 未加工の割り込みステータス\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Masked Interrupt Status\n" -msgstr "" +msgstr "/// マスクされた割り込みステータス\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Interrupt Clear Register\n" -msgstr "" +msgstr "/// 割り込みクリアレジスタ\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Driver for a PL031 real-time clock.\n" -msgstr "" +msgstr "/// PL031 リアルタイム クロック用のドライバ。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "" @@ -19481,22 +20144,36 @@ msgid "" "process\n" " /// as device memory and not have any other aliases.\n" msgstr "" +"/// 指定されたベースアドレスに\n" +" /// PL031 デバイス用の RTC ドライバの新しいインスタンスを作成します。\n" +" ///\n" +" /// # 安全性\n" +" ///\n" +" /// 指定されたベースアドレスは PL031 デバイスの MMIO 制御レジスタを指して" +"いる必要があります。\n" +" /// これらはデバイスメモリとしてプロセスのアドレス空間に\n" +" /// マッピングされ、他のエイリアスはありません。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Reads the current RTC value.\n" -msgstr "" +msgstr "/// 現在の RTC 値を読み取ります。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "" "// Safe because we know that self.registers points to the control\n" " // registers of a PL031 device which is appropriately mapped.\n" msgstr "" +"// self.registers が、適切にマッピングされた PL031 デバイスのコントロール レ" +"ジスタを\n" +" // 指していることがわかっているため、安全です。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "" "/// Writes a match value. When the RTC value matches this then an interrupt\n" " /// will be generated (if it is enabled).\n" msgstr "" +"/// 一致値を書き込みます。RTC 値がこれに一致すると、割り込みが生成されます\n" +" /// (割り込みが有効になっている場合)。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "" @@ -19504,6 +20181,8 @@ msgid "" "not\n" " /// the interrupt is enabled.\n" msgstr "" +"/// 割り込みが有効になっているかどうかに関係なく、一致レジスタが RTC 値と\n" +" /// 一致するかどうかを返します。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "" @@ -19512,6 +20191,11 @@ msgid "" " /// This should be true if and only if `matched` returns true and the\n" " /// interrupt is masked.\n" msgstr "" +"/// 現在保留中の割り込みがあるかどうかを返します。\n" +" ///\n" +" /// これは `matched` が true を返し、割り込みがマスクされている場合にの" +"み\n" +" /// true になります。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "" @@ -19521,10 +20205,14 @@ msgid "" "the\n" " /// interrupt is disabled.\n" msgstr "" +"/// 割り込みマスクを設定またはクリアします。\n" +" ///\n" +" /// マスクが true の場合、割り込みは有効になります。false の場合、\n" +" /// 割り込みは無効になります。\n" #: src/exercises/bare-metal/solutions-afternoon.md msgid "/// Clears a pending interrupt, if any.\n" -msgstr "" +msgstr "/// 保留中の割り込みがあればクリアします。\n" #: src/concurrency.md msgid "Welcome to Concurrency in Rust"