Điều này liên quan đến this question.Quy ước mã hóa để sử dụng dấu phẩy động trong trình điều khiển thiết bị Linux là gì?
Tôi không phải là chuyên gia về trình điều khiển thiết bị Linux hoặc mô-đun hạt nhân, nhưng tôi đã đọc "Trình điều khiển thiết bị Linux" [O'Reilly] bởi Rubini & Corbet và một số nguồn trực tuyến, nhưng tôi chưa đã có thể tìm thấy bất kỳ điều gì về vấn đề cụ thể này.
Khi nào là hạt nhân hoặc mô-đun trình điều khiển được phép sử dụng thanh ghi dấu phẩy động?
Nếu có, ai chịu trách nhiệm lưu và khôi phục nội dung của họ?
(Giả sử kiến trúc x86-64)
Nếu tôi hiểu chính xác, bất cứ khi nào KM đang chạy, nó đang sử dụng ngữ cảnh phần cứng (hoặc chuỗi phần cứng hoặc bộ đăng ký - bất cứ thứ gì bạn muốn gọi). từ một số chuỗi ứng dụng. Nếu bạn viết KM của bạn bằng c, trình biên dịch sẽ bảo đảm chính xác rằng các thanh ghi đa năng được lưu và khôi phục đúng cách (giống như trong một ứng dụng), nhưng điều đó không tự động xảy ra với các thanh ghi dấu phẩy động. Đối với vấn đề đó, rất nhiều KM thậm chí không thể giả định rằng bộ vi xử lý có bất kỳ khả năng dấu phẩy động nào.
Tôi có đúng khi đoán rằng KM muốn sử dụng dấu phẩy động phải cẩn thận lưu và khôi phục trạng thái dấu phẩy động không? Có chức năng hạt nhân chuẩn để thực hiện việc này không?
Quy ước mã hóa có được viết ra ở bất kỳ đâu không?
Chúng có khác nhau đối với các trình điều khiển SMP-non SMP không?
Chúng có khác nhau đối với các hạt nhân không được ưu tiên cũ hơn và các hạt nhân trước mới hơn không?